CppEditor: Move CppFileSettingsForProjectWidget to .cpp

... and de-pimpl/re-order there.

Change-Id: I01b8e3d56ae28b0206dcd56a6cc04acf8c7b1942
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2024-01-19 18:32:06 +01:00
parent 74cf4efb8a
commit 4d7a86dc5c
2 changed files with 45 additions and 55 deletions

View File

@@ -537,56 +537,58 @@ void CppFileSettingsForProject::saveSettings()
m_project->setNamedSettings(projectSettingsKeyC, data); m_project->setNamedSettings(projectSettingsKeyC, data);
} }
class CppFileSettingsForProjectWidget::Private class CppFileSettingsForProjectWidget : public ProjectExplorer::ProjectSettingsWidget
{ {
public: public:
Private(const CppFileSettingsForProject &s) : settings(s) {} CppFileSettingsForProjectWidget(const CppFileSettingsForProject &settings)
: m_settings(settings),
void maybeClearHeaderSourceCache(); m_initialSettings(settings.settings()),
void updateSubWidgetState() { widget.setEnabled(!settings.useGlobalSettings()); } m_widget(&m_initialSettings),
m_wasGlobal(settings.useGlobalSettings())
CppFileSettingsForProject settings;
CppFileSettings initialSettings = settings.settings();
CppFileSettingsWidget widget{&initialSettings};
QCheckBox useGlobalSettingsCheckBox;
const bool wasGlobal = settings.useGlobalSettings();
};
CppFileSettingsForProjectWidget::CppFileSettingsForProjectWidget(
const CppFileSettingsForProject &settings) : d(new Private(settings))
{ {
setGlobalSettingsId(Constants::CPP_FILE_SETTINGS_ID); setGlobalSettingsId(Constants::CPP_FILE_SETTINGS_ID);
const auto layout = new QVBoxLayout(this); const auto layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(&d->widget); layout->addWidget(&m_widget);
connect(this, &ProjectSettingsWidget::useGlobalSettingsChanged, this, connect(this, &ProjectSettingsWidget::useGlobalSettingsChanged, this, [this](bool checked) {
[this](bool checked) { m_settings.setUseGlobalSettings(checked);
d->settings.setUseGlobalSettings(checked);
if (!checked) if (!checked)
d->settings.setSettings(d->widget.currentSettings()); m_settings.setSettings(m_widget.currentSettings());
d->maybeClearHeaderSourceCache(); maybeClearHeaderSourceCache();
d->updateSubWidgetState(); updateSubWidgetState();
}); });
connect(&d->widget, &CppFileSettingsWidget::userChange, this, [this] {
d->settings.setSettings(d->widget.currentSettings()); connect(&m_widget, &CppFileSettingsWidget::userChange, this, [this] {
d->maybeClearHeaderSourceCache(); m_settings.setSettings(m_widget.currentSettings());
maybeClearHeaderSourceCache();
}); });
d->updateSubWidgetState();
updateSubWidgetState();
} }
CppFileSettingsForProjectWidget::~CppFileSettingsForProjectWidget() { delete d; } void maybeClearHeaderSourceCache()
void CppFileSettingsForProjectWidget::Private::maybeClearHeaderSourceCache()
{ {
const CppFileSettings &s = settings.settings(); const CppFileSettings &s = m_settings.settings();
if (settings.useGlobalSettings() != wasGlobal if (m_settings.useGlobalSettings() != m_wasGlobal
|| s.headerSearchPaths != initialSettings.headerSearchPaths || s.headerSearchPaths != m_initialSettings.headerSearchPaths
|| s.sourceSearchPaths != initialSettings.sourceSearchPaths) { || s.sourceSearchPaths != m_initialSettings.sourceSearchPaths) {
CppEditorPlugin::clearHeaderSourceCache(); CppEditorPlugin::clearHeaderSourceCache();
} }
} }
void updateSubWidgetState()
{
m_widget.setEnabled(!m_settings.useGlobalSettings());
}
CppFileSettingsForProject m_settings;
CppFileSettings m_initialSettings;
CppFileSettingsWidget m_widget;
QCheckBox m_useGlobalSettingsCheckBox;
const bool m_wasGlobal;
};
class CppFileSettingsProjectPanelFactory final : public ProjectPanelFactory class CppFileSettingsProjectPanelFactory final : public ProjectPanelFactory
{ {
public: public:

View File

@@ -6,7 +6,6 @@
#include "cppeditorconstants.h" #include "cppeditorconstants.h"
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
#include <projectexplorer/projectsettingswidget.h>
#include <QDir> #include <QDir>
@@ -74,17 +73,6 @@ public:
CppFileSettingsPage(); CppFileSettingsPage();
}; };
class CppFileSettingsForProjectWidget : public ProjectExplorer::ProjectSettingsWidget
{
public:
CppFileSettingsForProjectWidget(const CppFileSettingsForProject &settings);
~CppFileSettingsForProjectWidget();
private:
class Private;
Private * const d;
};
CppFileSettings &globalCppFileSettings(); CppFileSettings &globalCppFileSettings();
void setupCppFileSettings(); void setupCppFileSettings();