diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp index 1cfe46f00fef54c985560b860818de9e44cd9b92..13e85f219e736ca5a5a8df7442a0fd6adb8c5ea9 100644 --- a/src/plugins/coreplugin/coreimpl.cpp +++ b/src/plugins/coreplugin/coreimpl.cpp @@ -31,6 +31,7 @@ #include <QtCore/QDir> #include <QtCore/QCoreApplication> +#include <QtCore/QSettings> namespace Core { namespace Internal { @@ -135,9 +136,9 @@ MimeDatabase *CoreImpl::mimeDatabase() const return m_mainwindow->mimeDatabase(); } -QSettings *CoreImpl::settings() const +QSettings *CoreImpl::settings(QSettings::Scope scope) const { - return m_mainwindow->settings(); + return m_mainwindow->settings(scope); } SettingsDatabase *CoreImpl::settingsDatabase() const diff --git a/src/plugins/coreplugin/coreimpl.h b/src/plugins/coreplugin/coreimpl.h index d591f3efb6f05136e5ba6efd1ebc5ae6d89ad50d..bc7b87fb3c59dd0c3b41f8198769115bd287824e 100644 --- a/src/plugins/coreplugin/coreimpl.h +++ b/src/plugins/coreplugin/coreimpl.h @@ -68,7 +68,7 @@ public: ModeManager *modeManager() const; MimeDatabase *mimeDatabase() const; - QSettings *settings() const; + QSettings *settings(QSettings::Scope scope = QSettings::UserScope) const; SettingsDatabase *settingsDatabase() const; QPrinter *printer() const; diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 531319a5adc015ae27b60c9598d5d98c9e3b0698..3c0b860e5b489eb04663f6147b7102c55f0434fe 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -188,12 +188,20 @@ */ /*! - \fn QSettings *ICore::settings() const + \fn QSettings *ICore::settings(QSettings::UserScope scope) const \brief Returns the application's main settings object. You can use it to retrieve or set application wide settings (in contrast to session or project specific settings). + If \a scope is QSettings::UserScope (the default), the + users settings will be read from the users settings, with + a fallback to global settings provided with Qt Creator. + + If \a scope is QSettings::SystemScope, only the system settings + shipped with the current version of Qt Creator will be read. This + functionality exists for internal purposes only. + \see settingsDatabase() */ diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index eab9b9abf0f9a8b641ae9c32a7ccd342428d37b6..1f92f9ed1414017135ff5fd9ad11fc7a8456ddd8 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -32,6 +32,7 @@ #include "core_global.h" #include <QtCore/QObject> +#include <QtCore/QSettings> QT_BEGIN_NAMESPACE class QMainWindow; @@ -40,6 +41,7 @@ class QSettings; template <class T> class QList; QT_END_NAMESPACE + namespace Core { class ActionManager; @@ -93,7 +95,7 @@ public: virtual ModeManager *modeManager() const = 0; virtual MimeDatabase *mimeDatabase() const = 0; - virtual QSettings *settings() const = 0; + virtual QSettings *settings(QSettings::Scope scope = QSettings::UserScope) const = 0; virtual SettingsDatabase *settingsDatabase() const = 0; virtual QPrinter *printer() const = 0; diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 1d028b98e7d6abbc824282c8968e8df2d249d569..432d06fdc917c994bba1bbba30cac268595f5ccd 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -945,6 +945,14 @@ VCSManager *MainWindow::vcsManager() const return m_vcsManager; } +QSettings *MainWindow::settings(QSettings::Scope scope) const +{ + if (scope == QSettings::UserScope) + return m_settings; + else + return m_globalSettings; +} + EditorManager *MainWindow::editorManager() const { return m_editorManager; diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index decaabb32cb86d487e03c2d6911ca62574c9f43a..8fae630f43ebc4c9d7f56e45d2ff35407d9845df 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -36,6 +36,7 @@ #include <QtCore/QMap> #include <QtGui/QColor> +#include <QtCore/QSettings> QT_BEGIN_NAMESPACE class QSettings; @@ -107,7 +108,7 @@ public: Core::MimeDatabase *mimeDatabase() const; VCSManager *vcsManager() const; - inline QSettings *settings() const { return m_settings; } + QSettings *settings(QSettings::Scope scope) const; inline SettingsDatabase *settingsDatabase() const { return m_settingsDatabase; } virtual QPrinter *printer() const; IContext * currentContextObject() const; @@ -176,6 +177,7 @@ private: QList<int> m_globalContext; QList<int> m_additionalContexts; QSettings *m_settings; + QSettings *m_globalSettings; SettingsDatabase *m_settingsDatabase; mutable QPrinter *m_printer; ActionManagerPrivate *m_actionManager;