aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-10-01 16:53:01 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-12-03 13:22:28 +0000
commit3090e744c2cdfc29b95f5fdf71ad2e385bb7d3c2 (patch)
treeee7044ba5694843bbf2af41fd830f9096bd72141 /src/plugins/clangcodemodel
parent0a15b001dd71d86ecfd06669cfe55bcd20afe305 (diff)
ClangTools: Polish ClangDiagnosticConfigsWidget
* Improve distinction between built-in and custom configs by introducing corresponding parent nodes * Add button to rename a config * Make closing the dialog apply the selected config. * Adapt also the related ClangDiagnosticConfigsSelectionWidget showing a combo box of the diagnostic configs and a "Manage..." button: Remove the combo box and show the current config as the button text. Change-Id: Ic015df37f2532f84bd7da6cd20bfce07799a97b8 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel')
-rw-r--r--src/plugins/clangcodemodel/clangprojectsettings.cpp6
-rw-r--r--src/plugins/clangcodemodel/clangprojectsettingswidget.cpp47
-rw-r--r--src/plugins/clangcodemodel/clangprojectsettingswidget.h3
3 files changed, 21 insertions, 35 deletions
diff --git a/src/plugins/clangcodemodel/clangprojectsettings.cpp b/src/plugins/clangcodemodel/clangprojectsettings.cpp
index 698447cc4b..c081203669 100644
--- a/src/plugins/clangcodemodel/clangprojectsettings.cpp
+++ b/src/plugins/clangcodemodel/clangprojectsettings.cpp
@@ -25,6 +25,9 @@
#include "clangprojectsettings.h"
+#include <cpptools/cppcodemodelsettings.h>
+#include <cpptools/cpptoolsreuse.h>
+
#include <utils/qtcassert.h>
#include <utils/hostosinfo.h>
@@ -74,6 +77,9 @@ ClangProjectSettings::ClangProjectSettings(ProjectExplorer::Project *project)
Core::Id ClangProjectSettings::warningConfigId() const
{
+ const CppTools::ClangDiagnosticConfigsModel model = CppTools::diagnosticConfigsModel();
+ if (!model.hasConfigWithId(m_warningConfigId))
+ return CppTools::codeModelSettings()->defaultClangDiagnosticConfigId();
return m_warningConfigId;
}
diff --git a/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp b/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
index a0a980829f..785f15778c 100644
--- a/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
+++ b/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
@@ -44,12 +44,7 @@ static Core::Id configIdForProject(ClangProjectSettings &projectSettings)
{
if (projectSettings.useGlobalConfig())
return CppTools::codeModelSettings()->clangDiagnosticConfigId();
- Core::Id configId = projectSettings.warningConfigId();
- if (!configId.isValid()) {
- configId = CppTools::codeModelSettings()->clangDiagnosticConfigId();
- projectSettings.setWarningConfigId(configId);
- }
- return configId;
+ return projectSettings.warningConfigId();
}
ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project *project)
@@ -62,19 +57,20 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
m_ui.delayedTemplateParseCheckBox->setVisible(Utils::HostOsInfo::isWindowsHost());
connect(m_ui.clangDiagnosticConfigsSelectionWidget,
- &ClangDiagnosticConfigsSelectionWidget::currentConfigChanged,
- this, &ClangProjectSettingsWidget::onCurrentWarningConfigChanged);
- connect(m_ui.clangDiagnosticConfigsSelectionWidget,
- &ClangDiagnosticConfigsSelectionWidget::diagnosticConfigsEdited,
- this, [this](const ClangDiagnosticConfigs &configs){
- QSharedPointer<CppCodeModelSettings> cmSettings = CppTools::codeModelSettings();
- const ClangDiagnosticConfigsModel configsModel = CppTools::diagnosticConfigsModel(configs);
- if (!configsModel.hasConfigWithId(cmSettings->clangDiagnosticConfigId()))
- cmSettings->resetClangDiagnosticConfigId();
- cmSettings->setClangCustomDiagnosticConfigs(configs);
- cmSettings->toSettings(Core::ICore::settings());
- refreshDiagnosticConfigsWidgetFromSettings();
- });
+ &ClangDiagnosticConfigsSelectionWidget::changed,
+ this,
+ [this]() {
+ // Save project's config id
+ const Core::Id currentConfigId = m_ui.clangDiagnosticConfigsSelectionWidget
+ ->currentConfigId();
+ m_projectSettings.setWarningConfigId(currentConfigId);
+
+ // Save global custom configs
+ const ClangDiagnosticConfigs configs = m_ui.clangDiagnosticConfigsSelectionWidget
+ ->customConfigs();
+ CppTools::codeModelSettings()->setClangCustomDiagnosticConfigs(configs);
+ CppTools::codeModelSettings()->toSettings(Core::ICore::settings());
+ });
connect(m_ui.delayedTemplateParseCheckBox, &QCheckBox::toggled,
this, &ClangProjectSettingsWidget::onDelayedTemplateParseClicked);
@@ -92,14 +88,6 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
syncWidgets();
}
-void ClangProjectSettingsWidget::onCurrentWarningConfigChanged(const Core::Id &currentConfigId)
-{
- // Don't save it when we reset the global config in code
- if (m_projectSettings.useGlobalConfig())
- return;
- m_projectSettings.setWarningConfigId(currentConfigId);
-}
-
void ClangProjectSettingsWidget::onDelayedTemplateParseClicked(bool checked)
{
// Don't save it when we reset the global config in code
@@ -152,11 +140,6 @@ void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
widget->setEnabled(isCustom);
}
- refreshDiagnosticConfigsWidgetFromSettings();
-}
-
-void ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings()
-{
m_ui.clangDiagnosticConfigsSelectionWidget->refresh(CppTools::diagnosticConfigsModel(),
configIdForProject(m_projectSettings),
/*showTidyClazyUi=*/false);
diff --git a/src/plugins/clangcodemodel/clangprojectsettingswidget.h b/src/plugins/clangcodemodel/clangprojectsettingswidget.h
index be57a67a13..c1127ee6cb 100644
--- a/src/plugins/clangcodemodel/clangprojectsettingswidget.h
+++ b/src/plugins/clangcodemodel/clangprojectsettingswidget.h
@@ -44,7 +44,6 @@ public:
explicit ClangProjectSettingsWidget(ProjectExplorer::Project *project);
private:
- void onCurrentWarningConfigChanged(const Core::Id &currentConfigId);
void onDelayedTemplateParseClicked(bool);
void onGlobalCustomChanged(int index);
void onAboutToSaveProjectSettings();
@@ -53,8 +52,6 @@ private:
void syncGlobalCustomComboBox();
void syncOtherWidgetsToComboBox();
- void refreshDiagnosticConfigsWidgetFromSettings();
-
private:
Ui::ClangProjectSettingsWidget m_ui;
ClangProjectSettings &m_projectSettings;