[Tutorial] Seed tutorialCompleted for existing installs at startup

This commit is contained in:
Lukas Brübach 2026-10-11 17:46:33 +02:00
parent 121ed9a8a6
commit 61a2923f40
2 changed files with 12 additions and 8 deletions

View file

@ -113,6 +113,12 @@ SettingsCache::SettingsCache()
QString settingsPath = getSettingsPath();
// Decide once, before any migration writes new files, whether this is an
// existing install. Fresh installs have no *.ini files and no legacy
// NativeFormat keys; upgrades have one or the other.
const bool hadExistingSettings =
!QDir(settingsPath).entryList({"*.ini"}, QDir::Files).isEmpty() || !QSettings().allKeys().isEmpty();
settings = new QSettings(settingsPath + "global.ini", QSettings::IniFormat, this);
// Both migrations below overwrite per-domain files in place, so snapshot the whole settings
@ -154,6 +160,12 @@ SettingsCache::SettingsCache()
personalSettings = new PersonalSettings(settingsPath, this);
cardsDisplaySettings = new CardsDisplaySettings(settingsPath, this);
interfaceSettings = new InterfaceSettings(settingsPath, this);
if (hadExistingSettings) {
QSettings iface(settingsPath + "interface.ini", QSettings::IniFormat);
if (!iface.contains("interface/tutorialCompleted")) {
interfaceSettings->setTutorialCompleted(true);
}
}
deckEditorSettings = new DeckEditorSettings(settingsPath, this);
pathsSettings = new PathsSettings(settingsPath, this);
visualDeckStorageSettings = new VisualDeckStorageSettings(settingsPath, this);

View file

@ -205,14 +205,6 @@ bool InterfaceSettings::getShowGameSelectorFilterToolbar() const
bool InterfaceSettings::getTutorialCompleted() const
{
// Upgrading users have settings files but no tutorial key yet: treat the tutorial as seen so they are
// not overlaid on upgrade. Genuinely new installs have no settings files at all, so they still get it.
if (!getSettings().contains("interface/tutorialCompleted")) {
QDir settingsDir = QFileInfo(settingPath).dir();
if (!settingsDir.entryList({"*.ini"}, QDir::Files).isEmpty()) {
return true;
}
}
return getValue("tutorialCompleted", QString(), QString(), false).toBool();
}