From a586fae0bb76f65a38864178fd4a95455736f578 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Sun, 12 Jan 2025 19:07:01 -0800 Subject: [PATCH] manage visual deck storage in TabSupervisor --- cockatrice/src/client/tabs/tab_supervisor.cpp | 33 +++++++++++++------ cockatrice/src/client/tabs/tab_supervisor.h | 6 ++-- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/cockatrice/src/client/tabs/tab_supervisor.cpp b/cockatrice/src/client/tabs/tab_supervisor.cpp index 52baacb21..53c38cf37 100644 --- a/cockatrice/src/client/tabs/tab_supervisor.cpp +++ b/cockatrice/src/client/tabs/tab_supervisor.cpp @@ -101,8 +101,8 @@ void CloseButton::paintEvent(QPaintEvent * /*event*/) } TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *parent) - : QTabWidget(parent), userInfo(0), client(_client), tabsMenu(tabsMenu), tabServer(0), tabUserLists(0), - tabDeckStorage(0), tabReplays(0), tabAdmin(0), tabLog(0) + : QTabWidget(parent), userInfo(0), client(_client), tabsMenu(tabsMenu), tabVisualDeckStorage(nullptr), tabServer(0), + tabUserLists(0), tabDeckStorage(0), tabReplays(0), tabAdmin(0), tabLog(0) { setElideMode(Qt::ElideRight); setMovable(true); @@ -129,6 +129,10 @@ TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget * aTabDeckEditor = new QAction(this); 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->setCheckable(true); connect(aTabServer, &QAction::toggled, this, &TabSupervisor::actTabServer); @@ -171,6 +175,7 @@ void TabSupervisor::retranslateUi() { // tab menu actions aTabDeckEditor->setText(tr("Deck Editor")); + aTabVisualDeckStorage->setText(tr("&Visual Deck storage")); aTabServer->setText(tr("Server")); aTabUserLists->setText(tr("Account")); aTabDeckStorage->setText(tr("Deck storage")); @@ -272,6 +277,8 @@ void TabSupervisor::resetTabsMenu() { tabsMenu->clear(); tabsMenu->addAction(aTabDeckEditor); + tabsMenu->addSeparator(); + tabsMenu->addAction(aTabVisualDeckStorage); } void TabSupervisor::start(const ServerInfo_User &_userInfo) @@ -387,6 +394,20 @@ void TabSupervisor::stop() userInfo = 0; } +void TabSupervisor::actTabVisualDeckStorage(bool checked) +{ + if (checked && !tabVisualDeckStorage) { + tabVisualDeckStorage = new TabDeckStorageVisual(this, client); + myAddTab(tabVisualDeckStorage); + connect(tabVisualDeckStorage, &Tab::closed, this, [this] { + tabVisualDeckStorage = nullptr; + aTabVisualDeckStorage->setChecked(false); + }); + } else if (!checked && tabVisualDeckStorage) { + tabVisualDeckStorage->closeRequest(); + } +} + void TabSupervisor::actTabServer(bool checked) { if (checked && !tabServer) { @@ -640,14 +661,6 @@ TabDeckEditor *TabSupervisor::addDeckEditorTab(const DeckLoader *deckToOpen) return tab; } -TabDeckStorageVisual *TabSupervisor::addVisualDeckStorageTab() -{ - TabDeckStorageVisual *tab = new TabDeckStorageVisual(this, client); - myAddTab(tab); - setCurrentWidget(tab); - return tab; -} - void TabSupervisor::deckEditorClosed(TabDeckEditor *tab) { if (tab == currentWidget()) diff --git a/cockatrice/src/client/tabs/tab_supervisor.h b/cockatrice/src/client/tabs/tab_supervisor.h index 6536fef84..99a520872 100644 --- a/cockatrice/src/client/tabs/tab_supervisor.h +++ b/cockatrice/src/client/tabs/tab_supervisor.h @@ -70,6 +70,7 @@ private: AbstractClient *client; QList localClients; QMenu *tabsMenu; + TabDeckStorageVisual *tabVisualDeckStorage; TabServer *tabServer; TabUserLists *tabUserLists; TabDeckStorage *tabDeckStorage; @@ -83,7 +84,8 @@ private: QList deckEditorTabs; bool isLocalGame; - QAction *aTabDeckEditor, *aTabServer, *aTabUserLists, *aTabDeckStorage, *aTabReplays, *aTabAdmin, *aTabLog; + QAction *aTabDeckEditor, *aTabVisualDeckStorage, *aTabServer, *aTabUserLists, *aTabDeckStorage, *aTabReplays, + *aTabAdmin, *aTabLog; int myAddTab(Tab *tab); void addCloseButtonToTab(Tab *tab, int tabIndex); @@ -136,12 +138,12 @@ signals: public slots: TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen); - TabDeckStorageVisual *addVisualDeckStorageTab(); void openReplay(GameReplay *replay); void maximizeMainWindow(); private slots: void refreshShortcuts(); + void actTabVisualDeckStorage(bool checked); void actTabServer(bool checked); void actTabUserLists(bool checked); void actTabDeckStorage(bool checked);