diff options
author | Eike Ziller <[email protected]> | 2011-07-25 20:16:29 +0200 |
---|---|---|
committer | hjk <[email protected]> | 2011-08-01 13:20:05 +0200 |
commit | 81bb1c98a21ff4dbf2a383046a61e7ddb48e5f65 (patch) | |
tree | d46960de89d62ad7629925624738b622e7db8e58 /src/plugins/analyzerbase/analyzersettings.cpp | |
parent | 46d29819d415bdbb11b08d5c24254758629e3821 (diff) |
Make sensible use of global analyzer settings
Project settings now have the option to use the global settings (on by
default), or custom ones.
Task-number: QTCREATORBUG-5445
Change-Id: I6602b53a6e7823150773e8461ef9db39b7546e98
Reviewed-on: http://codereview.qt.nokia.com/2163
Reviewed-by: Qt Sanity Bot <[email protected]>
Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/analyzerbase/analyzersettings.cpp')
-rw-r--r-- | src/plugins/analyzerbase/analyzersettings.cpp | 83 |
1 files changed, 62 insertions, 21 deletions
diff --git a/src/plugins/analyzerbase/analyzersettings.cpp b/src/plugins/analyzerbase/analyzersettings.cpp index 89fa68b1c21..82cd973c190 100644 --- a/src/plugins/analyzerbase/analyzersettings.cpp +++ b/src/plugins/analyzerbase/analyzersettings.cpp @@ -47,6 +47,7 @@ using namespace Analyzer::Internal; static const char groupC[] = "Analyzer"; +static const char useGlobalC[] = "Analyzer.Project.UseGlobal"; namespace Analyzer { @@ -57,28 +58,38 @@ AnalyzerSettings::AnalyzerSettings(QObject *parent) { } +QVariantMap AnalyzerSettings::defaults() const +{ + QVariantMap map; + foreach (AbstractAnalyzerSubConfig *config, subConfigs()) { + map.unite(config->defaults()); + } + return map; +} + bool AnalyzerSettings::fromMap(const QVariantMap &map) { + return fromMap(map, &m_subConfigs); +} + +bool AnalyzerSettings::fromMap(const QVariantMap &map, QList<AbstractAnalyzerSubConfig *> *subConfigs) +{ bool ret = true; - foreach (AbstractAnalyzerSubConfig *config, subConfigs()) { + foreach (AbstractAnalyzerSubConfig *config, *subConfigs) { ret = ret && config->fromMap(map); } return ret; } -QVariantMap AnalyzerSettings::defaults() const +QVariantMap AnalyzerSettings::toMap() const { - QVariantMap map; - foreach (AbstractAnalyzerSubConfig *config, subConfigs()) { - map.unite(config->defaults()); - } - return map; + return toMap(m_subConfigs); } -QVariantMap AnalyzerSettings::toMap() const +QVariantMap AnalyzerSettings::toMap(const QList<AbstractAnalyzerSubConfig *> &subConfigs) const { QVariantMap map; - foreach (AbstractAnalyzerSubConfig *config, subConfigs()) { + foreach (AbstractAnalyzerSubConfig *config, subConfigs) { map.unite(config->toMap()); } return map; @@ -102,6 +113,7 @@ AnalyzerGlobalSettings *AnalyzerGlobalSettings::instance() AnalyzerGlobalSettings::~AnalyzerGlobalSettings() { m_instance = 0; + qDeleteAll(m_subConfigs); } void AnalyzerGlobalSettings::readSettings() @@ -134,30 +146,36 @@ void AnalyzerGlobalSettings::writeSettings() const void AnalyzerGlobalSettings::registerSubConfigs (AnalyzerSubConfigFactory globalCreator, AnalyzerSubConfigFactory projectCreator) { - m_projectSubConfigs.append(projectCreator); + m_projectSubConfigFactories.append(projectCreator); AbstractAnalyzerSubConfig *config = globalCreator(); - config->setParent(this); + m_subConfigs.append(config); AnalyzerPlugin::instance()->addAutoReleasedObject(new AnalyzerOptionsPage(config)); readSettings(); } -QList<AnalyzerSubConfigFactory> AnalyzerGlobalSettings::projectSubConfigs() const +QList<AnalyzerSubConfigFactory> AnalyzerGlobalSettings::projectSubConfigFactories() const { - return m_projectSubConfigs; + return m_projectSubConfigFactories; } AnalyzerProjectSettings::AnalyzerProjectSettings(QObject *parent) - : AnalyzerSettings(parent) + : AnalyzerSettings(parent), m_useGlobalSettings(true) { // add sub configs - foreach (AnalyzerSubConfigFactory factory, AnalyzerGlobalSettings::instance()->projectSubConfigs()) - factory()->setParent(this); + foreach (AnalyzerSubConfigFactory factory, AnalyzerGlobalSettings::instance()->projectSubConfigFactories()) { + AbstractAnalyzerSubConfig *config = factory(); + m_customConfigurations.append(config); + } - // take defaults from global settings - AnalyzerGlobalSettings *gs = AnalyzerGlobalSettings::instance(); - fromMap(gs->toMap()); + m_subConfigs = AnalyzerGlobalSettings::instance()->subConfigs(); + resetCustomToGlobalSettings(); +} + +AnalyzerProjectSettings::~AnalyzerProjectSettings() +{ + qDeleteAll(m_customConfigurations); } QString AnalyzerProjectSettings::displayName() const @@ -167,12 +185,35 @@ QString AnalyzerProjectSettings::displayName() const bool AnalyzerProjectSettings::fromMap(const QVariantMap &map) { - return AnalyzerSettings::fromMap(map); + if (!AnalyzerSettings::fromMap(map, &m_customConfigurations)) + return false; + m_useGlobalSettings = map.value(QLatin1String(useGlobalC), true).toBool(); + return true; } QVariantMap AnalyzerProjectSettings::toMap() const { - return AnalyzerSettings::toMap(); + QVariantMap map = AnalyzerSettings::toMap(m_customConfigurations); + map.insert(QLatin1String(useGlobalC), m_useGlobalSettings); + return map; +} + +void AnalyzerProjectSettings::setUsingGlobalSettings(bool value) +{ + if (value == m_useGlobalSettings) + return; + m_useGlobalSettings = value; + if (m_useGlobalSettings) { + m_subConfigs = AnalyzerGlobalSettings::instance()->subConfigs(); + } else { + m_subConfigs = m_customConfigurations; + } +} + +void AnalyzerProjectSettings::resetCustomToGlobalSettings() +{ + AnalyzerGlobalSettings *gs = AnalyzerGlobalSettings::instance(); + AnalyzerSettings::fromMap(gs->toMap(), &m_customConfigurations); } } // namespace Analyzer |