diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-10-01 16:53:01 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-12-03 13:22:28 +0000 |
commit | 3090e744c2cdfc29b95f5fdf71ad2e385bb7d3c2 (patch) | |
tree | ee7044ba5694843bbf2af41fd830f9096bd72141 /src/plugins/clangcodemodel | |
parent | 0a15b001dd71d86ecfd06669cfe55bcd20afe305 (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.cpp | 6 | ||||
-rw-r--r-- | src/plugins/clangcodemodel/clangprojectsettingswidget.cpp | 47 | ||||
-rw-r--r-- | src/plugins/clangcodemodel/clangprojectsettingswidget.h | 3 |
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 ¤tConfigId) -{ - // 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 ¤tConfigId); 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; |