Change start local game button to disconnect when connected.

Took 9 minutes
This commit is contained in:
Lukas Brübach 2025-09-27 00:47:57 +02:00
parent 8861a4281b
commit 62d3ddbd9a
3 changed files with 16 additions and 11 deletions

View file

@ -180,11 +180,8 @@ QGroupBox *HomeWidget::createButtons()
connectButton = new HomeStyledButton(tr("Connect/Play"), gradientColors); connectButton = new HomeStyledButton(tr("Connect/Play"), gradientColors);
boxLayout->addWidget(connectButton, 1); boxLayout->addWidget(connectButton, 1);
localGameButton = new HomeStyledButton(tr("Start Local Game"), gradientColors); localGameOrDisconnectButton = new HomeStyledButton(tr("Start Local Game"), gradientColors);
boxLayout->addWidget(localGameButton); boxLayout->addWidget(localGameOrDisconnectButton);
if (auto mainWindow = qobject_cast<MainWindow *>(tabSupervisor->parent())) {
connect(localGameButton, &QPushButton::clicked, mainWindow, &MainWindow::actSinglePlayer);
}
auto visualDeckEditorButton = new HomeStyledButton(tr("Create New Deck"), gradientColors); auto visualDeckEditorButton = new HomeStyledButton(tr("Create New Deck"), gradientColors);
connect(visualDeckEditorButton, &QPushButton::clicked, tabSupervisor, connect(visualDeckEditorButton, &QPushButton::clicked, tabSupervisor,
@ -218,6 +215,7 @@ QGroupBox *HomeWidget::createButtons()
void HomeWidget::updateConnectionStatus(const ClientStatus status) void HomeWidget::updateConnectionStatus(const ClientStatus status)
{ {
disconnect(connectButton, &QPushButton::clicked, nullptr, nullptr); disconnect(connectButton, &QPushButton::clicked, nullptr, nullptr);
disconnect(localGameOrDisconnectButton, &QPushButton::clicked, nullptr, nullptr);
switch (status) { switch (status) {
case StatusDisconnected: case StatusDisconnected:
connectButton->setText(tr("Connect")); connectButton->setText(tr("Connect"));
@ -225,14 +223,17 @@ void HomeWidget::updateConnectionStatus(const ClientStatus status)
connect(connectButton, &QPushButton::clicked, qobject_cast<MainWindow *>(tabSupervisor->parentWidget()), connect(connectButton, &QPushButton::clicked, qobject_cast<MainWindow *>(tabSupervisor->parentWidget()),
&MainWindow::actConnect); &MainWindow::actConnect);
localGameButton->setEnabled(true); localGameOrDisconnectButton->setText(tr("Start Local Game"));
localGameButton->setVisible(true); localGameOrDisconnectButton->setEnabled(true);
if (auto mainWindow = qobject_cast<MainWindow *>(tabSupervisor->parent())) {
connect(localGameOrDisconnectButton, &QPushButton::clicked, mainWindow, &MainWindow::actSinglePlayer);
}
break; break;
case StatusConnecting: case StatusConnecting:
connectButton->setText(tr("Connecting...")); connectButton->setText(tr("Connecting..."));
connectButton->setEnabled(false); connectButton->setEnabled(false);
localGameButton->setEnabled(false); localGameOrDisconnectButton->setEnabled(false);
break; break;
case StatusLoggedIn: case StatusLoggedIn:
connectButton->setText(tr("Play")); connectButton->setText(tr("Play"));
@ -240,7 +241,11 @@ void HomeWidget::updateConnectionStatus(const ClientStatus status)
connect(connectButton, &QPushButton::clicked, tabSupervisor, connect(connectButton, &QPushButton::clicked, tabSupervisor,
&TabSupervisor::switchToFirstAvailableNetworkTab); &TabSupervisor::switchToFirstAvailableNetworkTab);
localGameButton->setVisible(false); localGameOrDisconnectButton->setEnabled(true);
localGameOrDisconnectButton->setText(tr("Disconnect"));
if (auto mainWindow = qobject_cast<MainWindow *>(tabSupervisor->parent())) {
connect(localGameOrDisconnectButton, &QPushButton::clicked, mainWindow, &MainWindow::actDisconnect);
}
break; break;
default: default:
break; break;

View file

@ -38,7 +38,7 @@ private:
QPixmap overlay; QPixmap overlay;
QPair<QColor, QColor> gradientColors; QPair<QColor, QColor> gradientColors;
HomeStyledButton *connectButton; HomeStyledButton *connectButton;
HomeStyledButton *localGameButton; HomeStyledButton *localGameOrDisconnectButton;
}; };
#endif // HOME_WIDGET_H #endif // HOME_WIDGET_H

View file

@ -60,6 +60,7 @@ public slots:
void actCheckServerUpdates(); void actCheckServerUpdates();
void actCheckClientUpdates(); void actCheckClientUpdates();
void actConnect(); void actConnect();
void actDisconnect();
void actSinglePlayer(); void actSinglePlayer();
void actExit(); void actExit();
private slots: private slots:
@ -80,7 +81,6 @@ private slots:
void localGameEnded(); void localGameEnded();
void pixmapCacheSizeChanged(int newSizeInMBs); void pixmapCacheSizeChanged(int newSizeInMBs);
void notifyUserAboutUpdate(); void notifyUserAboutUpdate();
void actDisconnect();
void actWatchReplay(); void actWatchReplay();
void actFullScreen(bool checked); void actFullScreen(bool checked);
void actRegister(); void actRegister();