Cockatrice 2026-10-19-Development-3.1.2-beta.2
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#include "latency_tracker.h"
6
7#include <QMessageBox>
8#include <QObject>
9#include <QString>
10#include <QtGlobal>
11#include <qtmetamacros.h>
12
13class RemoteClient;
14class ServerInfo_User;
15class DlgConnect;
18class QThread;
19class QWidget;
20template <typename T> class QList;
21
27class ConnectionController : public QObject
28{
29 Q_OBJECT
30
31public:
32 explicit ConnectionController(QWidget *dialogParent, QObject *parent = nullptr);
33 ~ConnectionController() override;
34
36 {
37 return remoteClient;
38 }
39
40 void registerToServer();
42 void connectToServer();
43 void connectToServerDirect(const QString &host,
44 unsigned int port,
45 const QString &playerName,
46 const QString &password,
47 const QString &storedVerifier = QString(),
48 const QString &saveName = QString(),
49 bool savePassword = false);
51
53 {
55 }
56
57signals:
58 void windowTitleChanged(const QString &title);
59
62
63 // Passes the raw ClientStatus through so MainWindow can drive its own
64 // action enable/disable logic
66
67 // Forwarded from AbstractClient::pingStatsUpdated. See that signal for the
68 // meaning of the parameters.
69 void pingStatsUpdated(const LatencyTracker::Stats &stats, const QList<int> &samplesMs);
70
71private slots:
72 // Slots wired directly to RemoteClient signals
73 void onStatusChanged(ClientStatus status);
74 void onUserInfoReceived(const ServerInfo_User &info);
75 void onLoginError(int r, QString reasonStr, quint32 endTime, const QList<QString> &missingFeatures);
76 void onRegisterAccepted();
78 void onRegisterError(int r, QString reasonStr, quint32 endTime);
79 void onActivateAccepted();
80 void onActivateError();
81 void onProtocolVersionMismatch(int localVersion, int remoteVersion);
85 void onSocketError(const QString &errorStr);
86 void onServerTimeout();
87
88 // Forgot-password flow
93
94 // Persists the derived scrypt verifier after a successful challenge-response login
95 void onPasswordVerifierReady(const QString &verifier);
96
97private:
98 void wireClientSignals();
99 void updateWindowTitle();
100
102 static QString extractInvalidUsernameMessage(QString &in);
103
105 QThread *clientThread{nullptr};
106 QWidget *dialogParent{nullptr}; // used as parent for QMessageBox / dialog calls
107
108 // Persistent so it can be updated in-place by onServerShutdownEvent
110
111 // Kept as a member so the forgot-password signal can be wired to it
113
114 // Captured from the connect dialog when a connection is initiated
117};
118
119#endif // COCKATRICE_REMOTE_CONNECTION_CONTROLLER_H
ClientStatus
Definition abstract_client.h:58
void refreshWindowTitle()
Definition remote_connection_controller.h:52
void onNotifyUserAboutUpdate()
Definition remote_connection_controller.cpp:500
void tabSupervisorStartRequested(const ServerInfo_User &info)
void statusChanged(ClientStatus status)
void disconnectFromServer()
Definition remote_connection_controller.cpp:138
ConnectionController(QWidget *dialogParent, QObject *parent=nullptr)
Definition remote_connection_controller.cpp:31
void onServerShutdownEvent(const Event_ServerShutdown &event)
Definition remote_connection_controller.cpp:208
QString pendingSaveName
Definition remote_connection_controller.h:115
void onForgotPasswordSuccess()
Definition remote_connection_controller.cpp:510
QWidget * dialogParent
Definition remote_connection_controller.h:106
void onRegisterError(int r, QString reasonStr, quint32 endTime)
Definition remote_connection_controller.cpp:371
QMessageBox serverShutdownMessageBox
Definition remote_connection_controller.h:109
void onPromptForgotPasswordReset()
Definition remote_connection_controller.cpp:530
QThread * clientThread
Definition remote_connection_controller.h:105
bool pendingSavePassword
Definition remote_connection_controller.h:116
void onActivateError()
Definition remote_connection_controller.cpp:448
void connectToServer()
Definition remote_connection_controller.cpp:103
void tabSupervisorStopRequested()
void onProtocolVersionMismatch(int localVersion, int remoteVersion)
Definition remote_connection_controller.cpp:467
void onUserInfoReceived(const ServerInfo_User &info)
Definition remote_connection_controller.cpp:234
void pingStatsUpdated(const LatencyTracker::Stats &stats, const QList< int > &samplesMs)
void onStatusChanged(ClientStatus status)
Definition remote_connection_controller.cpp:220
void onRegisterAcceptedNeedsActivate()
Definition remote_connection_controller.cpp:490
void onConnectionClosedEvent(const Event_ConnectionClosed &event)
Definition remote_connection_controller.cpp:161
void windowTitleChanged(const QString &title)
void onSocketError(const QString &errorStr)
Definition remote_connection_controller.cpp:455
RemoteClient * remoteClient
Definition remote_connection_controller.h:104
void onRegisterAccepted()
Definition remote_connection_controller.cpp:485
void onActivateAccepted()
Definition remote_connection_controller.cpp:495
RemoteClient * client() const
Definition remote_connection_controller.h:35
void onForgotPasswordError()
Definition remote_connection_controller.cpp:520
void registerToServer()
Definition remote_connection_controller.cpp:143
void onServerTimeout()
Definition remote_connection_controller.cpp:461
void onLoginError(int r, QString reasonStr, quint32 endTime, const QList< QString > &missingFeatures)
Definition remote_connection_controller.cpp:239
void updateWindowTitle()
Definition remote_connection_controller.cpp:550
static QString extractInvalidUsernameMessage(QString &in)
Definition remote_connection_controller.cpp:593
void onPromptForgotPasswordChallenge()
Definition remote_connection_controller.cpp:541
void onPasswordVerifierReady(const QString &verifier)
Definition remote_connection_controller.cpp:117
void connectToServerDirect(const QString &host, unsigned int port, const QString &playerName, const QString &password, const QString &storedVerifier=QString(), const QString &saveName=QString(), bool savePassword=false)
Definition remote_connection_controller.cpp:124
DlgConnect * dlgConnect
Definition remote_connection_controller.h:112
void forgotPasswordRequest()
Definition remote_connection_controller.cpp:152
void wireClientSignals()
Definition remote_connection_controller.cpp:49
Definition dlg_connect.h:33
Definition remote_connection_controller.h:20
Definition remote_client.h:34
Definition event_connection_closed.proto:3
Definition event_server_shutdown.proto:3
Definition latency_tracker.h:29
Definition serverinfo_user.proto:2