diff --git a/libssu/ssu.h b/libssu/ssu.h index 3e7e566..bf7e383 100644 --- a/libssu/ssu.h +++ b/libssu/ssu.h @@ -10,7 +10,6 @@ #include #include -#include #include #include diff --git a/libssu/ssucoreconfig.h b/libssu/ssucoreconfig.h index ca88c12..76a5fcd 100644 --- a/libssu/ssucoreconfig.h +++ b/libssu/ssucoreconfig.h @@ -9,7 +9,6 @@ #define _SSUCORECONFIG_H #include -#include #include "ssusettings.h" #include "ssu.h" diff --git a/libssu/ssudeviceinfo.cpp b/libssu/ssudeviceinfo.cpp index d1a80ce..cd7eb4d 100644 --- a/libssu/ssudeviceinfo.cpp +++ b/libssu/ssudeviceinfo.cpp @@ -294,7 +294,7 @@ QStringList SsuDeviceInfo::repos(bool rnd, int filter){ result.append(QString("adaptation%1").arg(i)); // now read the release/rnd repos - QSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); + SsuSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); QString repoKey = (rnd ? "default-repos/rnd" : "default-repos/release"); if (repoSettings.contains(repoKey)) result.append(repoSettings.value(repoKey).toStringList()); diff --git a/libssu/ssudeviceinfo.h b/libssu/ssudeviceinfo.h index a506600..2289129 100644 --- a/libssu/ssudeviceinfo.h +++ b/libssu/ssudeviceinfo.h @@ -9,7 +9,6 @@ #define _SSUDEVICEINFO_H #include -#include #include "ssusettings.h" diff --git a/libssu/ssurepomanager.cpp b/libssu/ssurepomanager.cpp index c103ef9..d261d10 100644 --- a/libssu/ssurepomanager.cpp +++ b/libssu/ssurepomanager.cpp @@ -12,6 +12,7 @@ #include "ssudeviceinfo.h" #include "ssurepomanager.h" #include "ssucoreconfig.h" +#include "ssusettings.h" #include "ssulog.h" #include "ssuvariables.h" #include "ssu.h" @@ -195,8 +196,7 @@ QStringList SsuRepoManager::repoVariables(QHash *storageHash, SsuVariables var; SsuCoreConfig *settings = SsuCoreConfig::instance(); QStringList configSections; - QSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); - //QSettings *repoSettings = new QSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); + SsuSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); // fill in all arbitrary variables from ssu.ini var.resolveSection(settings, "repository-url-variables", storageHash); @@ -240,7 +240,7 @@ QString SsuRepoManager::url(QString repoName, bool rndRepo, SsuVariables var; SsuLog *ssuLog = SsuLog::instance(); SsuCoreConfig *settings = SsuCoreConfig::instance(); - QSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); + SsuSettings repoSettings(SSU_REPO_CONFIGURATION, QSettings::IniFormat); SsuDeviceInfo deviceInfo; // set debugSplit for incorrectly configured debuginfo repositories (debugSplit diff --git a/libssu/ssurepomanager.h b/libssu/ssurepomanager.h index dc88310..a1e577c 100644 --- a/libssu/ssurepomanager.h +++ b/libssu/ssurepomanager.h @@ -9,7 +9,6 @@ #define _SSUREPOMANAGER_H #include -#include #include class SsuRepoManager: public QObject { diff --git a/libssu/ssusettings.cpp b/libssu/ssusettings.cpp index 9b1f60b..4322abd 100644 --- a/libssu/ssusettings.cpp +++ b/libssu/ssusettings.cpp @@ -18,21 +18,32 @@ SsuSettings::SsuSettings(): QSettings(){ } SsuSettings::SsuSettings(const QString &fileName, Format format, QObject *parent): - QSettings(fileName, format, parent){ + QSettings(SsuSettings::sandboxPrefix() + fileName, format, parent){ + } SsuSettings::SsuSettings(const QString &fileName, Format format, const QString &defaultFileName, QObject *parent): - QSettings(fileName, format, parent){ - defaultSettingsFile = defaultFileName; + QSettings(SsuSettings::sandboxPrefix() + fileName, format, parent){ + defaultSettingsFile = SsuSettings::sandboxPrefix() + defaultFileName; upgrade(); } SsuSettings::SsuSettings(const QString &fileName, const QString &settingsDirectory, QObject *parent): - QSettings(fileName, QSettings::IniFormat, parent){ - settingsd = settingsDirectory; + QSettings(SsuSettings::sandboxPrefix() + fileName, QSettings::IniFormat, parent){ + settingsd = SsuSettings::sandboxPrefix() + settingsDirectory; merge(); } +QString SsuSettings::sandboxPrefix(){ + /// @TODO: do some verification on the sandbox dir before using it + QString sandboxDir = getenv("SSU_SANDBOX_DIR"); + + if (!sandboxDir.isEmpty() && !sandboxDir.endsWith("/")) + sandboxDir += "/"; + + return sandboxDir; +} + void SsuSettings::merge(bool keepOld){ if (settingsd == "") return; diff --git a/libssu/ssusettings.h b/libssu/ssusettings.h index 55a5c4e..28bd51c 100644 --- a/libssu/ssusettings.h +++ b/libssu/ssusettings.h @@ -28,6 +28,7 @@ class SsuSettings: public QSettings { * style settings are supported in this mode. */ SsuSettings(const QString &fileName, const QString &settingsDirectory, QObject *parent=0); + static QString sandboxPrefix(); private: QString defaultSettingsFile, settingsd; diff --git a/libssu/ssuvariables.cpp b/libssu/ssuvariables.cpp index 9ad0d21..dc7dc2f 100644 --- a/libssu/ssuvariables.cpp +++ b/libssu/ssuvariables.cpp @@ -17,7 +17,7 @@ SsuVariables::SsuVariables(): QObject() { } -void SsuVariables::resolveSection(QSettings *settings, QString section, QHash *storageHash){ +void SsuVariables::resolveSection(SsuSettings *settings, QString section, QHash *storageHash){ QStringList repoVariables; settings->beginGroup(section); diff --git a/libssu/ssuvariables.h b/libssu/ssuvariables.h index 78db3f7..34292d0 100644 --- a/libssu/ssuvariables.h +++ b/libssu/ssuvariables.h @@ -9,9 +9,10 @@ #define _SSUVARIABLES_H #include -#include #include +#include "ssusettings.h" + class SsuVariables: public QObject { Q_OBJECT @@ -22,7 +23,7 @@ class SsuVariables: public QObject { * run them through the variable expander, and add them to the supplied * QHash */ - void resolveSection(QSettings *settings, QString section, QHash *storageHash); + void resolveSection(SsuSettings *settings, QString section, QHash *storageHash); /** * Resolve a whole string, containing several variables. Variables inside variables are allowed */