Analyzer: Handle createProjectSettings outside IAnalyzerTool

Less indirection.

Change-Id: If702a0a44c1fc96510fd1c5411fda51660dde10b
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
This commit is contained in:
hjk
2013-08-08 11:25:28 +02:00
parent 2e0434dd25
commit 15caea1d26
10 changed files with 35 additions and 29 deletions

View File

@@ -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));

View File

@@ -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();

View File

@@ -46,7 +46,6 @@ class DetailsWidget;
namespace Analyzer {
class AnalyzerSettings;
class AbstractAnalyzerSubConfig;
namespace Internal {

View File

@@ -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");

View File

@@ -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;

View File

@@ -60,11 +60,6 @@ IAnalyzerTool::IAnalyzerTool(QObject *parent)
: QObject(parent)
{}
AbstractAnalyzerSubConfig *IAnalyzerTool::createProjectSettings()
{
return 0;
}
static bool buildTypeAccepted(IAnalyzerTool::ToolMode toolMode,
BuildConfiguration::BuildType buildType)
{

View File

@@ -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

View File

@@ -297,11 +297,6 @@ QString MemcheckTool::description() const
"memory leaks");
}
AbstractAnalyzerSubConfig *MemcheckTool::createProjectSettings()
{
return new ValgrindProjectSettings();
}
IAnalyzerTool::ToolMode MemcheckTool::toolMode() const
{
return DebugMode;

View File

@@ -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();

View File

@@ -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);