CppTools: Split diagnostic settings and selection

Now selection is only consists of combobox and
a "Manage" button to diagnostic configurations.
Diagnostic configurations are moved to the modal dialog
which is shown by clicking the mentioned "Manage" button.

Change-Id: I607fb923c97e8730448548708f3aaf32ce1983c8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Ivan Donchevskii
2018-05-04 15:58:41 +02:00
parent 6b70c27e3b
commit 3737b6a124
14 changed files with 364 additions and 148 deletions

View File

@@ -59,19 +59,14 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
using namespace CppTools;
m_diagnosticConfigWidget = new ClangDiagnosticConfigsWidget;
refreshDiagnosticConfigsWidgetFromSettings();
m_ui.generalConfigurationGroupBox->setVisible(Utils::HostOsInfo::isWindowsHost());
m_ui.clangSettings->setCurrentIndex(m_projectSettings.useGlobalConfig() ? 0 : 1);
syncOtherWidgetsToComboBox();
connectToCppCodeModelSettingsChanged();
connect(m_diagnosticConfigWidget.data(), &ClangDiagnosticConfigsWidget::currentConfigChanged,
connect(m_ui.clangDiagnosticConfigsSelectionWidget,
&ClangDiagnosticConfigsSelectionWidget::currentConfigChanged,
this, &ClangProjectSettingsWidget::onCurrentWarningConfigChanged);
connect(m_diagnosticConfigWidget.data(), &ClangDiagnosticConfigsWidget::customConfigsChanged,
this, &ClangProjectSettingsWidget::onCustomWarningConfigsChanged);
connect(m_ui.delayedTemplateParse, &QCheckBox::toggled,
this, &ClangProjectSettingsWidget::onDelayedTemplateParseClicked);
connect(m_ui.clangSettings,
@@ -80,7 +75,12 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
connect(project, &ProjectExplorer::Project::aboutToSaveSettings,
this, &ClangProjectSettingsWidget::onAboutToSaveProjectSettings);
m_ui.diagnosticConfigurationGroupBox->layout()->addWidget(m_diagnosticConfigWidget);
connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
this, &ClangProjectSettingsWidget::syncOtherWidgetsToComboBox);
connectToClangDiagnosticConfigsDialog(m_ui.manageButton);
syncOtherWidgetsToComboBox();
}
void ClangProjectSettingsWidget::onCurrentWarningConfigChanged(const Core::Id &currentConfigId)
@@ -91,18 +91,6 @@ void ClangProjectSettingsWidget::onCurrentWarningConfigChanged(const Core::Id &c
m_projectSettings.setWarningConfigId(currentConfigId);
}
void ClangProjectSettingsWidget::onCustomWarningConfigsChanged(
const CppTools::ClangDiagnosticConfigs &customConfigs)
{
disconnectFromCppCodeModelSettingsChanged();
const QSharedPointer<CppTools::CppCodeModelSettings> codeModelSettings
= CppTools::codeModelSettings();
codeModelSettings->setClangCustomDiagnosticConfigs(customConfigs);
connectToCppCodeModelSettingsChanged();
}
void ClangProjectSettingsWidget::onDelayedTemplateParseClicked(bool checked)
{
// Don't save it when we reset the global config in code
@@ -137,29 +125,15 @@ void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
const bool isCustom = !m_projectSettings.useGlobalConfig();
m_ui.generalConfigurationGroupBox->setEnabled(isCustom);
m_ui.diagnosticConfigurationGroupBox->setEnabled(isCustom);
m_ui.clangDiagnosticsLabel->setEnabled(isCustom);
m_ui.clangDiagnosticConfigsSelectionWidget->setEnabled(isCustom);
refreshDiagnosticConfigsWidgetFromSettings();
}
void ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings()
{
CppTools::ClangDiagnosticConfigsModel configsModel(
CppTools::codeModelSettings()->clangCustomDiagnosticConfigs());
m_diagnosticConfigWidget->refresh(configsModel,
configIdForProject(m_projectSettings));
}
void ClangProjectSettingsWidget::connectToCppCodeModelSettingsChanged()
{
connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
this, &ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings);
}
void ClangProjectSettingsWidget::disconnectFromCppCodeModelSettingsChanged()
{
disconnect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
this, &ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings);
m_ui.clangDiagnosticConfigsSelectionWidget->refresh(configIdForProject(m_projectSettings));
}
} // namespace Internal