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

View file

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

View file

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

View file

@ -109,7 +109,6 @@ private:
DeckList *deck; DeckList *deck;
QMap<QString, DeckViewCardContainer *> cardContainers; QMap<QString, DeckViewCardContainer *> cardContainers;
qreal optimalAspectRatio; qreal optimalAspectRatio;
void clearContents();
void rebuildTree(); void rebuildTree();
public: public:
@ -123,6 +122,7 @@ public:
{ {
return locked; return locked;
} }
void clearContents();
void setDeck(const DeckList &_deck); void setDeck(const DeckList &_deck);
void setOptimalAspectRatio(qreal _optimalAspectRatio) void setOptimalAspectRatio(qreal _optimalAspectRatio)
{ {
@ -152,6 +152,7 @@ signals:
public: public:
explicit DeckView(QWidget *parent = nullptr); explicit DeckView(QWidget *parent = nullptr);
void setDeck(const DeckList &_deck); void setDeck(const DeckList &_deck);
void clearDeck();
void setLocked(bool _locked) void setLocked(bool _locked)
{ {
deckViewScene->setLocked(_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())); connect(&SettingsCache::instance().shortcuts(), SIGNAL(shortCutChanged()), this, SLOT(refreshShortcuts()));
refreshShortcuts(); refreshShortcuts();
connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageInGameChanged, this,
&DeckViewContainer::updateShowVisualDeckStorage);
switchToDeckSelectView(); switchToDeckSelectView();
} }
@ -122,8 +125,8 @@ static void setVisibility(QPushButton *button, bool visible)
void DeckViewContainer::switchToDeckSelectView() void DeckViewContainer::switchToDeckSelectView()
{ {
deckView->setVisible(false); deckView->setHidden(SettingsCache::instance().getVisualDeckStorageInGame());
visualDeckStorageWidget->setVisible(true); visualDeckStorageWidget->setHidden(!SettingsCache::instance().getVisualDeckStorageInGame());
deckViewLayout->update(); deckViewLayout->update();
setVisibility(loadLocalButton, true); setVisibility(loadLocalButton, true);
@ -143,8 +146,8 @@ void DeckViewContainer::switchToDeckSelectView()
void DeckViewContainer::switchToDeckLoadedView() void DeckViewContainer::switchToDeckLoadedView()
{ {
deckView->setVisible(true); deckView->setHidden(false);
visualDeckStorageWidget->setVisible(false); visualDeckStorageWidget->setHidden(true);
deckViewLayout->update(); deckViewLayout->update();
setVisibility(loadLocalButton, false); setVisibility(loadLocalButton, false);
@ -179,8 +182,21 @@ void DeckViewContainer::refreshShortcuts()
sideboardLockButton->setShortcut(shortcuts.getSingleShortcut("DeckViewContainer/sideboardLockButton")); 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() void DeckViewContainer::unloadDeck()
{ {
deckView->clearDeck();
switchToDeckSelectView(); switchToDeckSelectView();
} }

View file

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

View file

@ -273,6 +273,7 @@ SettingsCache::SettingsCache()
visualDeckStoragePromptForConversion = visualDeckStoragePromptForConversion =
settings->value("interface/visualdeckstoragepromptforconversion", true).toBool(); settings->value("interface/visualdeckstoragepromptforconversion", true).toBool();
visualDeckStorageAlwaysConvert = settings->value("interface/visualdeckstoragealwaysconvert", false).toBool(); visualDeckStorageAlwaysConvert = settings->value("interface/visualdeckstoragealwaysconvert", false).toBool();
visualDeckStorageInGame = settings->value("interface/visualdeckstorageingame", true).toBool();
horizontalHand = settings->value("hand/horizontal", true).toBool(); horizontalHand = settings->value("hand/horizontal", true).toBool();
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool(); invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt(); 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); 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) void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand)
{ {
horizontalHand = static_cast<bool>(_horizontalHand); horizontalHand = static_cast<bool>(_horizontalHand);

View file

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

View file

@ -229,6 +229,9 @@ void SettingsCache::setVisualDeckStoragePromptForConversion(
void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */) void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */)
{ {
} }
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */)
{
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) 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::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */)
{ {
} }
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */)
{
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */) void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T /* _horizontalHand */)
{ {
} }