Merge branch 'master' into tooomm-qt5

This commit is contained in:
tooomm 2026-05-10 16:03:54 +02:00
commit e0b3edc9b8
488 changed files with 28527 additions and 76214 deletions

View file

@ -34,3 +34,17 @@ bool CardDatabaseSettings::isKnown(QString shortName) const
{
return getValue("isknown", "sets", std::move(shortName)).toBool();
}
void CardDatabaseSettings::saveSets(const QVector<ICardSetPriorityController::SetSaveData> &data)
{
batchWrite([&](QSettings &s) {
s.beginGroup("sets");
for (const auto &entry : data) {
s.beginGroup(entry.shortName);
s.setValue("sortkey", entry.sortKey);
s.setValue("enabled", entry.enabled);
s.endGroup();
}
s.endGroup();
});
}

View file

@ -26,6 +26,8 @@ public:
bool isEnabled(QString shortName) const override;
bool isKnown(QString shortName) const override;
void saveSets(const QVector<SetSaveData> &data) override;
private:
explicit CardDatabaseSettings(const QString &settingPath, QObject *parent = nullptr);
};

View file

@ -10,6 +10,7 @@ SettingsManager::SettingsManager(const QString &_settingPath,
QSettings SettingsManager::getSettings() const
{
// Do not store the QSettings instance in a field, as that is not threadsafe (see #6747)
return QSettings(settingPath, QSettings::IniFormat);
}
@ -158,6 +159,15 @@ QVariant SettingsManager::getValue(const QString &name, const QString &group, co
return value;
}
void SettingsManager::batchWrite(std::function<void(QSettings &)> batchWriteFunction)
{
auto settings = getSettings();
settings.setAtomicSyncRequired(false);
batchWriteFunction(settings);
settings.sync(); // single flush
settings.setAtomicSyncRequired(true);
}
/**
* Calls sync on the underlying QSettings object
*/
@ -166,4 +176,4 @@ void SettingsManager::sync()
auto settings = getSettings();
settings.sync();
}
}

View file

@ -14,13 +14,17 @@
class SettingsManager : public QObject
{
Q_OBJECT
public:
explicit SettingsManager(const QString &settingPath,
const QString &defaultGroup = QString(),
const QString &defaultSubGroup = QString(),
QObject *parent = nullptr);
QVariant getValue(const QString &name) const;
QVariant getValue(const QString &name, const QString &group, const QString &subGroup = QString()) const;
void batchWrite(std::function<void(QSettings &)> batchWriteFunction);
void sync();
protected:
@ -31,9 +35,12 @@ protected:
QSettings getSettings() const;
void setValue(const QVariant &value, const QString &name);
void
setValue(const QVariant &value, const QString &name, const QString &group, const QString &subGroup = QString());
void deleteValue(const QString &name);
void deleteValue(const QString &name, const QString &group, const QString &subGroup = QString());
};