Analyzer: refactor global and project tool settings usage.

IAnalyzerTool has now 2 new virtual methods used to create the global and per-project settings.
No need to create any static factory method and pass a pointer to them to the AnalyzerGlobalSettings
instance anymore.

The Valgrind plugin is now using it, the memchecktool creates the settings for all
valgrind tools.

Change-Id: I3c5845ceb7151130032cfff4ab5b7b36ca2459d9
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Nicolas Arnaud-Cormos
2011-12-28 11:15:23 +01:00
committed by hjk
parent 4a8432112a
commit 9b19a9c8e2
9 changed files with 56 additions and 35 deletions

View File

@@ -95,6 +95,7 @@ QVariantMap AnalyzerSettings::toMap(const QList<AbstractAnalyzerSubConfig *> &su
return map;
}
AnalyzerGlobalSettings::AnalyzerGlobalSettings(QObject *parent)
: AnalyzerSettings(parent)
{
@@ -143,30 +144,26 @@ void AnalyzerGlobalSettings::writeSettings() const
settings->endGroup();
}
void AnalyzerGlobalSettings::registerSubConfigs
(AnalyzerSubConfigFactory globalCreator, AnalyzerSubConfigFactory projectCreator)
void AnalyzerGlobalSettings::registerTool(IAnalyzerTool *tool)
{
m_projectSubConfigFactories.append(projectCreator);
AbstractAnalyzerSubConfig *config = globalCreator();
m_subConfigs.append(config);
AnalyzerPlugin::instance()->addAutoReleasedObject(new AnalyzerOptionsPage(config));
readSettings();
AbstractAnalyzerSubConfig *config = tool->createGlobalSettings();
if (config) {
m_subConfigs.append(config);
AnalyzerPlugin::instance()->addAutoReleasedObject(new AnalyzerOptionsPage(config));
readSettings();
}
}
QList<AnalyzerSubConfigFactory> AnalyzerGlobalSettings::projectSubConfigFactories() const
{
return m_projectSubConfigFactories;
}
AnalyzerProjectSettings::AnalyzerProjectSettings(QObject *parent)
: AnalyzerSettings(parent), m_useGlobalSettings(true)
{
QList<IAnalyzerTool*> tools = AnalyzerManager::tools();
// add sub configs
foreach (AnalyzerSubConfigFactory factory, AnalyzerGlobalSettings::instance()->projectSubConfigFactories()) {
AbstractAnalyzerSubConfig *config = factory();
m_customConfigurations.append(config);
foreach (IAnalyzerTool *tool, tools) {
AbstractAnalyzerSubConfig *config = tool->createProjectSettings();
if (config)
m_customConfigurations.append(config);
}
m_subConfigs = AnalyzerGlobalSettings::instance()->subConfigs();