diff --git a/cockatrice/src/client/settings/card_counter_settings.cpp b/cockatrice/src/client/settings/card_counter_settings.cpp index 662ae0c7d..d4030c174 100644 --- a/cockatrice/src/client/settings/card_counter_settings.cpp +++ b/cockatrice/src/client/settings/card_counter_settings.cpp @@ -5,7 +5,7 @@ #include CardCounterSettings::CardCounterSettings(const QString &settingsPath, QObject *parent) - : SettingsManager(settingsPath + "global.ini", "cards", "counters", parent) + : SettingsManager(settingsPath + "card_counters.ini", "cards", "counters", parent) { } diff --git a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp index 879b6c24e..37dc9a0a0 100644 --- a/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp +++ b/libcockatrice_settings/libcockatrice/settings/settings_migration.cpp @@ -253,6 +253,25 @@ static void migrateCardsDisplaySettings(const QString &settingsPath, QSettings & } } +static void migrateCardCounterSettings(const QString &settingsPath, QSettings &globalIni) +{ + QStringList counterKeys; + const QStringList allKeys = globalIni.allKeys(); + for (const auto &key : allKeys) { + if (key.startsWith("cards/counters/")) { + counterKeys.append(key); + } + } + if (counterKeys.isEmpty()) { + return; + } + + QSettings countersIni(settingsPath + "card_counters.ini", QSettings::IniFormat); + for (const auto &key : counterKeys) { + countersIni.setValue(key, globalIni.value(key)); + } +} + static void migrateInterfaceSettings(const QString &settingsPath, QSettings &globalIni) { const QMap interfaceKeyMap = { @@ -451,6 +470,7 @@ static void migrateVisualDeckStorageSettings(const QString &settingsPath, QSetti for (auto it = vdsKeyMap.constBegin(); it != vdsKeyMap.constEnd(); ++it) { if (globalIni.contains(it.key())) { hasAny = true; + break; } } if (!hasAny) { @@ -659,6 +679,7 @@ bool SettingsMigration::migrateSettingsFromGlobalIni(const QString &settingsPath migratePersonalSettings(settingsPath, globalIni); migrateDownloadSettings(settingsPath, globalIni); migrateCardsDisplaySettings(settingsPath, globalIni); + migrateCardCounterSettings(settingsPath, globalIni); migrateInterfaceSettings(settingsPath, globalIni); migrateAppearanceSettings(settingsPath, globalIni); migrateNetworkSettings(settingsPath, globalIni); diff --git a/tests/settings/settings_migration_test.cpp b/tests/settings/settings_migration_test.cpp index a004cd9e6..636dbfb2a 100644 --- a/tests/settings/settings_migration_test.cpp +++ b/tests/settings/settings_migration_test.cpp @@ -1,4 +1,5 @@ #include "gtest/gtest.h" +#include #include #include #include @@ -191,6 +192,8 @@ TEST_F(SettingsMigrationTest, MigratesAllSettingsGroups) g.setValue("cards/printingselectorcardsize", 90); g.setValue("cards/printingselectorsortorder", 3); g.setValue("cards/printingselectornavigationbuttonsvisible", false); + // card counters (migrate into card_counters.ini) + g.setValue("cards/counters/0/color", QColor(Qt::red)); // interface g.setValue("interface/usetearoffmenus", true); @@ -355,6 +358,10 @@ TEST_F(SettingsMigrationTest, MigratesAllSettingsGroups) ASSERT_EQ(readFromIni("cards_display.ini", "cards/cardSize/archidektPreview"), QVariant(50)); ASSERT_EQ(readFromIni("cards_display.ini", "cards/cardSize/sampleHandSize"), QVariant(5)); + ASSERT_TRUE(fileExists("card_counters.ini")); + ASSERT_EQ(readFromIni("card_counters.ini", "cards/counters/0/color").toString(), QColor(Qt::red).name()); + ASSERT_FALSE(readFromIni("global.ini", "cards/counters/0/color").isValid()); + ASSERT_TRUE(fileExists("interface.ini")); ASSERT_EQ(readFromIni("interface.ini", "interface/useTearOffMenus"), QVariant(true)); ASSERT_EQ(readFromIni("interface.ini", "interface/cardViewInitialRowsMax"), QVariant(8));