forked from qt-creator/qt-creator
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:
@@ -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 ¤tConfigId)
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user