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)
: 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);
@ -160,6 +164,11 @@ TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *
resetTabsMenu();
retranslateUi();
// open always-available tabs on startup
addDeckEditorTab(nullptr);
aTabVisualDeckStorage->setChecked(SettingsCache::instance().getVisualDeckStorageShowOnLoad());
}
TabSupervisor::~TabSupervisor()
@ -171,6 +180,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 +282,8 @@ void TabSupervisor::resetTabsMenu()
{
tabsMenu->clear();
tabsMenu->addAction(aTabDeckEditor);
tabsMenu->addSeparator();
tabsMenu->addAction(aTabVisualDeckStorage);
}
void TabSupervisor::start(const ServerInfo_User &_userInfo)
@ -387,6 +399,21 @@ void TabSupervisor::stop()
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)
{
if (checked && !tabServer) {
@ -640,14 +667,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())