From 82a1bfe29b9b88b4c63f0f9c2123fc769ec0b772 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Fri, 15 Feb 2013 13:29:52 +0100
Subject: [PATCH] Qbs: Add static method to retrieve preferences from
 QbsManager

Change-Id: Ib18c4a8cf904a998c2a76ae6a7ed10d4d968b396
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
---
 src/plugins/qbsprojectmanager/qbsproject.cpp        |  6 +++---
 src/plugins/qbsprojectmanager/qbsprojectmanager.cpp | 13 ++++++++++++-
 src/plugins/qbsprojectmanager/qbsprojectmanager.h   |  2 ++
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 184ed1421fd..7a5ffa285cd 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -388,9 +388,9 @@ void QbsProject::parse(const QVariantMap &config, const QString &dir)
     params.buildRoot = m_qbsBuildRoot;
     params.projectFilePath = m_fileName;
     params.ignoreDifferentProjectFilePath = false;
-    const qbs::Preferences prefs(m_manager->settings());
-    params.searchPaths = prefs.searchPaths(QLatin1String(QBS_BUILD_DIR));
-    params.pluginPaths = prefs.pluginPaths(QLatin1String(QBS_BUILD_DIR));
+    qbs::Preferences *prefs = QbsManager::preferences();
+    params.searchPaths = prefs->searchPaths(QLatin1String(QBS_BUILD_DIR));
+    params.pluginPaths = prefs->pluginPaths(QLatin1String(QBS_BUILD_DIR));
 
     m_qbsSetupProjectJob
             = qbs::Project::setupProject(params, m_manager->settings(), m_manager->logSink(), 0);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
index 4420637955a..354fb8ba2c7 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
@@ -74,11 +74,17 @@ const QChar sep = QChar(QLatin1Char('.'));
 
 namespace QbsProjectManager {
 
-qbs::Settings *QbsManager::m_settings = new qbs::Settings(QLatin1String("QtProject"), QLatin1String("qbs"));
+qbs::Settings *QbsManager::m_settings = 0;
+qbs::Preferences *QbsManager::m_preferences = 0;
 
 QbsManager::QbsManager(Internal::QbsProjectManagerPlugin *plugin) :
     m_plugin(plugin)
 {
+    if (!m_settings)
+        m_settings = new qbs::Settings(QLatin1String("QtProject"), QLatin1String("qbs"));
+    if (!m_preferences)
+        m_preferences = new qbs::Preferences(m_settings);
+
     setObjectName(QLatin1String("QbsProjectManager"));
     connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsChanged()), this, SLOT(pushKitsToQbs()));
 
@@ -148,6 +154,11 @@ qbs::Settings *QbsManager::settings()
     return m_settings;
 }
 
+qbs::Preferences *QbsManager::preferences()
+{
+    return m_preferences;
+}
+
 void QbsManager::addProfile(const QString &name, const QVariantMap &data)
 {
     const QString base = QLatin1String(PROFILES_PREFIX) + name;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.h b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
index 705271775d7..56a561a3767 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
@@ -69,6 +69,7 @@ public:
     QStringList profileNames() const;
 
     static qbs::Settings *settings();
+    static qbs::Preferences *preferences();
     Internal::QbsLogSink *logSink() { return m_logSink; }
 
 private slots:
@@ -83,6 +84,7 @@ private:
     Internal::QbsProjectManagerPlugin *m_plugin;
     Internal::QbsLogSink *m_logSink;
     static qbs::Settings *m_settings;
+    static qbs::Preferences *m_preferences;
 };
 
 } // namespace QbsProjectManager
-- 
GitLab