Cockatrice 2026-06-01-Development-3.1.0-beta.3
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
remote_connection_controller.h
Go to the documentation of this file.
1#ifndef COCKATRICE_REMOTE_CONNECTION_CONTROLLER_H
2#define COCKATRICE_REMOTE_CONNECTION_CONTROLLER_H
3
4#include "abstract_client.h"
5
6#include <QMessageBox>
7#include <QObject>
8#include <QString>
9#include <QThread>
10#include <libcockatrice/protocol/pb/event_connection_closed.pb.h>
11#include <libcockatrice/protocol/pb/event_server_shutdown.pb.h>
12
13class RemoteClient;
14class ServerInfo_User;
15class DlgConnect;
16
22class ConnectionController : public QObject
23{
24 Q_OBJECT
25
26public:
27 explicit ConnectionController(QWidget *dialogParent, QObject *parent = nullptr);
28 ~ConnectionController() override;
29
31 {
32 return remoteClient;
33 }
34
35 void registerToServer();
37 void connectToServer();
38 void
39 connectToServerDirect(const QString &host, unsigned int port, const QString &playerName, const QString &password);
41
43 {
45 }
46
47signals:
48 void windowTitleChanged(const QString &title);
49
50 void tabSupervisorStartRequested(const ServerInfo_User &info);
52
53 // Passes the raw ClientStatus through so MainWindow can drive its own
54 // action enable/disable logic
56
57private slots:
58 // Slots wired directly to RemoteClient signals
59 void onStatusChanged(ClientStatus status);
60 void onUserInfoReceived(const ServerInfo_User &info);
61 void onLoginError(int r, QString reasonStr, quint32 endTime, const QList<QString> &missingFeatures);
62 void onRegisterAccepted();
64 void onRegisterError(int r, QString reasonStr, quint32 endTime);
65 void onActivateAccepted();
66 void onActivateError();
67 void onProtocolVersionMismatch(int localVersion, int remoteVersion);
69 void onConnectionClosedEvent(const Event_ConnectionClosed &event);
70 void onServerShutdownEvent(const Event_ServerShutdown &event);
71 void onSocketError(const QString &errorStr);
72 void onServerTimeout();
73
74 // Forgot-password flow
79
80private:
81 void wireClientSignals();
82 void updateWindowTitle();
83
85 static QString extractInvalidUsernameMessage(QString &in);
86
88 QThread *clientThread{nullptr};
89 QWidget *dialogParent{nullptr}; // used as parent for QMessageBox / dialog calls
90
91 // Persistent so it can be updated in-place by onServerShutdownEvent
93
94 // Kept as a member so the forgot-password signal can be wired to it
96};
97
98#endif // COCKATRICE_REMOTE_CONNECTION_CONTROLLER_H
ClientStatus
Definition abstract_client.h:36
void refreshWindowTitle()
Definition remote_connection_controller.h:42
void onNotifyUserAboutUpdate()
Definition remote_connection_controller.cpp:443
void tabSupervisorStartRequested(const ServerInfo_User &info)
void statusChanged(ClientStatus status)
void disconnectFromServer()
Definition remote_connection_controller.cpp:104
ConnectionController(QWidget *dialogParent, QObject *parent=nullptr)
Definition remote_connection_controller.cpp:18
void onServerShutdownEvent(const Event_ServerShutdown &event)
Definition remote_connection_controller.cpp:174
void onForgotPasswordSuccess()
Definition remote_connection_controller.cpp:453
QWidget * dialogParent
Definition remote_connection_controller.h:89
void onRegisterError(int r, QString reasonStr, quint32 endTime)
Definition remote_connection_controller.cpp:317
QMessageBox serverShutdownMessageBox
Definition remote_connection_controller.h:92
void onPromptForgotPasswordReset()
Definition remote_connection_controller.cpp:473
QThread * clientThread
Definition remote_connection_controller.h:88
void onActivateError()
Definition remote_connection_controller.cpp:391
void connectToServer()
Definition remote_connection_controller.cpp:85
void tabSupervisorStopRequested()
void onProtocolVersionMismatch(int localVersion, int remoteVersion)
Definition remote_connection_controller.cpp:410
void onUserInfoReceived(const ServerInfo_User &info)
Definition remote_connection_controller.cpp:200
void onStatusChanged(ClientStatus status)
Definition remote_connection_controller.cpp:186
void onRegisterAcceptedNeedsActivate()
Definition remote_connection_controller.cpp:433
~ConnectionController() override
Definition remote_connection_controller.cpp:30
void onConnectionClosedEvent(const Event_ConnectionClosed &event)
Definition remote_connection_controller.cpp:127
void windowTitleChanged(const QString &title)
void onSocketError(const QString &errorStr)
Definition remote_connection_controller.cpp:398
RemoteClient * remoteClient
Definition remote_connection_controller.h:87
void onRegisterAccepted()
Definition remote_connection_controller.cpp:428
void onActivateAccepted()
Definition remote_connection_controller.cpp:438
RemoteClient * client() const
Definition remote_connection_controller.h:30
void onForgotPasswordError()
Definition remote_connection_controller.cpp:463
void registerToServer()
Definition remote_connection_controller.cpp:109
void onServerTimeout()
Definition remote_connection_controller.cpp:404
void onLoginError(int r, QString reasonStr, quint32 endTime, const QList< QString > &missingFeatures)
Definition remote_connection_controller.cpp:205
void updateWindowTitle()
Definition remote_connection_controller.cpp:493
static QString extractInvalidUsernameMessage(QString &in)
Definition remote_connection_controller.cpp:536
void onPromptForgotPasswordChallenge()
Definition remote_connection_controller.cpp:484
void connectToServerDirect(const QString &host, unsigned int port, const QString &playerName, const QString &password)
Definition remote_connection_controller.cpp:96
DlgConnect * dlgConnect
Definition remote_connection_controller.h:95
void forgotPasswordRequest()
Definition remote_connection_controller.cpp:118
void wireClientSignals()
Definition remote_connection_controller.cpp:36
Definition dlg_connect.h:28
Definition remote_client.h:22