Analyzer: Cleanup settings handling

More flexible, less over-engineered this way.

Change-Id: I3e224a6be85d3a187056d79fd506e8cf6a32c8a9
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
hjk
2013-08-08 17:37:37 +02:00
parent 2d4afd0494
commit 5fa7b60b97
32 changed files with 282 additions and 632 deletions

View File

@@ -29,6 +29,7 @@
****************************************************************************/
#include "valgrindsettings.h"
#include "valgrindplugin.h"
#include "valgrindconfigwidget.h"
#include <coreplugin/icore.h>
@@ -75,34 +76,6 @@ namespace Internal {
//
//////////////////////////////////////////////////////////////////
QVariantMap ValgrindBaseSettings::defaults() const
{
QVariantMap map;
// General
map.insert(QLatin1String(valgrindExeC), QLatin1String("valgrind"));
// Memcheck
map.insert(QLatin1String(numCallersC), 25);
map.insert(QLatin1String(trackOriginsC), true);
map.insert(QLatin1String(filterExternalIssuesC), true);
QVariantList defaultErrorKinds;
for (int i = 0; i < Valgrind::XmlProtocol::MemcheckErrorKindCount; ++i)
defaultErrorKinds << i;
map.insert(QLatin1String(visibleErrorKindsC), defaultErrorKinds);
// Callgrind
map.insert(QLatin1String(callgrindEnableCacheSimC), false);
map.insert(QLatin1String(callgrindEnableBranchSimC), false);
map.insert(QLatin1String(callgrindCollectSystimeC), false);
map.insert(QLatin1String(callgrindCollectBusEventsC), false);
map.insert(QLatin1String(callgrindEnableEventToolTipsC), true);
map.insert(QLatin1String(callgrindMinimumCostRatioC), 0.01);
map.insert(QLatin1String(callgrindVisualisationMinimumCostRatioC), 10.0);
return map;
}
void ValgrindBaseSettings::fromMap(const QVariantMap &map)
{
// General
@@ -172,11 +145,6 @@ QString ValgrindBaseSettings::valgrindExecutable() const
return m_valgrindExecutable;
}
Core::Id ValgrindBaseSettings::id() const
{
return "Analyzer.Valgrind.Settings";
}
QString ValgrindBaseSettings::displayName() const
{
return tr("Valgrind");
@@ -286,27 +254,16 @@ void ValgrindBaseSettings::setVisualisationMinimumInclusiveCostRatio(
//
//////////////////////////////////////////////////////////////////
ValgrindGlobalSettings::ValgrindGlobalSettings()
{
readSettings();
}
QWidget *ValgrindGlobalSettings::createConfigWidget(QWidget *parent)
{
return new ValgrindConfigWidget(this, parent, true);
}
QVariantMap ValgrindGlobalSettings::defaults() const
{
QVariantMap map = ValgrindBaseSettings::defaults();
// Memcheck
map.insert(QLatin1String(suppressionFilesC), QStringList());
map.insert(QLatin1String(lastSuppressionDirectoryC), QString());
map.insert(QLatin1String(lastSuppressionHistoryC), QStringList());
// Callgrind
map.insert(QLatin1String(callgrindCostFormatC), CostDelegate::FormatRelative);
map.insert(QLatin1String(callgrindCycleDetectionC), true);
return map;
}
void ValgrindGlobalSettings::fromMap(const QVariantMap &map)
{
ValgrindBaseSettings::fromMap(map);
@@ -390,6 +347,61 @@ void ValgrindGlobalSettings::setLastSuppressionDialogHistory(const QStringList &
m_lastSuppressionHistory = history;
}
static const char groupC[] = "Analyzer";
void ValgrindGlobalSettings::readSettings()
{
QVariantMap defaults;
// General
defaults.insert(QLatin1String(valgrindExeC), QLatin1String("valgrind"));
// Memcheck
defaults.insert(QLatin1String(numCallersC), 25);
defaults.insert(QLatin1String(trackOriginsC), true);
defaults.insert(QLatin1String(filterExternalIssuesC), true);
QVariantList defaultErrorKinds;
for (int i = 0; i < Valgrind::XmlProtocol::MemcheckErrorKindCount; ++i)
defaultErrorKinds << i;
defaults.insert(QLatin1String(visibleErrorKindsC), defaultErrorKinds);
defaults.insert(QLatin1String(suppressionFilesC), QStringList());
defaults.insert(QLatin1String(lastSuppressionDirectoryC), QString());
defaults.insert(QLatin1String(lastSuppressionHistoryC), QStringList());
// Callgrind
defaults.insert(QLatin1String(callgrindEnableCacheSimC), false);
defaults.insert(QLatin1String(callgrindEnableBranchSimC), false);
defaults.insert(QLatin1String(callgrindCollectSystimeC), false);
defaults.insert(QLatin1String(callgrindCollectBusEventsC), false);
defaults.insert(QLatin1String(callgrindEnableEventToolTipsC), true);
defaults.insert(QLatin1String(callgrindMinimumCostRatioC), 0.01);
defaults.insert(QLatin1String(callgrindVisualisationMinimumCostRatioC), 10.0);
defaults.insert(QLatin1String(callgrindCostFormatC), CostDelegate::FormatRelative);
defaults.insert(QLatin1String(callgrindCycleDetectionC), true);
// Read stored values
QSettings *settings = Core::ICore::settings();
settings->beginGroup(QLatin1String(groupC));
QVariantMap map = defaults;
for (QVariantMap::ConstIterator it = defaults.constBegin(); it != defaults.constEnd(); ++it)
map.insert(it.key(), settings->value(it.key(), it.value()));
settings->endGroup();
fromMap(map);
}
void ValgrindGlobalSettings::writeSettings() const
{
QSettings *settings = Core::ICore::settings();
settings->beginGroup(QLatin1String(groupC));
const QVariantMap map = toMap();
for (QVariantMap::ConstIterator it = map.begin(); it != map.end(); ++it)
settings->setValue(it.key(), it.value());
settings->endGroup();
}
//
// Callgrind
//
@@ -401,7 +413,7 @@ CostDelegate::CostFormat ValgrindGlobalSettings::costFormat() const
void ValgrindGlobalSettings::setCostFormat(CostDelegate::CostFormat format)
{
m_costFormat = format;
AnalyzerGlobalSettings::instance()->writeSettings();
writeSettings();
}
bool ValgrindGlobalSettings::detectCycles() const
@@ -412,7 +424,7 @@ bool ValgrindGlobalSettings::detectCycles() const
void ValgrindGlobalSettings::setDetectCycles(bool on)
{
m_detectCycles = on;
AnalyzerGlobalSettings::instance()->writeSettings();
writeSettings();
}
bool ValgrindGlobalSettings::shortenTemplates() const
@@ -423,15 +435,9 @@ bool ValgrindGlobalSettings::shortenTemplates() const
void ValgrindGlobalSettings::setShortenTemplates(bool on)
{
m_shortenTemplates = on;
AnalyzerGlobalSettings::instance()->writeSettings();
writeSettings();
}
ValgrindGlobalSettings *globalValgrindSettings()
{
ValgrindGlobalSettings *ret = AnalyzerGlobalSettings::instance()->subConfig<ValgrindGlobalSettings>();
QTC_ASSERT(ret, return 0);
return ret;
}
//////////////////////////////////////////////////////////////////
//
@@ -444,17 +450,6 @@ QWidget *ValgrindProjectSettings::createConfigWidget(QWidget *parent)
return new ValgrindConfigWidget(this, parent, false);
}
QVariantMap ValgrindProjectSettings::defaults() const
{
QVariantMap map = ValgrindBaseSettings::defaults();
// Memcheck
map.insert(QLatin1String(addedSuppressionFilesC), QStringList());
map.insert(QLatin1String(removedSuppressionFilesC), QStringList());
return map;
}
void ValgrindProjectSettings::fromMap(const QVariantMap &map)
{
ValgrindBaseSettings::fromMap(map);
@@ -488,7 +483,7 @@ QVariantMap ValgrindProjectSettings::toMap() const
void ValgrindProjectSettings::addSuppressionFiles(const QStringList &suppressions)
{
QStringList globalSuppressions = globalValgrindSettings()->suppressionFiles();
QStringList globalSuppressions = ValgrindPlugin::globalSettings()->suppressionFiles();
foreach (const QString &s, suppressions) {
if (m_addedSuppressionFiles.contains(s))
continue;
@@ -500,7 +495,7 @@ void ValgrindProjectSettings::addSuppressionFiles(const QStringList &suppression
void ValgrindProjectSettings::removeSuppressionFiles(const QStringList &suppressions)
{
QStringList globalSuppressions = globalValgrindSettings()->suppressionFiles();
QStringList globalSuppressions = ValgrindPlugin::globalSettings()->suppressionFiles();
foreach (const QString &s, suppressions) {
m_addedSuppressionFiles.removeAll(s);
if (globalSuppressions.contains(s))
@@ -510,7 +505,7 @@ void ValgrindProjectSettings::removeSuppressionFiles(const QStringList &suppress
QStringList ValgrindProjectSettings::suppressionFiles() const
{
QStringList ret = globalValgrindSettings()->suppressionFiles();
QStringList ret = ValgrindPlugin::globalSettings()->suppressionFiles();
foreach (const QString &s, m_disabledGlobalSuppressionFiles)
ret.removeAll(s);
ret.append(m_addedSuppressionFiles);