From 8cc3844038ebf225f723b8f4c3dc1aa44c6e1bc8 Mon Sep 17 00:00:00 2001
From: Eike Ziller <eike.ziller@nokia.com>
Date: Wed, 23 Nov 2011 16:56:50 +0100
Subject: [PATCH] Allow build to specify different settings path.

Task-number: QTCREATORBUG-5509
Change-Id: I4541049a1861e83f55106effc536fd50eb233d97
Reviewed-by: Alexander Lenhardt <alexander.lenhardt@nokia.com>
Reviewed-by: Niels Weber <niels.2.weber@nokia.com>
Reviewed-by: Daniel Molkentin <daniel.molkentin@nokia.com>
---
 src/app/app_version.h.in                              |  7 +++++++
 src/app/main.cpp                                      | 11 ++++++++---
 src/plugins/coreplugin/mainwindow.cpp                 |  3 +--
 src/plugins/projectexplorer/toolchainmanager.cpp      |  4 ++--
 .../qt4projectmanager/qt-s60/s60createpackagestep.cpp |  3 ++-
 src/plugins/qtsupport/qtversionmanager.cpp            |  4 ++--
 6 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/src/app/app_version.h.in b/src/app/app_version.h.in
index 222c97ec858..04d9575a525 100644
--- a/src/app/app_version.h.in
+++ b/src/app/app_version.h.in
@@ -62,6 +62,13 @@ const char * const IDE_REVISION_STR      = STRINGIFY(IDE_REVISION);
 const char * const IDE_REVISION_STR      = \"\";
 #endif
 
+// changes the path where the settings are saved to
+#ifdef IDE_SETTINGSVARIANT
+const char * const IDE_SETTINGSVARIANT_STR      = STRINGIFY(IDE_SETTINGSVARIANT);
+#else
+const char * const IDE_SETTINGSVARIANT_STR      = \"Nokia\";
+#endif
+
 #undef IDE_VERSION
 #undef IDE_VERSION_STR
 #undef STRINGIFY
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 8920bb95991..5dfe3a748a1 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -181,7 +181,9 @@ static inline QStringList getPluginPaths()
     //    $XDG_DATA_HOME or ~/.local/share/Nokia/qtcreator on Linux
     //    ~/Library/Application Support/Nokia/Qt Creator on Mac
     pluginPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
-    pluginPath += QLatin1String("/Nokia/");
+    pluginPath += QLatin1Char('/')
+            + QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR)
+            + QLatin1Char('/');
 #if !defined(Q_OS_MAC)
     pluginPath += QLatin1String("qtcreator");
 #else
@@ -250,11 +252,14 @@ int main(int argc, char **argv)
     // Must be done before any QSettings class is created
     QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope,
                        QCoreApplication::applicationDirPath() + QLatin1String(SHARE_PATH));
+    QSettings::setDefaultFormat(QSettings::IniFormat);
     // plugin manager takes control of this settings object
     QSettings *settings = new QSettings(QSettings::IniFormat, QSettings::UserScope,
-                                        QLatin1String("Nokia"), QLatin1String("QtCreator"));
+                                        QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),
+                                        QLatin1String("QtCreator"));
     QSettings *globalSettings = new QSettings(QSettings::IniFormat, QSettings::SystemScope,
-                                              QLatin1String("Nokia"), QLatin1String("QtCreator"));
+                                              QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),
+                                              QLatin1String("QtCreator"));
     ExtensionSystem::PluginManager pluginManager;
     pluginManager.setFileExtension(QLatin1String("pluginspec"));
     pluginManager.setGlobalSettings(globalSettings);
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index d8cc85d2e07..527e75c0efc 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -179,8 +179,7 @@ MainWindow::MainWindow() :
 #endif
     QCoreApplication::setApplicationName(QLatin1String("QtCreator"));
     QCoreApplication::setApplicationVersion(QLatin1String(Core::Constants::IDE_VERSION_LONG));
-    QCoreApplication::setOrganizationName(QLatin1String("Nokia"));
-    QSettings::setDefaultFormat(QSettings::IniFormat);
+    QCoreApplication::setOrganizationName(QLatin1String(Constants::IDE_SETTINGSVARIANT_STR));
     QString baseName = QApplication::style()->objectName();
 #ifdef Q_WS_X11
     if (baseName == QLatin1String("windows")) {
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 9f616eac529..3cf9b1f684e 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -111,8 +111,8 @@ ToolChainManager::ToolChainManager(QObject *parent) :
 void ToolChainManager::restoreToolChains()
 {
     // Restore SDK settings first
-    restoreToolChains(Core::ICore::instance()->resourcePath()
-                      + QLatin1String("/Nokia") + QLatin1String(TOOLCHAIN_FILENAME), true);
+    QFileInfo systemSettingsFile(Core::ICore::instance()->settings(QSettings::SystemScope)->fileName());
+    restoreToolChains(systemSettingsFile.absolutePath() + QLatin1String(TOOLCHAIN_FILENAME), true);
 
     // Then auto detect
     ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
index c8b898ef5d9..ae501342ea1 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
@@ -143,7 +143,8 @@ void S60CreatePackageStep::ctor_package()
             this, SLOT(handleWarnAboutPatching()), Qt::QueuedConnection);
 
     m_passphrases = new QSettings(QSettings::IniFormat, QSettings::UserScope,
-                                 QLatin1String("Nokia"), QLatin1String("QtCreatorKeys"), this);
+                                  QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),
+                                  QLatin1String("QtCreatorKeys"), this);
 }
 
 S60CreatePackageStep::~S60CreatePackageStep()
diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp
index a578718e68d..def45c3f367 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -206,8 +206,8 @@ void QtVersionManager::updateFromInstaller()
     ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
     QList<QtVersionFactory *> factories = pm->getObjects<QtVersionFactory>();
     Utils::PersistentSettingsReader reader;
-    if (!reader.load(Core::ICore::instance()->resourcePath()
-                     + QLatin1String("/Nokia") + QLatin1String(QTVERSION_FILENAME)))
+    if (!reader.load(QFileInfo(pm->globalSettings()->fileName()).absolutePath()
+                     + QLatin1String(QTVERSION_FILENAME)))
         return;
 
     QVariantMap data = reader.restoreValues();
-- 
GitLab