Make Visual Deck Storage tab be managed by TabSupervisor (#5453)

* remove closeRequest override

* remove visualDeckStorage from WindowMain

* manage visual deck storage in TabSupervisor

* open on startup

* refresh vds on db load finish

* open deck editor tab first on startup
This commit is contained in:
RickyRister 2025-01-13 10:42:58 -08:00 committed by GitHub
parent 883f1a5c11
commit a417b049da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 39 additions and 38 deletions

View file

@ -101,8 +101,8 @@ void CloseButton::paintEvent(QPaintEvent * /*event*/)
} }
TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *parent) TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *parent)
: QTabWidget(parent), userInfo(0), client(_client), tabsMenu(tabsMenu), tabServer(0), tabUserLists(0), : QTabWidget(parent), userInfo(0), client(_client), tabsMenu(tabsMenu), tabVisualDeckStorage(nullptr), tabServer(0),
tabDeckStorage(0), tabReplays(0), tabAdmin(0), tabLog(0) tabUserLists(0), tabDeckStorage(0), tabReplays(0), tabAdmin(0), tabLog(0)
{ {
setElideMode(Qt::ElideRight); setElideMode(Qt::ElideRight);
setMovable(true); setMovable(true);
@ -129,6 +129,10 @@ TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *
aTabDeckEditor = new QAction(this); aTabDeckEditor = new QAction(this);
connect(aTabDeckEditor, &QAction::triggered, this, [this] { addDeckEditorTab(nullptr); }); connect(aTabDeckEditor, &QAction::triggered, this, [this] { addDeckEditorTab(nullptr); });
aTabVisualDeckStorage = new QAction(this);
aTabVisualDeckStorage->setCheckable(true);
connect(aTabVisualDeckStorage, &QAction::toggled, this, &TabSupervisor::actTabVisualDeckStorage);
aTabServer = new QAction(this); aTabServer = new QAction(this);
aTabServer->setCheckable(true); aTabServer->setCheckable(true);
connect(aTabServer, &QAction::toggled, this, &TabSupervisor::actTabServer); connect(aTabServer, &QAction::toggled, this, &TabSupervisor::actTabServer);
@ -160,6 +164,11 @@ TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *
resetTabsMenu(); resetTabsMenu();
retranslateUi(); retranslateUi();
// open always-available tabs on startup
addDeckEditorTab(nullptr);
aTabVisualDeckStorage->setChecked(SettingsCache::instance().getVisualDeckStorageShowOnLoad());
} }
TabSupervisor::~TabSupervisor() TabSupervisor::~TabSupervisor()
@ -171,6 +180,7 @@ void TabSupervisor::retranslateUi()
{ {
// tab menu actions // tab menu actions
aTabDeckEditor->setText(tr("Deck Editor")); aTabDeckEditor->setText(tr("Deck Editor"));
aTabVisualDeckStorage->setText(tr("&Visual Deck storage"));
aTabServer->setText(tr("Server")); aTabServer->setText(tr("Server"));
aTabUserLists->setText(tr("Account")); aTabUserLists->setText(tr("Account"));
aTabDeckStorage->setText(tr("Deck storage")); aTabDeckStorage->setText(tr("Deck storage"));
@ -272,6 +282,8 @@ void TabSupervisor::resetTabsMenu()
{ {
tabsMenu->clear(); tabsMenu->clear();
tabsMenu->addAction(aTabDeckEditor); tabsMenu->addAction(aTabDeckEditor);
tabsMenu->addSeparator();
tabsMenu->addAction(aTabVisualDeckStorage);
} }
void TabSupervisor::start(const ServerInfo_User &_userInfo) void TabSupervisor::start(const ServerInfo_User &_userInfo)
@ -387,6 +399,21 @@ void TabSupervisor::stop()
userInfo = 0; userInfo = 0;
} }
void TabSupervisor::actTabVisualDeckStorage(bool checked)
{
if (checked && !tabVisualDeckStorage) {
tabVisualDeckStorage = new TabDeckStorageVisual(this, client);
myAddTab(tabVisualDeckStorage);
setCurrentWidget(tabVisualDeckStorage);
connect(tabVisualDeckStorage, &Tab::closed, this, [this] {
tabVisualDeckStorage = nullptr;
aTabVisualDeckStorage->setChecked(false);
});
} else if (!checked && tabVisualDeckStorage) {
tabVisualDeckStorage->closeRequest();
}
}
void TabSupervisor::actTabServer(bool checked) void TabSupervisor::actTabServer(bool checked)
{ {
if (checked && !tabServer) { if (checked && !tabServer) {
@ -640,14 +667,6 @@ TabDeckEditor *TabSupervisor::addDeckEditorTab(const DeckLoader *deckToOpen)
return tab; return tab;
} }
TabDeckStorageVisual *TabSupervisor::addVisualDeckStorageTab()
{
TabDeckStorageVisual *tab = new TabDeckStorageVisual(this, client);
myAddTab(tab);
setCurrentWidget(tab);
return tab;
}
void TabSupervisor::deckEditorClosed(TabDeckEditor *tab) void TabSupervisor::deckEditorClosed(TabDeckEditor *tab)
{ {
if (tab == currentWidget()) if (tab == currentWidget())

View file

@ -70,6 +70,7 @@ private:
AbstractClient *client; AbstractClient *client;
QList<AbstractClient *> localClients; QList<AbstractClient *> localClients;
QMenu *tabsMenu; QMenu *tabsMenu;
TabDeckStorageVisual *tabVisualDeckStorage;
TabServer *tabServer; TabServer *tabServer;
TabUserLists *tabUserLists; TabUserLists *tabUserLists;
TabDeckStorage *tabDeckStorage; TabDeckStorage *tabDeckStorage;
@ -83,7 +84,8 @@ private:
QList<TabDeckEditor *> deckEditorTabs; QList<TabDeckEditor *> deckEditorTabs;
bool isLocalGame; bool isLocalGame;
QAction *aTabDeckEditor, *aTabServer, *aTabUserLists, *aTabDeckStorage, *aTabReplays, *aTabAdmin, *aTabLog; QAction *aTabDeckEditor, *aTabVisualDeckStorage, *aTabServer, *aTabUserLists, *aTabDeckStorage, *aTabReplays,
*aTabAdmin, *aTabLog;
int myAddTab(Tab *tab); int myAddTab(Tab *tab);
void addCloseButtonToTab(Tab *tab, int tabIndex); void addCloseButtonToTab(Tab *tab, int tabIndex);
@ -136,12 +138,12 @@ signals:
public slots: public slots:
TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen); TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen);
TabDeckStorageVisual *addVisualDeckStorageTab();
void openReplay(GameReplay *replay); void openReplay(GameReplay *replay);
void maximizeMainWindow(); void maximizeMainWindow();
private slots: private slots:
void refreshShortcuts(); void refreshShortcuts();
void actTabVisualDeckStorage(bool checked);
void actTabServer(bool checked); void actTabServer(bool checked);
void actTabUserLists(bool checked); void actTabUserLists(bool checked);
void actTabDeckStorage(bool checked); void actTabDeckStorage(bool checked);

View file

@ -58,11 +58,6 @@ TabDeckStorageVisual::TabDeckStorageVisual(TabSupervisor *_tabSupervisor, Abstra
retranslateUi(); retranslateUi();
} }
void TabDeckStorageVisual::closeRequest(bool /*forced*/)
{
this->close();
}
void TabDeckStorageVisual::retranslateUi() void TabDeckStorageVisual::retranslateUi()
{ {
aOpenLocalDeck->setText(tr("Open in deck editor")); aOpenLocalDeck->setText(tr("Open in deck editor"));

View file

@ -33,7 +33,6 @@ public:
} }
public slots: public slots:
void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus); void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus);
void closeRequest(bool forced) override;
void actOpenLocalDeck(QMouseEvent *event, DeckPreviewWidget *instance); void actOpenLocalDeck(QMouseEvent *event, DeckPreviewWidget *instance);
void actDeleteLocalDeck(); void actDeleteLocalDeck();
signals: signals:

