Make VisualDeckEditor Tab play nicely with TabSupervisor, open in VDE by default from VDS.

This commit is contained in:
Lukas Brübach 2025-02-12 16:01:57 +01:00
parent 80259a34e7
commit edd35182c0
3 changed files with 31 additions and 6 deletions

View file

@ -132,6 +132,9 @@ TabSupervisor::TabSupervisor(AbstractClient *_client, QMenu *tabsMenu, QWidget *
aTabDeckEditor = new QAction(this);
connect(aTabDeckEditor, &QAction::triggered, this, [this] { addDeckEditorTab(nullptr); });
aTabVisualDeckEditor = new QAction(this);
connect(aTabVisualDeckEditor, &QAction::triggered, this, [this] { addVisualDeckEditorTab(nullptr); });
aTabVisualDeckStorage = new QAction(this);
aTabVisualDeckStorage->setCheckable(true);
connect(aTabVisualDeckStorage, &QAction::triggered, this, &TabSupervisor::actTabVisualDeckStorage);
@ -178,6 +181,7 @@ void TabSupervisor::retranslateUi()
{
// tab menu actions
aTabDeckEditor->setText(tr("Deck Editor"));
aTabVisualDeckEditor->setText(tr("Visual Deck Editor"));
aTabVisualDeckStorage->setText(tr("&Visual Deck Storage"));
aTabServer->setText(tr("Server"));
aTabAccount->setText(tr("Account"));
@ -206,6 +210,9 @@ void TabSupervisor::retranslateUi()
QListIterator<AbstractTabDeckEditor *> deckEditorIterator(deckEditorTabs);
while (deckEditorIterator.hasNext())
tabs.append(deckEditorIterator.next());
QListIterator<TabDeckEditorVisual *> visualDeckEditorIterator(visualDeckEditorTabs);
while (visualDeckEditorIterator.hasNext())
tabs.append(visualDeckEditorIterator.next());
QMapIterator<QString, TabMessage *> messageIterator(messageTabs);
while (messageIterator.hasNext())
tabs.append(messageIterator.next().value());
@ -225,6 +232,7 @@ void TabSupervisor::refreshShortcuts()
{
ShortcutsSettings &shortcuts = SettingsCache::instance().shortcuts();
aTabDeckEditor->setShortcuts(shortcuts.getShortcut("Tabs/aTabDeckEditor"));
aTabVisualDeckEditor->setShortcuts(shortcuts.getShortcut("Tabs/aTabVisualDeckEditor"));
aTabVisualDeckStorage->setShortcuts(shortcuts.getShortcut("Tabs/aTabVisualDeckStorage"));
aTabServer->setShortcuts(shortcuts.getShortcut("Tabs/aTabServer"));
aTabAccount->setShortcuts(shortcuts.getShortcut("Tabs/aTabAccount"));
@ -372,6 +380,7 @@ void TabSupervisor::resetTabsMenu()
{
tabsMenu->clear();
tabsMenu->addAction(aTabDeckEditor);
tabsMenu->addAction(aTabVisualDeckEditor);
tabsMenu->addSeparator();
tabsMenu->addAction(aTabVisualDeckStorage);
tabsMenu->addAction(aTabDeckStorage);
@ -806,10 +815,15 @@ TabDeckEditor *TabSupervisor::addDeckEditorTab(const DeckLoader *deckToOpen)
return tab;
}
TabDeckEditorVisual *TabSupervisor::addVisualDeckEditorTab()
TabDeckEditorVisual *TabSupervisor::addVisualDeckEditorTab(const DeckLoader *deckToOpen)
{
TabDeckEditorVisual *tab = new TabDeckEditorVisual(this);
if (deckToOpen)
tab->setDeck(new DeckLoader(*deckToOpen));
connect(tab, &TabDeckEditorVisual::deckEditorClosing, this, &TabSupervisor::visualDeckEditorClosed);
// connect(tab, &TabDeckEditorVisual::openDeckEditor, this, &TabSupervisor::addDeckEditorTab);
myAddTab(tab);
visualDeckEditorTabs.append(tab);
setCurrentWidget(tab);
return tab;
}
@ -835,6 +849,15 @@ void TabSupervisor::deckEditorClosed(AbstractTabDeckEditor *tab)
removeTab(indexOf(tab));
}
void TabSupervisor::visualDeckEditorClosed(TabDeckEditorVisual *tab)
{
if (tab == currentWidget())
emit setMenu();
visualDeckEditorTabs.removeOne(tab);
removeTab(indexOf(tab));
}
void TabSupervisor::tabUserEvent(bool globalEvent)
{
Tab *tab = static_cast<Tab *>(sender());

View file

@ -91,10 +91,11 @@ private:
QList<TabGame *> replayTabs;
QMap<QString, TabMessage *> messageTabs;
QList<AbstractTabDeckEditor *> deckEditorTabs;
QList<TabDeckEditorVisual *> visualDeckEditorTabs;
bool isLocalGame;
QAction *aTabDeckEditor, *aTabVisualDeckStorage, *aTabServer, *aTabAccount, *aTabDeckStorage, *aTabReplays,
*aTabAdmin, *aTabLog;
QAction *aTabDeckEditor, *aTabVisualDeckEditor, *aTabVisualDeckStorage, *aTabServer, *aTabAccount, *aTabDeckStorage,
*aTabReplays, *aTabAdmin, *aTabLog;
int myAddTab(Tab *tab, QAction *manager = nullptr);
void addCloseButtonToTab(Tab *tab, int tabIndex, QAction *manager);
@ -151,9 +152,9 @@ signals:
public slots:
TabDeckEditor *addDeckEditorTab(const DeckLoader *deckToOpen);
TabDeckEditorVisual *addVisualDeckEditorTab(const DeckLoader *deckToOpen);
TabEdhRec *addEdhrecTab(const CardInfoPtr &cardToQuery, bool isCommander = false);
TabDeckStorageVisual *addVisualDeckStorageTab();
TabDeckEditorVisual *addVisualDeckEditorTab();
void openReplay(GameReplay *replay);
void maximizeMainWindow();
private slots:
@ -188,6 +189,7 @@ private slots:
void processUserJoined(const ServerInfo_User &userInfo);
void talkLeft(TabMessage *tab);
void deckEditorClosed(AbstractTabDeckEditor *tab);
void visualDeckEditorClosed(TabDeckEditorVisual *tab);
void tabUserEvent(bool globalEvent);
void updateTabText(Tab *tab, const QString &newTabText);
void processRoomEvent(const RoomEvent &event);

View file

@ -878,8 +878,8 @@ MainWindow::MainWindow(QWidget *parent)
connect(&SettingsCache::instance().shortcuts(), &ShortcutsSettings::shortCutChanged, this,
&MainWindow::refreshShortcuts);
refreshShortcuts();
connect(CardDatabaseManager::getInstance(), SIGNAL(cardDatabaseLoadingFinished()), tabSupervisor,
SLOT(addVisualDeckEditorTab()));
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this,
[this]() { tabSupervisor->addVisualDeckEditorTab(nullptr); });
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFailed, this,
&MainWindow::cardDatabaseLoadingFailed);