change settings entry of the cod conversion prompt to a combobox (#5801)

* change settings entry of the cod conversion prompt to a combobox

replace the two checkboxes of which one state is ignored if one is
checked with a three state combobox for better user experience

* Update dlg_settings.cpp

---------

Co-authored-by: Zach H <zahalpern+github@gmail.com>
This commit is contained in:
ebbit1q 2025-04-12 05:12:34 +02:00
parent 43af173769
commit 4799f1df2f
7 changed files with 51 additions and 31 deletions

View file

@ -106,16 +106,16 @@ void DeckPreviewDeckTagsDisplayWidget::openTagEditDlg()
canAddTags = true; canAddTags = true;
if (conversionDialog.dontAskAgain()) { if (conversionDialog.dontAskAgain()) {
SettingsCache::instance().setVisualDeckStoragePromptForConversion(Qt::CheckState::Unchecked); SettingsCache::instance().setVisualDeckStoragePromptForConversion(false);
SettingsCache::instance().setVisualDeckStorageAlwaysConvert(Qt::CheckState::Checked); SettingsCache::instance().setVisualDeckStorageAlwaysConvert(true);
} }
} else { } else {
SettingsCache::instance().setVisualDeckStorageAlwaysConvert(Qt::CheckState::Unchecked); SettingsCache::instance().setVisualDeckStorageAlwaysConvert(false);
if (conversionDialog.dontAskAgain()) { if (conversionDialog.dontAskAgain()) {
SettingsCache::instance().setVisualDeckStoragePromptForConversion(Qt::CheckState::Unchecked); SettingsCache::instance().setVisualDeckStoragePromptForConversion(false);
} else { } else {
SettingsCache::instance().setVisualDeckStoragePromptForConversion(Qt::CheckState::Checked); SettingsCache::instance().setVisualDeckStoragePromptForConversion(true);
} }
} }
} }

View file

