diff --git a/src/plugins/memcheck/memcheckconfigwidget.cpp b/src/plugins/memcheck/memcheckconfigwidget.cpp index 933c0c767eb..27aed4887d0 100644 --- a/src/plugins/memcheck/memcheckconfigwidget.cpp +++ b/src/plugins/memcheck/memcheckconfigwidget.cpp @@ -39,6 +39,8 @@ #include "memchecksettings.h" +#include + #include #include #include @@ -91,8 +93,13 @@ MemcheckConfigWidget::~MemcheckConfigWidget() void MemcheckConfigWidget::slotAddSuppression() { QFileDialog dialog; + dialog.setNameFilter(tr("Valgrind Suppression File (*.supp);;All Files (*)")); dialog.setAcceptMode(QFileDialog::AcceptOpen); dialog.setFileMode(QFileDialog::ExistingFiles); + MemcheckGlobalSettings *conf = Analyzer::AnalyzerGlobalSettings::instance()->subConfig(); + QTC_ASSERT(conf, return); + dialog.setDirectory(conf->lastSuppressionDialogDirectory()); + dialog.setHistory(conf->lastSuppressionDialogHistory()); if (dialog.exec() == QDialog::Accepted) { foreach(const QString &file, dialog.selectedFiles()) @@ -100,6 +107,9 @@ void MemcheckConfigWidget::slotAddSuppression() m_settings->addSuppressionFiles(dialog.selectedFiles()); } + + conf->setLastSuppressionDialogDirectory(dialog.directory().absolutePath()); + conf->setLastSuppressionDialogHistory(dialog.history()); } void MemcheckConfigWidget::slotSuppressionsAdded(const QStringList &files) diff --git a/src/plugins/memcheck/memchecksettings.cpp b/src/plugins/memcheck/memchecksettings.cpp index 9eba99e775d..03d8b4ad31d 100644 --- a/src/plugins/memcheck/memchecksettings.cpp +++ b/src/plugins/memcheck/memchecksettings.cpp @@ -51,6 +51,9 @@ static const QLatin1String addedSuppressionFilesC("Analyzer.Valgrind.AddedSupres static const QLatin1String filterExternalIssuesC("Analyzer.Valgrind.FilterExternalIssues"); static const QLatin1String visibleErrorKindsC("Analyzer.Valgrind.VisibleErrorKinds"); +static const QLatin1String lastSuppressionDirectoryC("Analyzer.Valgrind.LastSuppressionDirectory"); +static const QLatin1String lastSuppressionHistoryC("Analyzer.Valgrind.LastSuppressionHistory"); + AbstractMemcheckSettings::AbstractMemcheckSettings(QObject *parent) : AbstractAnalyzerSubConfig(parent) { @@ -66,7 +69,6 @@ QVariantMap AbstractMemcheckSettings::defaults() const QVariantMap map; map.insert(numCallersC, 25); map.insert(trackOriginsC, true); - map.insert(suppressionFilesC, QStringList()); map.insert(filterExternalIssuesC, true); QVariantList defaultErrorKinds; @@ -182,10 +184,41 @@ void MemcheckGlobalSettings::removeSuppressionFiles(const QStringList &suppressi m_suppressionFiles.removeAll(s); } +QString MemcheckGlobalSettings::lastSuppressionDialogDirectory() const +{ + return m_lastSuppressionDirectory; +} + +void MemcheckGlobalSettings::setLastSuppressionDialogDirectory(const QString &directory) +{ + m_lastSuppressionDirectory = directory; +} + +QStringList MemcheckGlobalSettings::lastSuppressionDialogHistory() const +{ + return m_lastSuppressionHistory; +} + +void MemcheckGlobalSettings::setLastSuppressionDialogHistory(const QStringList &history) +{ + m_lastSuppressionHistory = history; +} + +QVariantMap MemcheckGlobalSettings::defaults() const +{ + QVariantMap ret = AbstractMemcheckSettings::defaults(); + ret.insert(suppressionFilesC, QStringList()); + ret.insert(lastSuppressionDirectoryC, QString()); + ret.insert(lastSuppressionHistoryC, QStringList()); + return ret; +} + bool MemcheckGlobalSettings::fromMap(const QVariantMap &map) { AbstractMemcheckSettings::fromMap(map); m_suppressionFiles = map.value(suppressionFilesC).toStringList(); + m_lastSuppressionDirectory = map.value(lastSuppressionDirectoryC).toString(); + m_lastSuppressionHistory = map.value(lastSuppressionHistoryC).toStringList(); return true; } @@ -193,6 +226,8 @@ QVariantMap MemcheckGlobalSettings::toMap() const { QVariantMap map = AbstractMemcheckSettings::toMap(); map.insert(suppressionFilesC, m_suppressionFiles); + map.insert(lastSuppressionDirectoryC, m_lastSuppressionDirectory); + map.insert(lastSuppressionHistoryC, m_lastSuppressionHistory); return map; } @@ -212,6 +247,14 @@ MemcheckProjectSettings::~MemcheckProjectSettings() { } +QVariantMap MemcheckProjectSettings::defaults() const +{ + QVariantMap ret = AbstractMemcheckSettings::defaults(); + ret.insert(addedSuppressionFilesC, QStringList()); + ret.insert(removedSuppressionFilesC, QStringList()); + return ret; +} + bool MemcheckProjectSettings::fromMap(const QVariantMap &map) { AbstractMemcheckSettings::fromMap(map); diff --git a/src/plugins/memcheck/memchecksettings.h b/src/plugins/memcheck/memchecksettings.h index 27cc8e07654..5e0644125fa 100644 --- a/src/plugins/memcheck/memchecksettings.h +++ b/src/plugins/memcheck/memchecksettings.h @@ -107,12 +107,22 @@ public: void removeSuppressionFiles(const QStringList &); QVariantMap toMap() const; + QVariantMap defaults() const; + + // internal settings which don't require any UI + void setLastSuppressionDialogDirectory(const QString &directory); + QString lastSuppressionDialogDirectory() const; + + void setLastSuppressionDialogHistory(const QStringList &history); + QStringList lastSuppressionDialogHistory() const; protected: bool fromMap(const QVariantMap &map); private: QStringList m_suppressionFiles; + QString m_lastSuppressionDirectory; + QStringList m_lastSuppressionHistory; }; /** @@ -131,6 +141,7 @@ public: void removeSuppressionFiles(const QStringList &suppressions); QVariantMap toMap() const; + QVariantMap defaults() const; protected: bool fromMap(const QVariantMap &map);