Allow access to system scope setting.

This commit add a Settings::Scope parameter to
Core::ICore::settings(), the default is UserScope,
which falls back to SystemScope. Specifying SystemScope
instead gives exclusive access to the SystemScope.
This commit is contained in:
Daniel Molkentin
2010-01-13 17:37:53 +01:00
parent 88e24a61d6
commit 047901aab2
6 changed files with 27 additions and 6 deletions

View File

@@ -31,6 +31,7 @@
#include <QtCore/QDir> #include <QtCore/QDir>
#include <QtCore/QCoreApplication> #include <QtCore/QCoreApplication>
#include <QtCore/QSettings>
namespace Core { namespace Core {
namespace Internal { namespace Internal {
@@ -135,9 +136,9 @@ MimeDatabase *CoreImpl::mimeDatabase() const
return m_mainwindow->mimeDatabase(); 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 SettingsDatabase *CoreImpl::settingsDatabase() const

View File

@@ -68,7 +68,7 @@ public:
ModeManager *modeManager() const; ModeManager *modeManager() const;
MimeDatabase *mimeDatabase() const; MimeDatabase *mimeDatabase() const;
QSettings *settings() const; QSettings *settings(QSettings::Scope scope = QSettings::UserScope) const;
SettingsDatabase *settingsDatabase() const; SettingsDatabase *settingsDatabase() const;
QPrinter *printer() const; QPrinter *printer() const;

View File

@@ -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. \brief Returns the application's main settings object.
You can use it to retrieve or set application wide settings You can use it to retrieve or set application wide settings
(in contrast to session or project specific 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() \see settingsDatabase()
*/ */

View File

@@ -32,6 +32,7 @@
#include "core_global.h" #include "core_global.h"
#include <QtCore/QObject> #include <QtCore/QObject>
#include <QtCore/QSettings>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QMainWindow; class QMainWindow;
@@ -40,6 +41,7 @@ class QSettings;
template <class T> class QList; template <class T> class QList;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace Core { namespace Core {
class ActionManager; class ActionManager;
@@ -93,7 +95,7 @@ public:
virtual ModeManager *modeManager() const = 0; virtual ModeManager *modeManager() const = 0;
virtual MimeDatabase *mimeDatabase() 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 SettingsDatabase *settingsDatabase() const = 0;
virtual QPrinter *printer() const = 0; virtual QPrinter *printer() const = 0;

View File

@@ -945,6 +945,14 @@ VCSManager *MainWindow::vcsManager() const
return m_vcsManager; 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 EditorManager *MainWindow::editorManager() const
{ {
return m_editorManager; return m_editorManager;

View File

@@ -36,6 +36,7 @@
#include <QtCore/QMap> #include <QtCore/QMap>
#include <QtGui/QColor> #include <QtGui/QColor>
#include <QtCore/QSettings>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QSettings; class QSettings;
@@ -107,7 +108,7 @@ public:
Core::MimeDatabase *mimeDatabase() const; Core::MimeDatabase *mimeDatabase() const;
VCSManager *vcsManager() const; VCSManager *vcsManager() const;
inline QSettings *settings() const { return m_settings; } QSettings *settings(QSettings::Scope scope) const;
inline SettingsDatabase *settingsDatabase() const { return m_settingsDatabase; } inline SettingsDatabase *settingsDatabase() const { return m_settingsDatabase; }
virtual QPrinter *printer() const; virtual QPrinter *printer() const;
IContext * currentContextObject() const; IContext * currentContextObject() const;
@@ -176,6 +177,7 @@ private:
QList<int> m_globalContext; QList<int> m_globalContext;
QList<int> m_additionalContexts; QList<int> m_additionalContexts;
QSettings *m_settings; QSettings *m_settings;
QSettings *m_globalSettings;
SettingsDatabase *m_settingsDatabase; SettingsDatabase *m_settingsDatabase;
mutable QPrinter *m_printer; mutable QPrinter *m_printer;
ActionManagerPrivate *m_actionManager; ActionManagerPrivate *m_actionManager;