[Settings] Split cache_settings monolith into multiple SettingsManager sub-classes (#7050)

* [Settings] Split cache_settings into multiple files

Took 9 minutes

Took 4 minutes

* [Settings] Fwd declare settings classes in cache_settings

Took 15 minutes

* Fix oracle includes.

Took 8 minutes

* Address comments, fix windows CI

Took 8 minutes

* fix copy constructor visibility

Took 3 minutes

* lint

Took 2 minutes

* Fix native format tests.

Took 5 minutes

* Remove test header guard

Took 4 seconds

* Remove tests invalid in CI environ

Took 24 seconds

* Adjust to rebase.

Took 11 minutes

* Change settings file name.

Took 8 minutes

---------

Co-authored-by: Lukas Brübach <lukas.bruebach@bdosecurity.de>
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-07-27 11:25:39 +02:00 committed by GitHub
parent cf0b453e75
commit 12f0f59453
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
166 changed files with 5589 additions and 3066 deletions

View file

@ -9,6 +9,10 @@
#include <QGridLayout>
#include <QLineEdit>
#include <QTranslator>
#include <libcockatrice/settings/paths_settings.h>
#include <libcockatrice/settings/personal_settings.h>
#include <libcockatrice/settings/updates_settings.h>
#include <libcockatrice/utility/macros.h>
enum startupCardUpdateCheckBehaviorIndex
{
@ -50,17 +54,18 @@ GeneralSettingsPage::GeneralSettingsPage()
// version settings
SettingsCache &settings = SettingsCache::instance();
startupUpdateCheckCheckBox.setChecked(settings.getCheckUpdatesOnStartup());
startupUpdateCheckCheckBox.setChecked(settings.updates().getCheckUpdatesOnStartup());
connect(&startupUpdateCheckCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings,
&SettingsCache::setCheckUpdatesOnStartup);
connect(&startupUpdateCheckCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings.updates(),
&UpdatesSettings::setCheckUpdatesOnStartup);
updateNotificationCheckBox.setChecked(settings.getNotifyAboutUpdates());
connect(&updateNotificationCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings, &SettingsCache::setNotifyAboutUpdate);
connect(&updateNotificationCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings.updates(),
&UpdatesSettings::setNotifyAboutUpdates);
connect(&newVersionOracleCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings,
&SettingsCache::setNotifyAboutNewVersion);
connect(&newVersionOracleCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings.updates(),
&UpdatesSettings::setNotifyAboutNewVersion);
auto *versionGrid = new QGridLayout;
versionGrid->addWidget(&updateReleaseChannelLabel, 0, 0);
@ -76,9 +81,9 @@ GeneralSettingsPage::GeneralSettingsPage()
startupCardUpdateCheckBehaviorSelector.addItem(""); // these will be set in retranslateUI
startupCardUpdateCheckBehaviorSelector.addItem("");
startupCardUpdateCheckBehaviorSelector.addItem("");
if (SettingsCache::instance().getStartupCardUpdateCheckPromptForUpdate()) {
if (SettingsCache::instance().updates().getStartupCardUpdateCheckPromptForUpdate()) {
startupCardUpdateCheckBehaviorSelector.setCurrentIndex(startupCardUpdateCheckBehaviorIndexPrompt);
} else if (SettingsCache::instance().getStartupCardUpdateCheckAlwaysUpdate()) {
} else if (SettingsCache::instance().updates().getStartupCardUpdateCheckAlwaysUpdate()) {
startupCardUpdateCheckBehaviorSelector.setCurrentIndex(startupCardUpdateCheckBehaviorIndexAlways);
} else {
startupCardUpdateCheckBehaviorSelector.setCurrentIndex(startupCardUpdateCheckBehaviorIndexNone);
@ -86,20 +91,20 @@ GeneralSettingsPage::GeneralSettingsPage()
connect(&startupCardUpdateCheckBehaviorSelector, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
[](int index) {
SettingsCache::instance().setStartupCardUpdateCheckPromptForUpdate(
SettingsCache::instance().updates().setStartupCardUpdateCheckPromptForUpdate(
index == startupCardUpdateCheckBehaviorIndexPrompt);
SettingsCache::instance().setStartupCardUpdateCheckAlwaysUpdate(
SettingsCache::instance().updates().setStartupCardUpdateCheckAlwaysUpdate(
index == startupCardUpdateCheckBehaviorIndexAlways);
});
cardUpdateCheckIntervalSpinBox.setMinimum(1);
cardUpdateCheckIntervalSpinBox.setMaximum(30);
cardUpdateCheckIntervalSpinBox.setValue(settings.getCardUpdateCheckInterval());
cardUpdateCheckIntervalSpinBox.setValue(settings.updates().getCardUpdateCheckInterval());
connect(&cardUpdateCheckIntervalSpinBox, qOverload<int>(&QSpinBox::valueChanged), &settings,
&SettingsCache::setCardUpdateCheckInterval);
connect(&cardUpdateCheckIntervalSpinBox, qOverload<int>(&QSpinBox::valueChanged), &settings.updates(),
&UpdatesSettings::setCardUpdateCheckInterval);
newVersionOracleCheckBox.setChecked(settings.getNotifyAboutNewVersion());
newVersionOracleCheckBox.setChecked(settings.updates().getNotifyAboutNewVersion());
auto *cardDatabaseGrid = new QGridLayout;
cardDatabaseGrid->addWidget(&startupCardUpdateCheckBehaviorLabel, 0, 0);
@ -112,9 +117,9 @@ GeneralSettingsPage::GeneralSettingsPage()
cardDatabaseGroupBox->setLayout(cardDatabaseGrid);
// startup settings
showTipsOnStartup.setChecked(settings.getShowTipsOnStartup());
showTipsOnStartup.setChecked(settings.personal().getShowTipsOnStartup());
connect(&showTipsOnStartup, &QCheckBox::clicked, &settings, &SettingsCache::setShowTipsOnStartup);
connect(&showTipsOnStartup, &QCheckBox::clicked, &settings.personal(), &PersonalSettings::setShowTipsOnStartup);
auto *startupGrid = new QGridLayout;
startupGrid->addWidget(&showTipsOnStartup, 0, 0, 1, 2);
@ -123,22 +128,22 @@ GeneralSettingsPage::GeneralSettingsPage()
startupGroupBox->setLayout(startupGrid);
// paths settings
deckPathEdit = new QLineEdit(settings.getDeckPath());
deckPathEdit = new QLineEdit(settings.paths().getDeckPath());
deckPathEdit->setReadOnly(true);
auto *deckPathButton = new QPushButton("...");
connect(deckPathButton, &QPushButton::clicked, this, &GeneralSettingsPage::deckPathButtonClicked);
filtersPathEdit = new QLineEdit(settings.getFiltersPath());
filtersPathEdit = new QLineEdit(settings.paths().getFiltersPath());
filtersPathEdit->setReadOnly(true);
auto *filtersPathButton = new QPushButton("...");
connect(filtersPathButton, &QPushButton::clicked, this, &GeneralSettingsPage::filtersPathButtonClicked);
replaysPathEdit = new QLineEdit(settings.getReplaysPath());
replaysPathEdit = new QLineEdit(settings.paths().getReplaysPath());
replaysPathEdit->setReadOnly(true);
auto *replaysPathButton = new QPushButton("...");
connect(replaysPathButton, &QPushButton::clicked, this, &GeneralSettingsPage::replaysPathButtonClicked);
picsPathEdit = new QLineEdit(settings.getPicsPath());
picsPathEdit = new QLineEdit(settings.paths().getPicsPath());
picsPathEdit->setReadOnly(true);
auto *picsPathButton = new QPushButton("...");
connect(picsPathButton, &QPushButton::clicked, this, &GeneralSettingsPage::picsPathButtonClicked);
@ -224,13 +229,14 @@ GeneralSettingsPage::GeneralSettingsPage()
GeneralSettingsPage::retranslateUi();
// connect the ReleaseChannel combo box only after the entries are inserted in retranslateUi
connect(&updateReleaseChannelBox, qOverload<int>(&QComboBox::currentIndexChanged), &settings,
&SettingsCache::setUpdateReleaseChannelIndex);
connect(&updateReleaseChannelBox, qOverload<int>(&QComboBox::currentIndexChanged), &settings.updates(),
&UpdatesSettings::setUpdateReleaseChannelIndex);
updateReleaseChannelBox.setCurrentIndex(settings.getUpdateReleaseChannelIndex());
setLayout(mainLayout);
connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &GeneralSettingsPage::retranslateUi);
connect(&SettingsCache::instance().personal(), &PersonalSettings::langChanged, this,
&GeneralSettingsPage::retranslateUi);
retranslateUi();
}
@ -264,7 +270,7 @@ void GeneralSettingsPage::deckPathButtonClicked()
}
deckPathEdit->setText(path);
SettingsCache::instance().setDeckPath(path);
SettingsCache::instance().paths().setDeckPath(path);
}
void GeneralSettingsPage::filtersPathButtonClicked()
@ -275,7 +281,7 @@ void GeneralSettingsPage::filtersPathButtonClicked()
}
filtersPathEdit->setText(path);
SettingsCache::instance().setFiltersPath(path);
SettingsCache::instance().paths().setFiltersPath(path);
}
void GeneralSettingsPage::replaysPathButtonClicked()
@ -286,7 +292,7 @@ void GeneralSettingsPage::replaysPathButtonClicked()
}
replaysPathEdit->setText(path);
SettingsCache::instance().setReplaysPath(path);
SettingsCache::instance().paths().setReplaysPath(path);
}
void GeneralSettingsPage::picsPathButtonClicked()
@ -297,7 +303,7 @@ void GeneralSettingsPage::picsPathButtonClicked()
}
picsPathEdit->setText(path);
SettingsCache::instance().setPicsPath(path);
SettingsCache::instance().paths().setPicsPath(path);
}
void GeneralSettingsPage::cardDatabasePathButtonClicked()
@ -308,7 +314,7 @@ void GeneralSettingsPage::cardDatabasePathButtonClicked()
}
cardDatabasePathEdit->setText(path);
SettingsCache::instance().setCardDatabasePath(path);
SettingsCache::instance().paths().setCardDatabasePath(path);
}
void GeneralSettingsPage::customCardDatabaseButtonClicked()
@ -319,7 +325,7 @@ void GeneralSettingsPage::customCardDatabaseButtonClicked()
}
customCardDatabasePathEdit->setText(path);
SettingsCache::instance().setCustomCardDatabasePath(path);
SettingsCache::instance().paths().setCustomCardDatabasePath(path);
}
void GeneralSettingsPage::tokenDatabasePathButtonClicked()
@ -330,16 +336,16 @@ void GeneralSettingsPage::tokenDatabasePathButtonClicked()
}
tokenDatabasePathEdit->setText(path);
SettingsCache::instance().setTokenDatabasePath(path);
SettingsCache::instance().paths().setTokenDatabasePath(path);
}
void GeneralSettingsPage::resetAllPathsClicked()
{
SettingsCache &settings = SettingsCache::instance();
settings.resetPaths();
deckPathEdit->setText(settings.getDeckPath());
replaysPathEdit->setText(settings.getReplaysPath());
picsPathEdit->setText(settings.getPicsPath());
deckPathEdit->setText(settings.paths().getDeckPath());
replaysPathEdit->setText(settings.paths().getReplaysPath());
picsPathEdit->setText(settings.paths().getPicsPath());
cardDatabasePathEdit->setText(settings.getCardDatabasePath());
customCardDatabasePathEdit->setText(settings.getCustomCardDatabasePath());
tokenDatabasePathEdit->setText(settings.getTokenDatabasePath());
@ -348,7 +354,7 @@ void GeneralSettingsPage::resetAllPathsClicked()
void GeneralSettingsPage::languageBoxChanged(int index)
{
SettingsCache::instance().setLang(languageBox.itemData(index).toString());
SettingsCache::instance().personal().setLang(languageBox.itemData(index).toString());
}
void GeneralSettingsPage::retranslateUi()
@ -391,7 +397,7 @@ void GeneralSettingsPage::retranslateUi()
const auto &settings = SettingsCache::instance();
QDate lastCheckDate = settings.getLastCardUpdateCheck();
QDate lastCheckDate = settings.updates().getLastCardUpdateCheck();
int daysAgo = lastCheckDate.daysTo(QDate::currentDate());
lastCardUpdateCheckDateLabel.setText(