summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2013-08-08 11:25:28 +0200
committerhjk <hjk121@nokiamail.com>2013-08-08 15:46:57 +0200
commit15caea1d260273070aaa399c4643da5e68be886f (patch)
tree40b5884d3c0c238b47d9f6ed6ff6bac46c15026a /src
parent2e0434dd252e391bb724e2d673593de2839b4bb7 (diff)
downloadqt-creator-15caea1d260273070aaa399c4643da5e68be886f.tar.gz
Analyzer: Handle createProjectSettings outside IAnalyzerTool
Less indirection. Change-Id: If702a0a44c1fc96510fd1c5411fda51660dde10b Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/analyzerbase/analyzermanager.cpp5
-rw-r--r--src/plugins/analyzerbase/analyzermanager.h1
-rw-r--r--src/plugins/analyzerbase/analyzerrunconfigwidget.h1
-rw-r--r--src/plugins/analyzerbase/analyzersettings.cpp19
-rw-r--r--src/plugins/analyzerbase/analyzersettings.h13
-rw-r--r--src/plugins/analyzerbase/ianalyzertool.cpp5
-rw-r--r--src/plugins/analyzerbase/ianalyzertool.h3
-rw-r--r--src/plugins/valgrind/memchecktool.cpp5
-rw-r--r--src/plugins/valgrind/memchecktool.h3
-rw-r--r--src/plugins/valgrind/valgrindplugin.cpp9
10 files changed, 35 insertions, 29 deletions
diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp
index d2a4cf4e44..6b55479e11 100644
--- a/src/plugins/analyzerbase/analyzermanager.cpp
+++ b/src/plugins/analyzerbase/analyzermanager.cpp
@@ -684,11 +684,6 @@ QDockWidget *AnalyzerManager::createDockWidget(IAnalyzerTool *tool, const QStrin
return dockWidget;
}
-QList<IAnalyzerTool *> AnalyzerManager::tools()
-{
- return d->m_tools;
-}
-
void AnalyzerManager::selectTool(IAnalyzerTool *tool, StartMode mode)
{
d->selectTool(d->actionFromToolAndMode(tool, mode));
diff --git a/src/plugins/analyzerbase/analyzermanager.h b/src/plugins/analyzerbase/analyzermanager.h
index d8b862b025..c20523cced 100644
--- a/src/plugins/analyzerbase/analyzermanager.h
+++ b/src/plugins/analyzerbase/analyzermanager.h
@@ -75,7 +75,6 @@ public:
static Utils::FancyMainWindow *mainWindow();
static void showMode();
- static QList<IAnalyzerTool *> tools();
static void selectTool(IAnalyzerTool *tool, StartMode mode);
static void startTool();
static void stopTool();
diff --git a/src/plugins/analyzerbase/analyzerrunconfigwidget.h b/src/plugins/analyzerbase/analyzerrunconfigwidget.h
index 09af6ee2ae..43d3f89cb2 100644
--- a/src/plugins/analyzerbase/analyzerrunconfigwidget.h
+++ b/src/plugins/analyzerbase/analyzerrunconfigwidget.h
@@ -46,7 +46,6 @@ class DetailsWidget;
namespace Analyzer {
-class AnalyzerSettings;
class AbstractAnalyzerSubConfig;
namespace Internal {
diff --git a/src/plugins/analyzerbase/analyzersettings.cpp b/src/plugins/analyzerbase/analyzersettings.cpp
index e481edc36e..c5fd34ec4e 100644
--- a/src/plugins/analyzerbase/analyzersettings.cpp
+++ b/src/plugins/analyzerbase/analyzersettings.cpp
@@ -151,16 +151,18 @@ void AnalyzerGlobalSettings::registerConfig(AbstractAnalyzerSubConfig *config)
}
+static QList<AnalyzerSubConfigFactory *> theAnalyzerSubConfigFactories()
+{
+ static QList<AnalyzerSubConfigFactory *> theFactories;
+ return theFactories;
+}
+
AnalyzerRunConfigurationAspect::AnalyzerRunConfigurationAspect()
: AnalyzerSettings((QObject *)0), m_useGlobalSettings(true)
{
- QList<IAnalyzerTool*> tools = AnalyzerManager::tools();
// add sub configs
- foreach (IAnalyzerTool *tool, tools) {
- AbstractAnalyzerSubConfig *config = tool->createProjectSettings();
- if (config)
- m_customConfigurations.append(config);
- }
+ foreach (AnalyzerSubConfigFactory *factory, theAnalyzerSubConfigFactories())
+ m_customConfigurations.append(factory->createProjectSettings());
m_subConfigs = AnalyzerGlobalSettings::instance()->subConfigs();
resetCustomToGlobalSettings();
@@ -184,6 +186,11 @@ AnalyzerRunConfigurationAspect::~AnalyzerRunConfigurationAspect()
qDeleteAll(m_customConfigurations);
}
+void AnalyzerRunConfigurationAspect::registerConfigFactory(AnalyzerSubConfigFactory *factory)
+{
+ theAnalyzerSubConfigFactories().append(factory);
+}
+
QString AnalyzerRunConfigurationAspect::displayName() const
{
return tr("Analyzer Settings");
diff --git a/src/plugins/analyzerbase/analyzersettings.h b/src/plugins/analyzerbase/analyzersettings.h
index 3bbd8c18e5..2c24b2007d 100644
--- a/src/plugins/analyzerbase/analyzersettings.h
+++ b/src/plugins/analyzerbase/analyzersettings.h
@@ -81,6 +81,17 @@ public:
virtual AbstractAnalyzerSubConfig *clone() = 0;
};
+class ANALYZER_EXPORT AnalyzerSubConfigFactory : public QObject
+{
+ Q_OBJECT
+
+public:
+ AnalyzerSubConfigFactory() {}
+
+ /// Factory method to create the project tool setting
+ virtual AbstractAnalyzerSubConfig *createProjectSettings() = 0;
+};
+
/**
* Shared interface for the global and per-project settings.
*
@@ -168,6 +179,8 @@ public:
AnalyzerRunConfigurationAspect(const AnalyzerRunConfigurationAspect *other);
~AnalyzerRunConfigurationAspect();
+ static void registerConfigFactory(AnalyzerSubConfigFactory *factory);
+
QString displayName() const;
virtual QVariantMap toMap() const;
AnalyzerRunConfigurationAspect *clone(ProjectExplorer::RunConfiguration *parent) const;
diff --git a/src/plugins/analyzerbase/ianalyzertool.cpp b/src/plugins/analyzerbase/ianalyzertool.cpp
index a982c2ae54..351166322f 100644
--- a/src/plugins/analyzerbase/ianalyzertool.cpp
+++ b/src/plugins/analyzerbase/ianalyzertool.cpp
@@ -60,11 +60,6 @@ IAnalyzerTool::IAnalyzerTool(QObject *parent)
: QObject(parent)
{}
-AbstractAnalyzerSubConfig *IAnalyzerTool::createProjectSettings()
-{
- return 0;
-}
-
static bool buildTypeAccepted(IAnalyzerTool::ToolMode toolMode,
BuildConfiguration::BuildType buildType)
{
diff --git a/src/plugins/analyzerbase/ianalyzertool.h b/src/plugins/analyzerbase/ianalyzertool.h
index 465434c82d..1910490c2e 100644
--- a/src/plugins/analyzerbase/ianalyzertool.h
+++ b/src/plugins/analyzerbase/ianalyzertool.h
@@ -113,9 +113,6 @@ public:
/// Called when tools gets deselected.
virtual void toolDeselected() const {}
-
- /// Factory method to create the project tool setting
- virtual AbstractAnalyzerSubConfig *createProjectSettings();
};
} // namespace Analyzer
diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp
index 2eb42de864..97ea2407ec 100644
--- a/src/plugins/valgrind/memchecktool.cpp
+++ b/src/plugins/valgrind/memchecktool.cpp
@@ -297,11 +297,6 @@ QString MemcheckTool::description() const
"memory leaks");
}
-AbstractAnalyzerSubConfig *MemcheckTool::createProjectSettings()
-{
- return new ValgrindProjectSettings();
-}
-
IAnalyzerTool::ToolMode MemcheckTool::toolMode() const
{
return DebugMode;
diff --git a/src/plugins/valgrind/memchecktool.h b/src/plugins/valgrind/memchecktool.h
index 5560f6c31c..8099fc75e4 100644
--- a/src/plugins/valgrind/memchecktool.h
+++ b/src/plugins/valgrind/memchecktool.h
@@ -89,9 +89,6 @@ public:
QString displayName() const;
QString description() const;
- // Create the valgrind settings (for all valgrind tools)
- Analyzer::AbstractAnalyzerSubConfig *createProjectSettings();
-
private slots:
void settingsDestroyed(QObject *settings);
void maybeActiveRunConfigurationChanged();
diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp
index 1273cd2db0..ba2951fdce 100644
--- a/src/plugins/valgrind/valgrindplugin.cpp
+++ b/src/plugins/valgrind/valgrindplugin.cpp
@@ -48,9 +48,18 @@ using namespace Analyzer;
namespace Valgrind {
namespace Internal {
+class ProjectSettingsFactory : public AnalyzerSubConfigFactory
+{
+ AbstractAnalyzerSubConfig *createProjectSettings()
+ {
+ return new ValgrindProjectSettings();
+ }
+};
+
bool ValgrindPlugin::initialize(const QStringList &, QString *)
{
AnalyzerGlobalSettings::registerConfig(new ValgrindGlobalSettings());
+ AnalyzerRunConfigurationAspect::registerConfigFactory(new ProjectSettingsFactory());
IAnalyzerTool *memcheckTool = new MemcheckTool(this);
IAnalyzerTool *callgrindTool = new CallgrindTool(this);