Fix card counters writing to global

This commit is contained in:
Lukas Brübach 2026-08-05 20:44:40 +02:00
parent 2ca910e264
commit cf79f38b72
3 changed files with 29 additions and 1 deletions

View file

@ -5,7 +5,7 @@
#include <QtMath> #include <QtMath>
CardCounterSettings::CardCounterSettings(const QString &settingsPath, QObject *parent) CardCounterSettings::CardCounterSettings(const QString &settingsPath, QObject *parent)
: SettingsManager(settingsPath + "global.ini", "cards", "counters", parent) : SettingsManager(settingsPath + "card_counters.ini", "cards", "counters", parent)
{ {
} }

View file

@ -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) static void migrateInterfaceSettings(const QString &settingsPath, QSettings &globalIni)
{ {
const QMap<QString, QString> interfaceKeyMap = { const QMap<QString, QString> interfaceKeyMap = {
@ -451,6 +470,7 @@ static void migrateVisualDeckStorageSettings(const QString &settingsPath, QSetti
for (auto it = vdsKeyMap.constBegin(); it != vdsKeyMap.constEnd(); ++it) { for (auto it = vdsKeyMap.constBegin(); it != vdsKeyMap.constEnd(); ++it) {
if (globalIni.contains(it.key())) { if (globalIni.contains(it.key())) {
hasAny = true; hasAny = true;
break;
} }
} }
if (!hasAny) { if (!hasAny) {
@ -659,6 +679,7 @@ bool SettingsMigration::migrateSettingsFromGlobalIni(const QString &settingsPath
migratePersonalSettings(settingsPath, globalIni); migratePersonalSettings(settingsPath, globalIni);
migrateDownloadSettings(settingsPath, globalIni); migrateDownloadSettings(settingsPath, globalIni);
migrateCardsDisplaySettings(settingsPath, globalIni); migrateCardsDisplaySettings(settingsPath, globalIni);
migrateCardCounterSettings(settingsPath, globalIni);
migrateInterfaceSettings(settingsPath, globalIni); migrateInterfaceSettings(settingsPath, globalIni);
migrateAppearanceSettings(settingsPath, globalIni); migrateAppearanceSettings(settingsPath, globalIni);
migrateNetworkSettings(settingsPath, globalIni); migrateNetworkSettings(settingsPath, globalIni);

View file

@ -1,4 +1,5 @@
#include "gtest/gtest.h" #include "gtest/gtest.h"
#include <QColor>
#include <QCoreApplication> #include <QCoreApplication>
#include <QDate> #include <QDate>
#include <QDir> #include <QDir>
@ -191,6 +192,8 @@ TEST_F(SettingsMigrationTest, MigratesAllSettingsGroups)
g.setValue("cards/printingselectorcardsize", 90); g.setValue("cards/printingselectorcardsize", 90);
g.setValue("cards/printingselectorsortorder", 3); g.setValue("cards/printingselectorsortorder", 3);
g.setValue("cards/printingselectornavigationbuttonsvisible", false); g.setValue("cards/printingselectornavigationbuttonsvisible", false);
// card counters (migrate into card_counters.ini)
g.setValue("cards/counters/0/color", QColor(Qt::red));
// interface // interface
g.setValue("interface/usetearoffmenus", true); 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/archidektPreview"), QVariant(50));
ASSERT_EQ(readFromIni("cards_display.ini", "cards/cardSize/sampleHandSize"), QVariant(5)); 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_TRUE(fileExists("interface.ini"));
ASSERT_EQ(readFromIni("interface.ini", "interface/useTearOffMenus"), QVariant(true)); ASSERT_EQ(readFromIni("interface.ini", "interface/useTearOffMenus"), QVariant(true));
ASSERT_EQ(readFromIni("interface.ini", "interface/cardViewInitialRowsMax"), QVariant(8)); ASSERT_EQ(readFromIni("interface.ini", "interface/cardViewInitialRowsMax"), QVariant(8));