Cockatrice 2026-09-01-Development-3.1.0-beta.10
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
52
53 // Passes the raw ClientStatus through so MainWindow can drive its own
54 // action enable/disable logic
56
57 // Forwarded from AbstractClient::pingStatsUpdated. See that signal for the
58 // meaning of the parameters.
59 void pingStatsUpdated(const LatencyTracker::Stats &stats, const QList<int> &samplesMs);
60
61private slots:
62 // Slots wired directly to RemoteClient signals
63 void onStatusChanged(ClientStatus status);
64 void onUserInfoReceived(const ServerInfo_User &info);
65 void onLoginError(int r, QString reasonStr, quint32 endTime, const QList<QString> &missingFeatures);
66 void onRegisterAccepted();
68 void onRegisterError(int r, QString reasonStr, quint32 endTime);
69 void onActivateAccepted();
70 void onActivateError();
71 void onProtocolVersionMismatch(int localVersion, int remoteVersion);
75 void onSocketError(const QString &errorStr);
76 void onServerTimeout();
77
78 // Forgot-password flow
83
84private:
85 void wireClientSignals();
86 void updateWindowTitle();
87
89 static QString extractInvalidUsernameMessage(QString &in);
90
92 QThread *clientThread{nullptr};
93 QWidget *dialogParent{nullptr}; // used as parent for QMessageBox / dialog calls
94
95 // Persistent so it can be updated in-place by onServerShutdownEvent
97
98 // Kept as a member so the forgot-password signal can be wired to it
100};
101
102#endif // COCKATRICE_REMOTE_CONNECTION_CONTROLLER_H
ClientStatus
Definition abstract_client.h:42
void refreshWindowTitle()
Definition remote_connection_controller.h:42
void onNotifyUserAboutUpdate()
Definition remote_connection_controller.cpp:455
void tabSupervisorStartRequested(const ServerInfo_User &info)
void statusChanged(ClientStatus status)
void disconnectFromServer()
Definition remote_connection_controller.cpp:107
ConnectionController(QWidget *dialogParent, QObject *parent=nullptr)
Definition remote_connection_controller.cpp:19
void onServerShutdownEvent(const Event_ServerShutdown &event)
Definition remote_connection_controller.cpp:177
void onForgotPasswordSuccess()
Definition remote_connection_controller.cpp:465
QWidget * dialogParent
Definition remote_connection_controller.h:93
void onRegisterError(int r, QString reasonStr, quint32 endTime)
Definition remote_connection_controller.cpp:329
QMessageBox serverShutdownMessageBox
Definition remote_connection_controller.h:96
void onPromptForgotPasswordReset()
Definition remote_connection_controller.cpp:485
QThread * clientThread
Definition remote_connection_controller.h:92
void onActivateError()
Definition remote_connection_controller.cpp:403
void connectToServer()
Definition remote_connection_controller.cpp:88
void tabSupervisorStopRequested()
void onProtocolVersionMismatch(int localVersion, int remoteVersion)
Definition remote_connection_controller.cpp:422
void onUserInfoReceived(const ServerInfo_User &info)
Definition remote_connection_controller.cpp:203
void pingStatsUpdated(const LatencyTracker::Stats &stats, const QList< int > &samplesMs)
void onStatusChanged(ClientStatus status)
Definition remote_connection_controller.cpp:189
void onRegisterAcceptedNeedsActivate()
Definition remote_connection_controller.cpp:445
~ConnectionController() override
Definition remote_connection_controller.cpp:31
void onConnectionClosedEvent(const Event_ConnectionClosed &event)
Definition remote_connection_controller.cpp:130
void windowTitleChanged(const QString &title)
void onSocketError(const QString &errorStr)
Definition remote_connection_controller.cpp:410
RemoteClient * remoteClient
Definition remote_connection_controller.h:91
void onRegisterAccepted()
Definition remote_connection_controller.cpp:440
void onActivateAccepted()
Definition remote_connection_controller.cpp:450
RemoteClient * client() const
Definition remote_connection_controller.h:30
void onForgotPasswordError()
Definition remote_connection_controller.cpp:475
void registerToServer()
Definition remote_connection_controller.cpp:112
void onServerTimeout()
Definition remote_connection_controller.cpp:416
void onLoginError(int r, QString reasonStr, quint32 endTime, const QList< QString > &missingFeatures)
Definition remote_connection_controller.cpp:208
void updateWindowTitle()
Definition remote_connection_controller.cpp:505
static QString extractInvalidUsernameMessage(QString &in)
Definition remote_connection_controller.cpp:548
void onPromptForgotPasswordChallenge()
Definition remote_connection_controller.cpp:496
void connectToServerDirect(const QString &host, unsigned int port, const QString &playerName, const QString &password)
Definition remote_connection_controller.cpp:99
DlgConnect * dlgConnect
Definition remote_connection_controller.h:99
void forgotPasswordRequest()
Definition remote_connection_controller.cpp:121
void wireClientSignals()
Definition remote_connection_controller.cpp:37
Definition dlg_connect.h:28
Definition remote_client.h:22
Definition event_connection_closed.proto:3
Definition event_server_shutdown.proto:3
Definition latency_tracker.h:27
Definition serverinfo_user.proto:2