aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/analyzerbase/analyzersettings.cpp
diff options
context:
space:
mode:
authorEike Ziller <[email protected]>2011-07-25 20:16:29 +0200
committerhjk <[email protected]>2011-08-01 13:20:05 +0200
commit81bb1c98a21ff4dbf2a383046a61e7ddb48e5f65 (patch)
treed46960de89d62ad7629925624738b622e7db8e58 /src/plugins/analyzerbase/analyzersettings.cpp
parent46d29819d415bdbb11b08d5c24254758629e3821 (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.cpp83
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