View file

@ -39,6 +39,9 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare
cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getVisualDeckStorageCardSize()); cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getVisualDeckStorageCardSize());
layout->addWidget(cardSizeWidget); layout->addWidget(cardSizeWidget);
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this,
&VisualDeckStorageWidget::refreshBannerCards);
} }
void VisualDeckStorageWidget::showEvent(QShowEvent *event) void VisualDeckStorageWidget::showEvent(QShowEvent *event)

View file

@ -290,11 +290,6 @@ void MainWindow::localGameEnded()
aSinglePlayer->setEnabled(true); aSinglePlayer->setEnabled(true);
} }
void MainWindow::actVisualDeckStorage()
{
tabSupervisor->addVisualDeckStorageTab();
}
void MainWindow::actFullScreen(bool checked) void MainWindow::actFullScreen(bool checked)
{ {
if (checked) if (checked)
@ -664,7 +659,6 @@ void MainWindow::retranslateUi()
aDisconnect->setText(tr("&Disconnect")); aDisconnect->setText(tr("&Disconnect"));
aSinglePlayer->setText(tr("Start &local game...")); aSinglePlayer->setText(tr("Start &local game..."));
aWatchReplay->setText(tr("&Watch replay...")); aWatchReplay->setText(tr("&Watch replay..."));
aVisualDeckStorage->setText(tr("&Visual Deck storage"));
aFullScreen->setText(tr("&Full screen")); aFullScreen->setText(tr("&Full screen"));
aRegister->setText(tr("&Register to server...")); aRegister->setText(tr("&Register to server..."));
aForgotPassword->setText(tr("&Restore password...")); aForgotPassword->setText(tr("&Restore password..."));
@ -712,8 +706,6 @@ void MainWindow::createActions()
connect(aSinglePlayer, &QAction::triggered, this, &MainWindow::actSinglePlayer); connect(aSinglePlayer, &QAction::triggered, this, &MainWindow::actSinglePlayer);
aWatchReplay = new QAction(this); aWatchReplay = new QAction(this);
connect(aWatchReplay, &QAction::triggered, this, &MainWindow::actWatchReplay); connect(aWatchReplay, &QAction::triggered, this, &MainWindow::actWatchReplay);
aVisualDeckStorage = new QAction(this);
connect(aVisualDeckStorage, &QAction::triggered, this, &MainWindow::actVisualDeckStorage);
aFullScreen = new QAction(this); aFullScreen = new QAction(this);
aFullScreen->setCheckable(true); aFullScreen->setCheckable(true);
connect(aFullScreen, &QAction::toggled, this, &MainWindow::actFullScreen); connect(aFullScreen, &QAction::toggled, this, &MainWindow::actFullScreen);
@ -800,8 +792,6 @@ void MainWindow::createMenus()
cockatriceMenu->addAction(aSinglePlayer); cockatriceMenu->addAction(aSinglePlayer);
cockatriceMenu->addAction(aWatchReplay); cockatriceMenu->addAction(aWatchReplay);
cockatriceMenu->addSeparator(); cockatriceMenu->addSeparator();
cockatriceMenu->addAction(aVisualDeckStorage);
cockatriceMenu->addSeparator();
cockatriceMenu->addAction(aFullScreen); cockatriceMenu->addAction(aFullScreen);
cockatriceMenu->addSeparator(); cockatriceMenu->addSeparator();
cockatriceMenu->addAction(aSettings); cockatriceMenu->addAction(aSettings);
@ -870,7 +860,6 @@ MainWindow::MainWindow(QWidget *parent)
connect(tabSupervisor, &TabSupervisor::setMenu, this, &MainWindow::updateTabMenu); connect(tabSupervisor, &TabSupervisor::setMenu, this, &MainWindow::updateTabMenu);
connect(tabSupervisor, &TabSupervisor::localGameEnded, this, &MainWindow::localGameEnded); connect(tabSupervisor, &TabSupervisor::localGameEnded, this, &MainWindow::localGameEnded);
connect(tabSupervisor, &TabSupervisor::showWindowIfHidden, this, &MainWindow::showWindowIfHidden); connect(tabSupervisor, &TabSupervisor::showWindowIfHidden, this, &MainWindow::showWindowIfHidden);
tabSupervisor->addDeckEditorTab(nullptr);
setCentralWidget(tabSupervisor); setCentralWidget(tabSupervisor);
@ -889,10 +878,6 @@ MainWindow::MainWindow(QWidget *parent)
&MainWindow::refreshShortcuts); &MainWindow::refreshShortcuts);
refreshShortcuts(); refreshShortcuts();
if (SettingsCache::instance().getVisualDeckStorageShowOnLoad()) {
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, tabSupervisor,
&TabSupervisor::addVisualDeckStorageTab);
}
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFailed, this, connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFailed, this,
&MainWindow::cardDatabaseLoadingFailed); &MainWindow::cardDatabaseLoadingFailed);
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseNewSetsFound, this, connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseNewSetsFound, this,

