actually delete VDS when hiding it in game lobby (#5572)

This commit is contained in:
RickyRister 2025-02-06 21:20:42 -08:00 committed by GitHub
parent 94129607e5
commit 23223e10b5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 49 additions and 14 deletions

View file

@ -48,7 +48,7 @@ void ToggleButton::setState(bool _state)
} }
DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent) DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
: QWidget(nullptr), parentGame(parent), playerId(_playerId) : QWidget(nullptr), visualDeckStorageWidget(nullptr), parentGame(parent), playerId(_playerId)
{ {
loadLocalButton = new QPushButton; loadLocalButton = new QPushButton;
loadRemoteButton = new QPushButton; loadRemoteButton = new QPushButton;
@ -86,14 +86,9 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
connect(deckView, SIGNAL(newCardAdded(AbstractCardItem *)), this, SIGNAL(newCardAdded(AbstractCardItem *))); connect(deckView, SIGNAL(newCardAdded(AbstractCardItem *)), this, SIGNAL(newCardAdded(AbstractCardItem *)));
connect(deckView, SIGNAL(sideboardPlanChanged()), this, SLOT(sideboardPlanChanged())); connect(deckView, SIGNAL(sideboardPlanChanged()), this, SLOT(sideboardPlanChanged()));
visualDeckStorageWidget = new VisualDeckStorageWidget(this);
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::deckLoadRequested, this,
&DeckViewContainer::loadDeckFromFile);
deckViewLayout = new QVBoxLayout; deckViewLayout = new QVBoxLayout;
deckViewLayout->addLayout(buttonHBox); deckViewLayout->addLayout(buttonHBox);
deckViewLayout->addWidget(deckView); deckViewLayout->addWidget(deckView);
deckViewLayout->addWidget(visualDeckStorageWidget);
deckViewLayout->setContentsMargins(0, 0, 0, 0); deckViewLayout->setContentsMargins(0, 0, 0, 0);
setLayout(deckViewLayout); setLayout(deckViewLayout);
@ -107,6 +102,22 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
switchToDeckSelectView(); switchToDeckSelectView();
} }
/**
* Creates the VDS widget and inserts it into the layout. No-ops if the widget already exists
*/
void DeckViewContainer::tryCreateVisualDeckStorageWidget()
{
if (visualDeckStorageWidget) {
return;
}
visualDeckStorageWidget = new VisualDeckStorageWidget(this);
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::deckLoadRequested, this,
&DeckViewContainer::loadDeckFromFile);
deckViewLayout->addWidget(visualDeckStorageWidget);
}
void DeckViewContainer::retranslateUi() void DeckViewContainer::retranslateUi()
{ {
loadLocalButton->setText(tr("Load deck...")); loadLocalButton->setText(tr("Load deck..."));
@ -125,8 +136,18 @@ static void setVisibility(QPushButton *button, bool visible)
void DeckViewContainer::switchToDeckSelectView() void DeckViewContainer::switchToDeckSelectView()
{ {
deckView->setHidden(SettingsCache::instance().getVisualDeckStorageInGame()); if (SettingsCache::instance().getVisualDeckStorageInGame()) {
visualDeckStorageWidget->setHidden(!SettingsCache::instance().getVisualDeckStorageInGame()); deckView->setHidden(true);
tryCreateVisualDeckStorageWidget();
visualDeckStorageWidget->setHidden(false);
} else {
deckView->setHidden(false);
if (visualDeckStorageWidget) {
visualDeckStorageWidget->setHidden(true);
}
}
deckViewLayout->update(); deckViewLayout->update();
setVisibility(loadLocalButton, true); setVisibility(loadLocalButton, true);
@ -147,7 +168,10 @@ void DeckViewContainer::switchToDeckSelectView()
void DeckViewContainer::switchToDeckLoadedView() void DeckViewContainer::switchToDeckLoadedView()
{ {
deckView->setHidden(false); deckView->setHidden(false);
visualDeckStorageWidget->setHidden(true); if (visualDeckStorageWidget) {
visualDeckStorageWidget->setHidden(true);
}
deckViewLayout->update(); deckViewLayout->update();
setVisibility(loadLocalButton, false); setVisibility(loadLocalButton, false);
@ -183,15 +207,25 @@ void DeckViewContainer::refreshShortcuts()
} }
/** /**
* Update VDS visibility when settings change * Update VDS existence when settings change
*/ */
void DeckViewContainer::updateShowVisualDeckStorage(bool enabled) void DeckViewContainer::updateShowVisualDeckStorage(bool enabled)
{ {
// view mode state isn't stored in a field, so we determine state by checking the button if (enabled) {
if (loadLocalButton->isEnabled()) { tryCreateVisualDeckStorageWidget();
deckView->setHidden(enabled); // view mode state isn't stored in a field, so we determine state by checking the button
visualDeckStorageWidget->setHidden(!enabled); bool isDeckSelectView = loadLocalButton->isEnabled();
visualDeckStorageWidget->setHidden(!isDeckSelectView);
deckView->setHidden(isDeckSelectView);
} else {
if (visualDeckStorageWidget) {
visualDeckStorageWidget->deleteLater();
visualDeckStorageWidget = nullptr;
}
deckView->setHidden(false);
} }
deckViewLayout->update();
} }
void DeckViewContainer::unloadDeck() void DeckViewContainer::unloadDeck()

View file

@ -51,6 +51,7 @@ private:
TabGame *parentGame; TabGame *parentGame;
int playerId; int playerId;
void tryCreateVisualDeckStorageWidget();
void sendReadyStartCommand(bool ready); void sendReadyStartCommand(bool ready);
private slots: private slots:
void switchToDeckSelectView(); void switchToDeckSelectView();