@ -563,6 +563,13 @@ void AppearanceSettingsPage::retranslateUi()
maxFontSizeForCardsLabel.setText(tr("Maximum font size for information displayed on cards:")); maxFontSizeForCardsLabel.setText(tr("Maximum font size for information displayed on cards:"));
} }
enum visualDeckStoragePromptForConversionIndex
{
visualDeckStoragePromptForConversionIndexNone,
visualDeckStoragePromptForConversionIndexPrompt,
visualDeckStoragePromptForConversionIndexAlways
};
UserInterfaceSettingsPage::UserInterfaceSettingsPage() UserInterfaceSettingsPage::UserInterfaceSettingsPage()
{ {
// general settings and notification settings // general settings and notification settings
@ -642,24 +649,33 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
connect(&openDeckInNewTabCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), connect(&openDeckInNewTabCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setOpenDeckInNewTab); &SettingsCache::setOpenDeckInNewTab);
visualDeckStoragePromptForConversionCheckBox.setChecked(
SettingsCache::instance().getVisualDeckStoragePromptForConversion());
connect(&visualDeckStoragePromptForConversionCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setVisualDeckStoragePromptForConversion);
visualDeckStorageAlwaysConvertCheckBox.setChecked(SettingsCache::instance().getVisualDeckStorageAlwaysConvert());
connect(&visualDeckStorageAlwaysConvertCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setVisualDeckStorageAlwaysConvert);
visualDeckStorageInGameCheckBox.setChecked(SettingsCache::instance().getVisualDeckStorageInGame()); visualDeckStorageInGameCheckBox.setChecked(SettingsCache::instance().getVisualDeckStorageInGame());
connect(&visualDeckStorageInGameCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(), connect(&visualDeckStorageInGameCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance(),
&SettingsCache::setVisualDeckStorageInGame); &SettingsCache::setVisualDeckStorageInGame);
visualDeckStoragePromptForConversionSelector.addItem(""); // these will be set in retranslateUI
visualDeckStoragePromptForConversionSelector.addItem("");
visualDeckStoragePromptForConversionSelector.addItem("");
if (SettingsCache::instance().getVisualDeckStoragePromptForConversion()) {
visualDeckStoragePromptForConversionSelector.setCurrentIndex(visualDeckStoragePromptForConversionIndexPrompt);
} else if (SettingsCache::instance().getVisualDeckStorageAlwaysConvert()) {
visualDeckStoragePromptForConversionSelector.setCurrentIndex(visualDeckStoragePromptForConversionIndexAlways);
} else {
visualDeckStoragePromptForConversionSelector.setCurrentIndex(visualDeckStoragePromptForConversionIndexNone);
}
connect(&visualDeckStoragePromptForConversionSelector, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[](int index) {
SettingsCache::instance().setVisualDeckStoragePromptForConversion(
index == visualDeckStoragePromptForConversionIndexPrompt);
SettingsCache::instance().setVisualDeckStorageAlwaysConvert(
index == visualDeckStoragePromptForConversionIndexAlways);
});
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(&visualDeckStorageInGameCheckBox, 1, 0);
deckEditorGrid->addWidget(&visualDeckStorageAlwaysConvertCheckBox, 2, 0); deckEditorGrid->addWidget(&visualDeckStoragePromptForConversionLabel, 2, 0);
deckEditorGrid->addWidget(&visualDeckStorageInGameCheckBox, 3, 0); deckEditorGrid->addWidget(&visualDeckStoragePromptForConversionSelector, 2, 1);
deckEditorGroupBox = new QGroupBox; deckEditorGroupBox = new QGroupBox;
deckEditorGroupBox->setLayout(deckEditorGrid); deckEditorGroupBox->setLayout(deckEditorGrid);
@ -719,9 +735,15 @@ void UserInterfaceSettingsPage::retranslateUi()
tapAnimationCheckBox.setText(tr("&Tap/untap animation")); tapAnimationCheckBox.setText(tr("&Tap/untap animation"));
deckEditorGroupBox->setTitle(tr("Deck editor/storage settings")); deckEditorGroupBox->setTitle(tr("Deck editor/storage settings"));
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"));
visualDeckStorageAlwaysConvertCheckBox.setText(tr("Always convert if not prompted"));
visualDeckStorageInGameCheckBox.setText(tr("Use visual deck storage in game lobby")); visualDeckStorageInGameCheckBox.setText(tr("Use visual deck storage in game lobby"));
visualDeckStoragePromptForConversionLabel.setText(
tr("When adding a tag in the visual deck storage to a .txt deck:"));
visualDeckStoragePromptForConversionSelector.setItemText(visualDeckStoragePromptForConversionIndexNone,
tr("do nothing"));
visualDeckStoragePromptForConversionSelector.setItemText(visualDeckStoragePromptForConversionIndexPrompt,
tr("ask to convert to .cod"));
visualDeckStoragePromptForConversionSelector.setItemText(visualDeckStoragePromptForConversionIndexAlways,
tr("always convert to .cod"));
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

@ -148,8 +148,8 @@ private:
QCheckBox useTearOffMenusCheckBox; QCheckBox useTearOffMenusCheckBox;
QCheckBox tapAnimationCheckBox; QCheckBox tapAnimationCheckBox;
QCheckBox openDeckInNewTabCheckBox; QCheckBox openDeckInNewTabCheckBox;
QCheckBox visualDeckStoragePromptForConversionCheckBox; QLabel visualDeckStoragePromptForConversionLabel;
QCheckBox visualDeckStorageAlwaysConvertCheckBox; QComboBox visualDeckStoragePromptForConversionSelector;
QCheckBox visualDeckStorageInGameCheckBox; QCheckBox visualDeckStorageInGameCheckBox;
QLabel rewindBufferingMsLabel; QLabel rewindBufferingMsLabel;
QSpinBox rewindBufferingMsBox; QSpinBox rewindBufferingMsBox;

View file

@ -736,13 +736,13 @@ void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visual
emit visualDeckStorageUnusedColorIdentitiesOpacityChanged(visualDeckStorageUnusedColorIdentitiesOpacity); emit visualDeckStorageUnusedColorIdentitiesOpacityChanged(visualDeckStorageUnusedColorIdentitiesOpacity);
} }
void SettingsCache::setVisualDeckStoragePromptForConversion(QT_STATE_CHANGED_T _visualDeckStoragePromptForConversion) void SettingsCache::setVisualDeckStoragePromptForConversion(bool _visualDeckStoragePromptForConversion)
{ {
visualDeckStoragePromptForConversion = _visualDeckStoragePromptForConversion; visualDeckStoragePromptForConversion = _visualDeckStoragePromptForConversion;
settings->setValue("interface/visualdeckstoragepromptforconversion", visualDeckStoragePromptForConversion); settings->setValue("interface/visualdeckstoragepromptforconversion", visualDeckStoragePromptForConversion);
} }
void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T _visualDeckStorageAlwaysConvert) void SettingsCache::setVisualDeckStorageAlwaysConvert(bool _visualDeckStorageAlwaysConvert)
{ {
visualDeckStorageAlwaysConvert = _visualDeckStorageAlwaysConvert; visualDeckStorageAlwaysConvert = _visualDeckStorageAlwaysConvert;
settings->setValue("interface/visualdeckstoragealwaysconvert", visualDeckStorageAlwaysConvert); settings->setValue("interface/visualdeckstoragealwaysconvert", visualDeckStorageAlwaysConvert);

View file

@ -798,8 +798,8 @@ public slots:
void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize); void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize);
void setVisualDeckStorageDrawUnusedColorIdentities(QT_STATE_CHANGED_T _visualDeckStorageDrawUnusedColorIdentities); void setVisualDeckStorageDrawUnusedColorIdentities(QT_STATE_CHANGED_T _visualDeckStorageDrawUnusedColorIdentities);
void setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity); void setVisualDeckStorageUnusedColorIdentitiesOpacity(int _visualDeckStorageUnusedColorIdentitiesOpacity);
void setVisualDeckStoragePromptForConversion(QT_STATE_CHANGED_T _visualDeckStoragePromptForConversion); void setVisualDeckStoragePromptForConversion(bool _visualDeckStoragePromptForConversion);
void setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T _visualDeckStorageAlwaysConvert); void setVisualDeckStorageAlwaysConvert(bool _visualDeckStorageAlwaysConvert);
void setVisualDeckStorageInGame(QT_STATE_CHANGED_T value); 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);

