Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
window_main.h
Go to the documentation of this file.
1/***************************************************************************
2 * Copyright (C) 2008 by Max-Wilhelm Bruker *
3 * brukie@gmx.net *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
25#ifndef WINDOW_H
26#define WINDOW_H
27
31
32#include <QList>
33#include <QMainWindow>
34#include <QMessageBox>
35#include <QSystemTrayIcon>
36#include <QtNetwork>
38#include <libcockatrice/protocol/pb/response.pb.h>
39
40inline Q_LOGGING_CATEGORY(WindowMainLog, "window_main");
41inline Q_LOGGING_CATEGORY(WindowMainStartupLog, "window_main.startup");
42inline Q_LOGGING_CATEGORY(WindowMainStartupVersionLog, "window_main.startup.version");
43inline Q_LOGGING_CATEGORY(WindowMainStartupShortcutsLog, "window_main.startup.shortcuts");
44inline Q_LOGGING_CATEGORY(WindowMainStartupAutoconnectLog, "window_main.startup.autoconnect");
45
46class Release;
47class DlgConnect;
48class DlgViewLog;
49class GameReplay;
51class LocalClient;
52class LocalServer;
53class QLabel;
55class QThread;
56class RemoteClient;
57class ServerInfo_User;
58class TabSupervisor;
59class WndSets;
60class DlgTipOfTheDay;
62class IntentUrlParser;
63
64class MainWindow : public QMainWindow
65{
66 Q_OBJECT
67signals:
69 void cardDatabaseUpdateFinished(bool success);
70
71public slots:
76 void actConnect();
77 void actExit();
78private slots:
79 void updateTabMenu(const QList<QMenu *> &newMenuList);
80 void statusChanged(ClientStatus _status);
81 void localGameEnded();
82 void pixmapCacheSizeChanged(int newSizeInMBs);
83 void actDisconnect();
84 void actSinglePlayer();
85 void actWatchReplay();
86 void actFullScreen(bool checked);
87 void actSettings();
88 void actAbout();
89 void actTips();
90 void actUpdate();
91 void actViewLog();
93 void actShow();
94 void showWindowIfHidden();
95 void handleCockatriceLink(const QString &url);
96
97 void cardUpdateError(QProcess::ProcessError err);
98 void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus);
99 void refreshShortcuts();
101 void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames);
103
104 void checkClientUpdatesFinished(bool needToUpdate, bool isCompatible, Release *release);
106
107 void actOpenCustomFolder();
109 void actAddCustomSet();
111
112 void actManageSets();
113 void actEditTokens();
114
115 void startupConfigCheck();
116 void alertForcedOracleRun(const QString &version, bool isUpdate);
117
119 void onStartupDestinationConnected(int destination, const ContextConnectToServer &serverContext);
120 void startupDestinationFailed(const QString &reason);
121 [[nodiscard]] bool startupDestinationConnectsToServer() const;
122
123private:
124 static const QString appName;
125 static const QStringList fileNameFilters;
126 void retranslateUi();
127 void createActions();
128 void createMenus();
129
130 void createTrayIcon();
131 int getNextCustomSetPrefix(QDir dataDir);
132
133 void runFirstRunWizard();
134
136 {
137 return "oracle";
138 }
139 void createCardUpdateProcess(bool background = false);
141
142 void startLocalGame(const LocalGameOptions &options);
143
144 QList<QMenu *> tabMenus;
146 QAction *aAbout, *aSettings, *aShow, *aExit;
152
166
167public:
168 explicit MainWindow(QWidget *parent = nullptr);
169 void setConnectTo(QString url)
170 {
171 connectTo = QUrl(QString("cockatrice://%1").arg(url));
172 }
173 ~MainWindow() override;
174
176 {
177 return connectionController->client();
178 }
179
181 {
182 return tabSupervisor;
183 }
184
185protected:
186 void closeEvent(QCloseEvent *event) override;
187 void changeEvent(QEvent *event) override;
188};
189
190#endif
ClientStatus
Definition abstract_client.h:42
Definition remote_connection_controller.h:23
Definition dlg_connect.h:28
Definition dlg_tip_of_the_day.h:25
Definition dlg_view_log.h:17
Definition handle_public_servers.h:21
Definition url_parser.h:9
Detects main-thread event loop stalls ("UI freezes") from the inside.
Definition lag_monitor.h:37
Status bar presentation of server round-trip health.
Definition latency_status_widget.h:27
Definition local_client.h:19
Definition local_server.h:16
QAction * aFullScreen
Definition window_main.h:147
void actViewLog()
Definition window_main.cpp:297
void closeEvent(QCloseEvent *event) override
Definition window_main.cpp:837
QAction * aEditTokens
Definition window_main.h:148
QAction * aRegister
Definition window_main.h:147
QUrl connectTo
Definition window_main.h:165
void setConnectTo(QString url)
Definition window_main.h:169
QAction * aStatusBar
Definition window_main.h:150
bool bHasActivated
Definition window_main.h:160
QMenu * cockatriceMenu
Definition window_main.h:145
QList< QMenu * > tabMenus
Definition window_main.h:144
void showWindowIfHidden()
Definition window_main.cpp:890
LatencyStatusWidget * latencyStatus
status bar widget with live round-trip stats and history graph
Definition window_main.h:159
QMenu * trayIconMenu
Definition window_main.h:145
void pixmapCacheSizeChanged(int newSizeInMBs)
Definition window_main.cpp:883
QAction * aOpenCustomsetsFolder
Definition window_main.h:148
~MainWindow() override
Definition window_main.cpp:787
void actAbout()
Definition window_main.cpp:256
LagMonitor lagMonitor
watches the main thread for event loop stalls
Definition window_main.h:158
void retranslateUi()
Definition window_main.cpp:314
ConnectionController * connectionController
Definition window_main.h:156
QAction * aReloadCardDatabase
Definition window_main.h:149
void actOpenCustomFolder()
Definition window_main.cpp:1170
void actOpenSettingsFolder()
Definition window_main.cpp:308
QAction * aWatchReplay
Definition window_main.h:147
void cardUpdateError(QProcess::ProcessError err)
Definition window_main.cpp:1077
void startupDestinationFailed(const QString &reason)
Definition window_main.cpp:757
void actCheckCardUpdates()
Definition window_main.cpp:983
void actSettings()
Definition window_main.cpp:245
QMenu * helpMenu
Definition window_main.h:145
void changeEvent(QEvent *event) override
Definition window_main.cpp:858
void actUpdate()
Definition window_main.cpp:291
void actConnect()
Definition window_main.cpp:152
void actCheckServerUpdates()
Definition window_main.cpp:1120
QAction * aShow
Definition window_main.h:146
QAction * aConnect
Definition window_main.h:147
void actFullScreen(bool checked)
Definition window_main.cpp:236
QAction * aExit
Definition window_main.h:146
QAction * aOpenCustomFolder
Definition window_main.h:148
bool askedForDbUpdater
Definition window_main.h:160
QString getCardUpdaterBinaryName()
Definition window_main.h:135
QAction * aSettings
Definition window_main.h:146
void startLocalGame(const LocalGameOptions &options)
Definition window_main.cpp:172
QAction * aUpdate
Definition window_main.h:150
void updateTabMenu(const QList< QMenu * > &newMenuList)
Definition window_main.cpp:112
void createActions()
Definition window_main.cpp:361
static const QStringList fileNameFilters
Definition window_main.h:125
DlgViewLog * logviewDialog
Definition window_main.h:162
GameReplay * replay
Definition window_main.h:163
DlgTipOfTheDay * tip
Definition window_main.h:164
void createCardUpdateProcess(bool background=false)
Definition window_main.cpp:993
QAction * aSinglePlayer
Definition window_main.h:147
void actSinglePlayer()
Definition window_main.cpp:162
void localGameEnded()
Definition window_main.cpp:225
void alertForcedOracleRun(const QString &version, bool isUpdate)
Definition window_main.cpp:768
LocalServer * localServer
Definition window_main.h:157
void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames)
Definition window_main.cpp:929
QAction * aDisconnect
Definition window_main.h:147
QAction * aCheckCardUpdates
Definition window_main.h:150
QAction * aManageSets
Definition window_main.h:148
void cardDatabaseLoadingFailed()
Definition window_main.cpp:902
QProcess * cardUpdateProcess
Definition window_main.h:161
IntentUrlParser * urlParser
Definition window_main.h:154
MainWindow(QWidget *parent=nullptr)
Definition window_main.cpp:500
void actCheckCardUpdatesBackground()
Definition window_main.cpp:988
void actShow()
Definition window_main.cpp:823
void createMenus()
Definition window_main.cpp:456
int getNextCustomSetPrefix(QDir dataDir)
Definition window_main.cpp:1235
RemoteClient * getRemoteClient() const
Definition window_main.h:175
QAction * aViewLog
Definition window_main.h:151
void refreshShortcuts()
Definition window_main.cpp:1152
void cardDatabaseAllNewSetsEnabled()
Definition window_main.cpp:972
void createTrayIcon()
Definition window_main.cpp:806
void exitCardDatabaseUpdate()
Definition window_main.cpp:1065
void runFirstRunWizard()
Definition window_main.cpp:677
void checkClientUpdatesFinished(bool needToUpdate, bool isCompatible, Release *release)
Definition window_main.cpp:1134
QMenu * dbMenu
Definition window_main.h:145
QAction * aTips
Definition window_main.h:150
void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus)
Definition window_main.cpp:1110
QAction * aCheckCardUpdatesBackground
Definition window_main.h:150
void startupConfigCheck()
Definition window_main.cpp:570
void applyStartupDestination()
Definition window_main.cpp:697
QMenu * tabsMenu
Definition window_main.h:145
void handleCockatriceLink(const QString &url)
Definition window_main.cpp:897
QAction * aAddCustomSet
Definition window_main.h:148
QAction * aOpenSettingsFolder
Definition window_main.h:151
bool startupDestinationConnectsToServer() const
Definition window_main.cpp:762
void actOpenCustomsetsFolder()
Definition window_main.cpp:1176
void actDisconnect()
Definition window_main.cpp:157
QAction * aForgotPassword
Definition window_main.h:147
void actEditTokens()
Definition window_main.cpp:1265
void actReloadCardDatabase()
Definition window_main.cpp:1251
void statusChanged(ClientStatus _status)
Definition window_main.cpp:123
void actTips()
Definition window_main.cpp:279
static const QString appName
Definition window_main.h:124
void cardDatabaseUpdateFinished(bool success)
Emitted after the background card-database update subprocess exits.
void actCheckClientUpdates()
Definition window_main.cpp:1127
TabSupervisor * tabSupervisor
Definition window_main.h:153
WndSets * wndSets
Definition window_main.h:155
void actAddCustomSet()
Definition window_main.cpp:1182
void actWatchReplay()
Definition window_main.cpp:200
QAction * aAbout
Definition window_main.h:146
void onStartupDestinationConnected(int destination, const ContextConnectToServer &serverContext)
Definition window_main.cpp:732
TabSupervisor * getTabSupervisor() const
Definition window_main.h:180
void actManageSets()
Definition window_main.cpp:1259
QAction * aFirstRunWizard
Definition window_main.h:150
void actCheckCommanderBracketDefinitionUpdates()
Definition window_main.cpp:1142
void actExit()
Definition window_main.cpp:251
Definition release_channel.h:23
Definition remote_client.h:22
Definition tab_supervisor.h:84
Definition dlg_manage_sets.h:26
Dialog for configuring local game options.
Definition context_connect_to_server.h:7
Definition game_replay.proto:4
Definition dlg_local_game_options.h:16
Definition serverinfo_user.proto:2
Q_LOGGING_CATEGORY(WindowMainLog, "window_main")