aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangtools/clangtoolsprojectsettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/clangtools/clangtoolsprojectsettings.cpp')
-rw-r--r--src/plugins/clangtools/clangtoolsprojectsettings.cpp87
1 files changed, 54 insertions, 33 deletions
diff --git a/src/plugins/clangtools/clangtoolsprojectsettings.cpp b/src/plugins/clangtools/clangtoolsprojectsettings.cpp
index 6c2597789d..005897b49c 100644
--- a/src/plugins/clangtools/clangtoolsprojectsettings.cpp
+++ b/src/plugins/clangtools/clangtoolsprojectsettings.cpp
@@ -34,8 +34,9 @@
namespace ClangTools {
namespace Internal {
+static const char SETTINGS_KEY_MAIN[] = "ClangTools";
+static const char SETTINGS_PREFIX[] = "ClangTools.";
static const char SETTINGS_KEY_USE_GLOBAL_SETTINGS[] = "ClangTools.UseGlobalSettings";
-static const char SETTINGS_KEY_DIAGNOSTIC_CONFIG[] = "ClangTools.DiagnosticConfig";
static const char SETTINGS_KEY_SELECTED_DIRS[] = "ClangTools.SelectedDirs";
static const char SETTINGS_KEY_SELECTED_FILES[] = "ClangTools.SelectedFiles";
static const char SETTINGS_KEY_SUPPRESSED_DIAGS[] = "ClangTools.SuppressedDiagnostics";
@@ -78,22 +79,53 @@ void ClangToolsProjectSettings::removeAllSuppressedDiagnostics()
emit suppressedDiagnosticsChanged();
}
+static QVariantMap convertToMapFromVersionBefore410(ProjectExplorer::Project *p)
+{
+ // These keys haven't changed.
+ const QStringList keys = {
+ SETTINGS_KEY_SELECTED_DIRS,
+ SETTINGS_KEY_SELECTED_FILES,
+ SETTINGS_KEY_SUPPRESSED_DIAGS,
+ SETTINGS_KEY_USE_GLOBAL_SETTINGS,
+ "ClangTools.BuildBeforeAnalysis",
+ };
+
+ QVariantMap map;
+ for (const QString &key : keys)
+ map.insert(key, p->namedSettings(key));
+
+ map.insert(SETTINGS_PREFIX + QString(diagnosticConfigIdKey),
+ p->namedSettings("ClangTools.DiagnosticConfig"));
+
+ return map;
+}
+
void ClangToolsProjectSettings::load()
{
- const QVariant useGlobalVariant = m_project->namedSettings(SETTINGS_KEY_USE_GLOBAL_SETTINGS);
- m_useGlobalSettings = useGlobalVariant.isValid() ? useGlobalVariant.toBool() : true;
- m_diagnosticConfig = Core::Id::fromSetting(
- m_project->namedSettings(SETTINGS_KEY_DIAGNOSTIC_CONFIG));
+ // Load map
+ QVariantMap map = m_project->namedSettings(SETTINGS_KEY_MAIN).toMap();
+
+ bool write;
+ if (map.isEmpty()) {
+ if (!m_project->namedSettings(SETTINGS_KEY_SELECTED_DIRS).isNull()) {
+ map = convertToMapFromVersionBefore410(m_project);
+ write = true;
+ } else {
+ return; // Use defaults
+ }
+ }
- auto toFileName = [](const QString &s) { return Utils::FilePath::fromString(s); };
+ // Read map
+ m_useGlobalSettings = map.value(SETTINGS_KEY_USE_GLOBAL_SETTINGS).toBool();
- const QStringList dirs = m_project->namedSettings(SETTINGS_KEY_SELECTED_DIRS).toStringList();
+ auto toFileName = [](const QString &s) { return Utils::FilePath::fromString(s); };
+ const QStringList dirs = map.value(SETTINGS_KEY_SELECTED_DIRS).toStringList();
m_selectedDirs = Utils::transform<QSet>(dirs, toFileName);
- const QStringList files = m_project->namedSettings(SETTINGS_KEY_SELECTED_FILES).toStringList();
+ const QStringList files = map.value(SETTINGS_KEY_SELECTED_FILES).toStringList();
m_selectedFiles = Utils::transform<QSet>(files, toFileName);
- const QVariantList list = m_project->namedSettings(SETTINGS_KEY_SUPPRESSED_DIAGS).toList();
+ const QVariantList list = map.value(SETTINGS_KEY_SUPPRESSED_DIAGS).toList();
foreach (const QVariant &v, list) {
const QVariantMap diag = v.toMap();
const QString fp = diag.value(SETTINGS_KEY_SUPPRESSED_DIAGS_FILEPATH).toString();
@@ -113,48 +145,37 @@ void ClangToolsProjectSettings::load()
uniquifier);
}
emit suppressedDiagnosticsChanged();
+
+ m_runSettings.fromMap(map, SETTINGS_PREFIX);
+
+ if (write)
+ store(); // Store new settings format
}
void ClangToolsProjectSettings::store()
{
- m_project->setNamedSettings(SETTINGS_KEY_USE_GLOBAL_SETTINGS, m_useGlobalSettings);
- m_project->setNamedSettings(SETTINGS_KEY_DIAGNOSTIC_CONFIG, m_diagnosticConfig.toSetting());
+ QVariantMap map;
+ map.insert(SETTINGS_KEY_USE_GLOBAL_SETTINGS, m_useGlobalSettings);
const QStringList dirs = Utils::transform<QList>(m_selectedDirs, &Utils::FilePath::toString);
- m_project->setNamedSettings(SETTINGS_KEY_SELECTED_DIRS, dirs);
+ map.insert(SETTINGS_KEY_SELECTED_DIRS, dirs);
const QStringList files = Utils::transform<QList>(m_selectedFiles, &Utils::FilePath::toString);
- m_project->setNamedSettings(SETTINGS_KEY_SELECTED_FILES, files);
+ map.insert(SETTINGS_KEY_SELECTED_FILES, files);
QVariantList list;
- foreach (const SuppressedDiagnostic &diag, m_suppressedDiagnostics) {
+ for (const SuppressedDiagnostic &diag : m_suppressedDiagnostics) {
QVariantMap diagMap;
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_FILEPATH, diag.filePath.toString());
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_MESSAGE, diag.description);
diagMap.insert(SETTINGS_KEY_SUPPRESSED_DIAGS_UNIQIFIER, diag.uniquifier);
list << diagMap;
}
- m_project->setNamedSettings(SETTINGS_KEY_SUPPRESSED_DIAGS, list);
-}
+ map.insert(SETTINGS_KEY_SUPPRESSED_DIAGS, list);
-bool ClangToolsProjectSettings::useGlobalSettings() const
-{
- return m_useGlobalSettings;
-}
-
-void ClangToolsProjectSettings::setUseGlobalSettings(bool useGlobalSettings)
-{
- m_useGlobalSettings = useGlobalSettings;
-}
+ m_runSettings.toMap(map, SETTINGS_PREFIX);
-Core::Id ClangToolsProjectSettings::diagnosticConfig() const
-{
- return m_diagnosticConfig;
-}
-
-void ClangToolsProjectSettings::setDiagnosticConfig(const Core::Id &diagnosticConfig)
-{
- m_diagnosticConfig = diagnosticConfig;
+ m_project->setNamedSettings(SETTINGS_KEY_MAIN, map);
}
ClangToolsProjectSettingsManager::ClangToolsProjectSettingsManager()