fix: clear settings should wipe the state file too

This commit is contained in:
ElCruncharino 2026-09-02 18:24:37 -04:00 committed by Nick Bolton
parent 13c5655976
commit 0baecf3fa7
5 changed files with 19 additions and 3 deletions

View file

@ -60,6 +60,12 @@ void Settings::setStateFile(const QString &stateFile)
qInfo().noquote() << "state file changed:" << instance()->m_stateSettings->fileName(); qInfo().noquote() << "state file changed:" << instance()->m_stateSettings->fileName();
} }
void Settings::clearState()
{
instance()->m_stateSettings->clear();
instance()->m_stateSettings->sync();
}
Settings::Settings(QObject *parent) : QObject(parent), m_settingsWatcher{new QFileSystemWatcher(this)} Settings::Settings(QObject *parent) : QObject(parent), m_settingsWatcher{new QFileSystemWatcher(this)}
{ {
QString fileToLoad; QString fileToLoad;

View file

@ -175,6 +175,7 @@ public:
static Settings *instance(); static Settings *instance();
static void setSettingsFile(const QString &settingsFile = QString()); static void setSettingsFile(const QString &settingsFile = QString());
static void setStateFile(const QString &stateFile = QString()); static void setStateFile(const QString &stateFile = QString());
static void clearState();
static void setValue(const QString &key = QString(), const QVariant &value = QVariant()); static void setValue(const QString &key = QString(), const QVariant &value = QVariant());
static QVariant value(const QString &key = QString()); static QVariant value(const QString &key = QString());
static void restoreDefaultSettings(); static void restoreDefaultSettings();

View file

@ -34,9 +34,7 @@ void clearSettings(bool enableRestart)
{ {
qDebug("clearing settings"); qDebug("clearing settings");
Settings::proxy().clear(); Settings::proxy().clear();
Settings::clearState();
// Reset the windowGeometry
Settings::setValue(Settings::Gui::WindowGeometry);
// save but do not emit saving signal which will prevent the current state of // save but do not emit saving signal which will prevent the current state of
// the app config and server configs from being applied. // the app config and server configs from being applied.

View file

@ -101,4 +101,14 @@ void SettingsTests::checkCleanScreenName_LongName()
QCOMPARE(Settings::value(Settings::Core::ComputerName).toString(), expected); QCOMPARE(Settings::value(Settings::Core::ComputerName).toString(), expected);
} }
void SettingsTests::checkClearState()
{
Settings::setValue(Settings::Gui::WindowGeometry, QRect(1, 2, 3, 4));
QVERIFY(Settings::value(Settings::Gui::WindowGeometry).toRect().isValid());
Settings::clearState();
QVERIFY(!Settings::value(Settings::Gui::WindowGeometry).toRect().isValid());
}
QTEST_MAIN(SettingsTests) QTEST_MAIN(SettingsTests)

View file

@ -24,6 +24,7 @@ private Q_SLOTS:
void checkValidSettings(); void checkValidSettings();
void checkCleanScreenName(); void checkCleanScreenName();
void checkCleanScreenName_LongName(); void checkCleanScreenName_LongName();
void checkClearState();
private: private:
inline static const QString m_settingsPathTemp = QStringLiteral("tmp/test"); inline static const QString m_settingsPathTemp = QStringLiteral("tmp/test");