tMove Passilic configuration to correct location - sailfish-safe - Sailfish frontend for safe(1)
 (HTM) git clone git://git.z3bra.org/sailfish-safe.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit bab48e6dcb7456b06b947f5fb8fb159622cc8f6f
 (DIR) parent d1856ff7481b08150f5998fdbc342c6399f2ab85
 (HTM) Author: Daniel Vrátil <dvratil@kde.org>
       Date:   Sun, 17 Feb 2019 12:15:57 +0100
       
       Move Passilic configuration to correct location
       
       Harbour requires the config be stored in ~/.config/harbour-passilic.
       
       Diffstat:
         M src/settings.cpp                    |      32 +++++++++++++++++++++++++++----
         M src/settings.h                      |       2 +-
       
       2 files changed, 29 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/src/settings.cpp b/src/settings.cpp
       t@@ -17,9 +17,33 @@
        
        #include "settings.h"
        
       +#include <QStandardPaths>
       +#include <QDir>
       +
        std::unique_ptr<Settings> Settings::kInstance = {};
        
       -Settings::Settings(): QObject() {}
       +static const QString OldSettingsDir = QStringLiteral("Daniel Vrátil");
       +static const QString SettingsDir = QStringLiteral("harbour-passilic");
       +static const QString SettingsName = QStringLiteral("passilic");
       +
       +Settings::Settings()
       +    : QObject()
       +{
       +    // Migrate config directory to new location
       +    const auto oldPath = QStandardPaths::locate(QStandardPaths::ConfigLocation,
       +                                                OldSettingsDir,
       +                                                QStandardPaths::LocateDirectory);
       +    const QDir newDir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)
       +                                                + QLatin1Char('/') + SettingsDir);
       +    if (!oldPath.isEmpty() && !newDir.exists()) {
       +        qDebug("Migrating Passilic configuration from %s to %s",
       +               qUtf8Printable(oldPath),
       +               qUtf8Printable(newDir.absolutePath()));
       +        QDir().rename(oldPath, newDir.absolutePath());
       +    }
       +
       +    mSettings.reset(new QSettings(SettingsDir, SettingsName));
       +}
        
        Settings *Settings::self()
        {
       t@@ -36,18 +60,18 @@ void Settings::destroy()
        
        void Settings::save()
        {
       -    mSettings.sync();
       +    mSettings->sync();
        }
        
        #define IMPLEMENT_OPTION(type, lc, uc, name, defValue) \
            void Settings::set##uc(type val) { \
                if (lc() != val) { \
       -            mSettings.setValue(QStringLiteral(name), val); \
       +            mSettings->setValue(QStringLiteral(name), val); \
                    Q_EMIT lc##Changed(); \
                } \
            } \
            type Settings::lc() const { \
       -        return mSettings.value(QStringLiteral(name), defValue).value<type>(); \
       +        return mSettings->value(QStringLiteral(name), defValue).value<type>(); \
            }
        
        IMPLEMENT_OPTION(int, expirationTimeout, ExpirationTimeout, "expirationTimeout", 45)
 (DIR) diff --git a/src/settings.h b/src/settings.h
       t@@ -43,7 +43,7 @@ public:
        
        private:
            explicit Settings();
       -    QSettings mSettings;
       +    std::unique_ptr<QSettings> mSettings;
        
            static std::unique_ptr<Settings> kInstance;
        };