diff options
author | hjk <hjk121@nokiamail.com> | 2013-08-08 11:25:28 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2013-08-08 15:46:57 +0200 |
commit | 15caea1d260273070aaa399c4643da5e68be886f (patch) | |
tree | 40b5884d3c0c238b47d9f6ed6ff6bac46c15026a /src | |
parent | 2e0434dd252e391bb724e2d673593de2839b4bb7 (diff) | |
download | qt-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.cpp | 5 | ||||
-rw-r--r-- | src/plugins/analyzerbase/analyzermanager.h | 1 | ||||
-rw-r--r-- | src/plugins/analyzerbase/analyzerrunconfigwidget.h | 1 | ||||
-rw-r--r-- | src/plugins/analyzerbase/analyzersettings.cpp | 19 | ||||
-rw-r--r-- | src/plugins/analyzerbase/analyzersettings.h | 13 | ||||
-rw-r--r-- | src/plugins/analyzerbase/ianalyzertool.cpp | 5 | ||||
-rw-r--r-- | src/plugins/analyzerbase/ianalyzertool.h | 3 | ||||
-rw-r--r-- | src/plugins/valgrind/memchecktool.cpp | 5 | ||||
-rw-r--r-- | src/plugins/valgrind/memchecktool.h | 3 | ||||
-rw-r--r-- | src/plugins/valgrind/valgrindplugin.cpp | 9 |
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); |