aboutsummaryrefslogtreecommitdiffstats
path: root/src/app
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-05-09 15:50:43 +0200
committerEike Ziller <eike.ziller@qt.io>2017-05-15 13:47:37 +0000
commit964dd4a3e1893b05a2db27e871902567921eb8b1 (patch)
treeed75ac4e0885e5aaaa0d51e1fbdc79437b2c2dd4 /src/app
parent02d2b36ce7fcba99829c28325b803e07bb8b14b2 (diff)
Add a way to redirect the "install settings"
If the default install settings contain a value for "Settings/InstallSettings", then that is used as the actual path for the actual install settings instead. If the path is relative, it is interpreted as relative to Qt Creator's applicationDirPath. Change-Id: I212037112e88c60c94239580841aa1400d96fb73 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src/app')
-rw-r--r--src/app/main.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 77cf8cb42e9..374ae667497 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -220,6 +220,25 @@ static inline QStringList getPluginPaths()
return rc;
}
+static void setupInstallSettings()
+{
+ // Check if the default install settings contain a setting for the actual install settings.
+ // This can be an absolute path, or a path relative to applicationDirPath().
+ // The result is interpreted like -settingspath, but for SystemScope
+ static const char kInstallSettingsKey[] = "Settings/InstallSettings";
+ QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope,
+ QCoreApplication::applicationDirPath() + '/' + RELATIVE_DATA_PATH);
+ QSettings installSettings(QSettings::IniFormat, QSettings::UserScope,
+ QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),
+ QLatin1String("QtCreator"));
+ if (installSettings.contains(kInstallSettingsKey)) {
+ QString installSettingsPath = installSettings.value(kInstallSettingsKey).toString();
+ if (QDir::isRelativePath(installSettingsPath))
+ installSettingsPath = QCoreApplication::applicationDirPath() + '/' + installSettingsPath;
+ QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope, installSettingsPath);
+ }
+}
+
static QSettings *createUserSettings()
{
return new QSettings(QSettings::IniFormat, QSettings::UserScope,
@@ -363,9 +382,8 @@ int main(int argc, char **argv)
QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, settingsPath);
// Must be done before any QSettings class is created
- QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope,
- QCoreApplication::applicationDirPath() + '/' + RELATIVE_DATA_PATH);
QSettings::setDefaultFormat(QSettings::IniFormat);
+ setupInstallSettings();
// plugin manager takes control of this settings object
QSettings *settings = userSettings();