Make TabHome a managed tab (#6147)

* Make TabHome a managed tab

* Add shortcut
This commit is contained in:
RickyRister 2025-09-15 03:07:57 -07:00 committed by GitHub
parent 94ba1c83c6
commit a9cbd5a172
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 38 additions and 13 deletions

View file

@ -141,6 +141,10 @@ TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *
aTabEdhRec = new QAction(this);
connect(aTabEdhRec, &QAction::triggered, this, [this] { addEdhrecMainTab(); });
aTabHome = new QAction(this);
aTabHome->setCheckable(true);
connect(aTabHome, &QAction::triggered, this, &TabSupervisor::actTabHome);
aTabVisualDeckStorage = new QAction(this);
aTabVisualDeckStorage->setCheckable(true);
connect(aTabVisualDeckStorage, &QAction::triggered, this, &TabSupervisor::actTabVisualDeckStorage);
@ -201,6 +205,7 @@ void TabSupervisor::retranslateUi()
aTabDeckEditor->setText(tr("Deck Editor"));
aTabVisualDeckEditor->setText(tr("Visual Deck Editor"));
aTabEdhRec->setText(tr("EDHRec"));
aTabHome->setText(tr("Home"));
aTabVisualDeckStorage->setText(tr("&Visual Deck Storage"));
aTabVisualDatabaseDisplay->setText(tr("Visual Database Display"));
aTabServer->setText(tr("Server"));
@ -250,6 +255,8 @@ void TabSupervisor::refreshShortcuts()
ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts();
aTabDeckEditor->setShortcuts(shortcuts.getShortcut("Tabs/aTabDeckEditor"));
aTabVisualDeckEditor->setShortcuts(shortcuts.getShortcut("Tabs/aTabVisualDeckEditor"));
aTabHome->setShortcuts(shortcuts.getShortcut("Tabs/aTabHome"));
aTabVisualDeckStorage->setShortcuts(shortcuts.getShortcut("Tabs/aTabVisualDeckStorage"));
aTabServer->setShortcuts(shortcuts.getShortcut("Tabs/aTabServer"));
aTabAccount->setShortcuts(shortcuts.getShortcut("Tabs/aTabAccount"));
@ -313,8 +320,8 @@ static void checkAndTrigger(QAction *checkableAction, bool checked)
*/
void TabSupervisor::initStartupTabs()
{
auto homeTab = addHomeTab();
setCurrentWidget(homeTab);
openTabHome();
setCurrentWidget(tabHome);
if (SettingsCache::instance().getTabVisualDeckStorageOpen()) {
openTabVisualDeckStorage();
@ -381,6 +388,7 @@ void TabSupervisor::resetTabsMenu()
tabsMenu->addAction(aTabVisualDeckEditor);
tabsMenu->addAction(aTabEdhRec);
tabsMenu->addSeparator();
tabsMenu->addAction(aTabHome);
tabsMenu->addAction(aTabVisualDeckStorage);
tabsMenu->addAction(aTabVisualDatabaseDisplay);
tabsMenu->addAction(aTabDeckStorage);
@ -497,6 +505,27 @@ void TabSupervisor::stop()
userInfo = nullptr;
}
void TabSupervisor::actTabHome(bool checked)
{
if (checked && !tabHome) {
openTabHome();
setCurrentWidget(tabHome);
} else if (!checked && tabHome) {
tabHome->closeRequest();
}
}
void TabSupervisor::openTabHome()
{
tabHome = new TabHome(this, client);
myAddTab(tabHome, aTabHome);
connect(tabHome, &QObject::destroyed, this, [this] {
tabHome = nullptr;
aTabHome->setChecked(false);
});
aTabHome->setChecked(true);
}
void TabSupervisor::actTabVisualDeckStorage(bool checked)
{
SettingsCache::instance().setTabVisualDeckStorageOpen(checked);
@ -813,14 +842,6 @@ void TabSupervisor::talkLeft(TabMessage *tab)
removeTab(indexOf(tab));
}
TabHome *TabSupervisor::addHomeTab()
{
auto *tab = new TabHome(this, client);
myAddTab(tab);
setCurrentWidget(tab);
return tab;
}
/**
* Creates a new deck editor tab and loads the deck into it.
* Creates either a classic or visual deck editor tab depending on settings

View file

@ -90,6 +90,7 @@ private:
UserListManager *userListManager;
QList<AbstractClient *> localClients;
QMenu *tabsMenu;
TabHome *tabHome;
TabDeckStorageVisual *tabVisualDeckStorage;
TabServer *tabServer;
TabAccount *tabAccount;
@ -104,8 +105,8 @@ private:
QList<AbstractTabDeckEditor *> deckEditorTabs;
bool isLocalGame;
QAction *aTabDeckEditor, *aTabVisualDeckEditor, *aTabEdhRec, *aTabVisualDeckStorage, *aTabVisualDatabaseDisplay,
*aTabServer, *aTabAccount, *aTabDeckStorage, *aTabReplays, *aTabAdmin, *aTabLog;
QAction *aTabHome, *aTabDeckEditor, *aTabVisualDeckEditor, *aTabEdhRec, *aTabVisualDeckStorage,
*aTabVisualDatabaseDisplay, *aTabServer, *aTabAccount, *aTabDeckStorage, *aTabReplays, *aTabAdmin, *aTabLog;
int myAddTab(Tab *tab, QAction *manager = nullptr);
void addCloseButtonToTab(Tab *tab, int tabIndex, QAction *manager);
@ -175,6 +176,7 @@ public slots:
private slots:
void refreshShortcuts();
void actTabHome(bool checked);
void actTabServer(bool checked);
void actTabAccount(bool checked);
void actTabDeckStorage(bool checked);
@ -182,6 +184,7 @@ private slots:
void actTabLog(bool checked);
void openTabVisualDeckStorage();
void openTabHome();
void openTabServer();
void openTabAccount();
void openTabDeckStorage();
@ -201,7 +204,6 @@ private slots:
void processUserLeft(const QString &userName);
void processUserJoined(const ServerInfo_User &userInfo);
void talkLeft(TabMessage *tab);
TabHome *addHomeTab();
void deckEditorClosed(AbstractTabDeckEditor *tab);
void tabUserEvent(bool globalEvent);
void updateTabText(Tab *tab, const QString &newTabText);

View file

@ -707,6 +707,8 @@ private:
ShortcutGroup::Replays)},
{"Tabs/aTabDeckEditor",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Deck Editor"), parseSequenceString(""), ShortcutGroup::Tabs)},
{"Tabs/aTabHome",
ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Home"), parseSequenceString(""), ShortcutGroup::Tabs)},
{"Tabs/aTabVisualDeckStorage", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Visual Deck Storage"),
parseSequenceString(""),
ShortcutGroup::Tabs)},