From abdf15aaafdcdf12574013a0009ef33cfc6db13d Mon Sep 17 00:00:00 2001 From: Gres Date: Sun, 10 Jan 2021 16:13:45 +0300 Subject: [PATCH] Explicit portable mode paths --- src/settings.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/settings.cpp b/src/settings.cpp index 6ee3fda..d9f138f 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -9,7 +9,10 @@ namespace { -const QString iniFileName = "settings.ini"; +const QString iniFileName() +{ + return QApplication::applicationDirPath() + "/" + "settings.ini"; +} const QString qs_guiGroup = "GUI"; const QString qs_captureHotkey = "captureHotkey"; @@ -134,11 +137,12 @@ void cleanupOutdated(QSettings& settings) void Settings::save() const { std::unique_ptr ptr; + const auto iniName = iniFileName(); if (isPortable_) { - ptr = std::make_unique(iniFileName, QSettings::IniFormat); + ptr = std::make_unique(iniName, QSettings::IniFormat); } else { ptr = std::make_unique(); - QFile::remove(iniFileName); + QFile::remove(iniName); } auto& settings = *ptr; @@ -213,8 +217,9 @@ void Settings::save() const void Settings::load() { std::unique_ptr ptr; - if (QFile::exists(iniFileName)) { - ptr = std::make_unique(iniFileName, QSettings::IniFormat); + const auto iniName = iniFileName(); + if (QFile::exists(iniName)) { + ptr = std::make_unique(iniName, QSettings::IniFormat); setPortable(true); } else { ptr = std::make_unique(); @@ -309,8 +314,9 @@ void Settings::load() void Settings::saveLastUpdateCheck() { std::unique_ptr ptr; - if (QFile::exists(iniFileName)) { - ptr = std::make_unique(iniFileName, QSettings::IniFormat); + const auto iniName = iniFileName(); + if (QFile::exists(iniName)) { + ptr = std::make_unique(iniName, QSettings::IniFormat); } else { ptr = std::make_unique(); } @@ -331,7 +337,7 @@ void Settings::setPortable(bool isPortable) isPortable_ = isPortable; const auto baseDataPath = - (isPortable ? QDir().absolutePath() + (isPortable ? QApplication::applicationDirPath() : QStandardPaths::writableLocation( QStandardPaths::AppDataLocation)) + "/assets";