View file

@ -73,7 +73,6 @@ private slots:
void actDisconnect(); void actDisconnect();
void actSinglePlayer(); void actSinglePlayer();
void actWatchReplay(); void actWatchReplay();
void actVisualDeckStorage();
void actFullScreen(bool checked); void actFullScreen(bool checked);
void actRegister(); void actRegister();
void actSettings(); void actSettings();
@ -131,10 +130,9 @@ private:
QList<QMenu *> tabMenus; QList<QMenu *> tabMenus;
QMenu *cockatriceMenu, *dbMenu, *tabsMenu, *helpMenu, *trayIconMenu; QMenu *cockatriceMenu, *dbMenu, *tabsMenu, *helpMenu, *trayIconMenu;
QAction *aConnect, *aDisconnect, *aSinglePlayer, *aWatchReplay, *aVisualDeckStorage, *aFullScreen, *aSettings, QAction *aConnect, *aDisconnect, *aSinglePlayer, *aWatchReplay, *aFullScreen, *aSettings, *aExit, *aAbout, *aTips,
*aExit, *aAbout, *aTips, *aCheckCardUpdates, *aRegister, *aForgotPassword, *aUpdate, *aViewLog, *aManageSets, *aCheckCardUpdates, *aRegister, *aForgotPassword, *aUpdate, *aViewLog, *aManageSets, *aEditTokens,
*aEditTokens, *aOpenCustomFolder, *aOpenCustomsetsFolder, *aAddCustomSet, *aReloadCardDatabase, *aShow, *aOpenCustomFolder, *aOpenCustomsetsFolder, *aAddCustomSet, *aReloadCardDatabase, *aShow, *aOpenSettingsFolder;
*aOpenSettingsFolder;
TabSupervisor *tabSupervisor; TabSupervisor *tabSupervisor;
WndSets *wndSets; WndSets *wndSets;