View file

@ -234,11 +234,10 @@ void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(
int /* _visualDeckStorageUnusedColorIdentitiesOpacity */) int /* _visualDeckStorageUnusedColorIdentitiesOpacity */)
{ {
} }
void SettingsCache::setVisualDeckStoragePromptForConversion( void SettingsCache::setVisualDeckStoragePromptForConversion(bool /* _visualDeckStoragePromptForConversion */)
QT_STATE_CHANGED_T /* _visualDeckStoragePromptForConversion */)
{ {
} }
void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */) void SettingsCache::setVisualDeckStorageAlwaysConvert(bool /* _visualDeckStorageAlwaysConvert */)
{ {
} }
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */) void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */)

View file

@ -238,11 +238,10 @@ void SettingsCache::setVisualDeckStorageUnusedColorIdentitiesOpacity(
int /* _visualDeckStorageUnusedColorIdentitiesOpacity */) int /* _visualDeckStorageUnusedColorIdentitiesOpacity */)
{ {
} }
void SettingsCache::setVisualDeckStoragePromptForConversion( void SettingsCache::setVisualDeckStoragePromptForConversion(bool /* _visualDeckStoragePromptForConversion */)
QT_STATE_CHANGED_T /* _visualDeckStoragePromptForConversion */)
{ {
} }
void SettingsCache::setVisualDeckStorageAlwaysConvert(QT_STATE_CHANGED_T /* _visualDeckStorageAlwaysConvert */) void SettingsCache::setVisualDeckStorageAlwaysConvert(bool /* _visualDeckStorageAlwaysConvert */)
{ {
} }
void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */) void SettingsCache::setVisualDeckStorageInGame(QT_STATE_CHANGED_T /* value */)