Add setting to hide visual deck storage in game lobby (#5570)

This commit is contained in:
RickyRister
2025-02-06 05:44:33 -08:00
committed by GitHub
parent 1ee0e87ba7
commit d951b082c4
10 changed files with 56 additions and 5 deletions

View File

@@ -625,10 +625,15 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
connect(&visualDeckStorageAlwaysConvertCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setVisualDeckStorageAlwaysConvert);
visualDeckStorageInGameCheckBox.setChecked(SettingsCache::instance().getVisualDeckStorageInGame());
connect(&visualDeckStorageInGameCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setVisualDeckStorageInGame);
auto *deckEditorGrid = new QGridLayout;
deckEditorGrid->addWidget(&openDeckInNewTabCheckBox, 0, 0);
deckEditorGrid->addWidget(&visualDeckStoragePromptForConversionCheckBox, 1, 0);
deckEditorGrid->addWidget(&visualDeckStorageAlwaysConvertCheckBox, 2, 0);
deckEditorGrid->addWidget(&visualDeckStorageInGameCheckBox, 3, 0);
deckEditorGroupBox = new QGroupBox;
deckEditorGroupBox->setLayout(deckEditorGrid);
@@ -690,6 +695,7 @@ void UserInterfaceSettingsPage::retranslateUi()
openDeckInNewTabCheckBox.setText(tr("Open deck in new tab by default"));
visualDeckStoragePromptForConversionCheckBox.setText(tr("Prompt before converting .txt decks to .cod format"));
visualDeckStorageAlwaysConvertCheckBox.setText(tr("Always convert if not prompted"));
visualDeckStorageInGameCheckBox.setText(tr("Use visual deck storage in game lobby"));
replayGroupBox->setTitle(tr("Replay settings"));
rewindBufferingMsLabel.setText(tr("Buffer time for backwards skip via shortcut:"));
rewindBufferingMsBox.setSuffix(" ms");

View File

@@ -146,6 +146,7 @@ private:
QCheckBox openDeckInNewTabCheckBox;
QCheckBox visualDeckStoragePromptForConversionCheckBox;
QCheckBox visualDeckStorageAlwaysConvertCheckBox;
QCheckBox visualDeckStorageInGameCheckBox;
QLabel rewindBufferingMsLabel;
QSpinBox rewindBufferingMsBox;
QGroupBox *generalGroupBox;

View File

@@ -517,6 +517,11 @@ void DeckView::setDeck(const DeckList &_deck)
deckViewScene->setDeck(_deck);
}
void DeckView::clearDeck()
{
deckViewScene->clearContents();
}
void DeckView::resetSideboardPlan()
{
deckViewScene->resetSideboardPlan();

View File

@@ -109,7 +109,6 @@ private:
DeckList *deck;
QMap<QString, DeckViewCardContainer *> cardContainers;
qreal optimalAspectRatio;
void clearContents();
void rebuildTree();
public:
@@ -123,6 +122,7 @@ public:
{
return locked;
}
void clearContents();
void setDeck(const DeckList &_deck);
void setOptimalAspectRatio(qreal _optimalAspectRatio)
{
@@ -152,6 +152,7 @@ signals:
public:
explicit DeckView(QWidget *parent = nullptr);
void setDeck(const DeckList &_deck);
void clearDeck();
void setLocked(bool _locked)
{
deckViewScene->setLocked(_locked);

View File

@@ -101,6 +101,9 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
connect(&SettingsCache::instance().shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts()));
refreshShortcuts();
connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageInGameChanged, this,
&DeckViewContainer::updateShowVisualDeckStorage);
switchToDeckSelectView();
}
@@ -122,8 +125,8 @@ static void setVisibility(QPushButton *button, bool visible)
void DeckViewContainer::switchToDeckSelectView()
{
deckView->setVisible(false);
visualDeckStorageWidget->setVisible(true);
deckView->setHidden(SettingsCache::instance().getVisualDeckStorageInGame());
visualDeckStorageWidget->setHidden(!SettingsCache::instance().getVisualDeckStorageInGame());
deckViewLayout->update();
setVisibility(loadLocalButton, true);
@@ -143,8 +146,8 @@ void DeckViewContainer::switchToDeckSelectView()
void DeckViewContainer::switchToDeckLoadedView()
{
deckView->setVisible(true);
visualDeckStorageWidget->setVisible(false);
deckView->setHidden(false);
visualDeckStorageWidget->setHidden(true);
deckViewLayout->update();
setVisibility(loadLocalButton, false);
@@ -179,8 +182,21 @@ void DeckViewContainer::refreshShortcuts()
sideboardLockButton->setShortcut(shortcuts.getSingleShortcut("DeckViewContainer/sideboardLockButton"));
}
/**
* Update VDS visibility when settings change
*/
void DeckViewContainer::updateShowVisualDeckStorage(bool enabled)
{
// view mode state isn't stored in a field, so we determine state by checking the button
if (loadLocalButton->isEnabled()) {
deckView->setHidden(enabled);
visualDeckStorageWidget->setHidden(!enabled);
}
}
void DeckViewContainer::unloadDeck()
{
deckView->clearDeck();
switchToDeckSelectView();
}

View File

@@ -65,6 +65,7 @@ private slots:
void sideboardLockButtonClicked();
void updateSideboardLockButtonText();
void refreshShortcuts();
void updateShowVisualDeckStorage(bool enabled);
signals:
void newCardAdded(AbstractCardItem *card);
void notIdle();

View File

@@ -273,6 +273,7 @@ SettingsCache::SettingsCache()
visualDeckStoragePromptForConversion =
settings->value("interface/visualdeckstoragepromptforconversion", true).toBool();
visualDeckStorageAlwaysConvert = settings->value("interface/visualdeckstoragealwaysconvert", false).toBool();
visualDeckStorageInGame = settings->value("interface/visualdeckstorageingame", true).toBool();
horizontalHand = settings->value("hand/horizontal", true).toBool();
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt();
@@ -710,6 +711,13 @@ void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T _visual
settings->setValue("interface/visualdeckstoragealwaysconvert", visualDeckStorageAlwaysConvert);
}
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T value)
{
visualDeckStorageInGame = value;
settings->setValue("interface/visualdeckstorageingame", visualDeckStorageInGame);
emit visualDeckStorageInGameChanged(visualDeckStorageInGame);
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand)
{
horizontalHand = static_cast<bool>(_horizontalHand);

View File

@@ -63,6 +63,7 @@ signals:
void printingSelectorCardSizeSliderVisibleChanged();
void printingSelectorNavigationButtonsVisibleChanged();
void visualDeckStorageCardSizeChanged();
void visualDeckStorageInGameChanged(bool enabled);
void horizontalHandChanged();
void handJustificationChanged();
void invertVerticalCoordinateChanged();
@@ -135,6 +136,7 @@ private:
int visualDeckStorageUnusedColorIdentitiesOpacity;
bool visualDeckStoragePromptForConversion;
bool visualDeckStorageAlwaysConvert;
bool visualDeckStorageInGame;
bool horizontalHand;
bool invertVerticalCoordinate;
int minPlayersForMultiColumnLayout;
@@ -434,6 +436,10 @@ public:
{
return visualDeckStorageAlwaysConvert;
}
bool getVisualDeckStorageInGame() const
{
return visualDeckStorageInGame;
}
bool getHorizontalHand() const
{
return horizontalHand;
@@ -760,6 +766,7 @@ public slots:
void setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity);
void setVisualDeckStoragePromptForConversion(QT_STATE_CHANGED_T _visualDeckStoragePromptForConversion);
void setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T _visualDeckStorageAlwaysConvert);
void setVisualDeckStorageInGame(QT_STATE_CHANGED_T value);
void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand);
void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate);
void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout);

View File

@@ -229,6 +229,9 @@ void SettingsCache::setVisualDeckStoragePromptForConversion(
void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */)
{
}
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */)
{
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
{
}

View File

@@ -233,6 +233,9 @@ void SettingsCache::setVisualDeckStoragePromptForConversion(
void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */)
{
}
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */)
{
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
{
}