From e13c000196be60b5efa933a061a394c07f0b4413 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 20 Apr 2023 11:03:22 +0200 Subject: [PATCH] CppEditor: Use IOptionPage::setWidgetCreator() for cppquickfix settings Change-Id: I33455f2ea98b1cafbb56ab8267b4d0afca106f33 Reviewed-by: Christian Stenger --- .../cppquickfixprojectsettingswidget.cpp | 2 +- .../cppeditor/cppquickfixsettingspage.cpp | 26 +------------------ .../cppeditor/cppquickfixsettingspage.h | 16 ++---------- .../cppeditor/cppquickfixsettingswidget.cpp | 14 +++++++--- .../cppeditor/cppquickfixsettingswidget.h | 7 +++-- 5 files changed, 20 insertions(+), 45 deletions(-) diff --git a/src/plugins/cppeditor/cppquickfixprojectsettingswidget.cpp b/src/plugins/cppeditor/cppquickfixprojectsettingswidget.cpp index c0fb8646651..c82985043f2 100644 --- a/src/plugins/cppeditor/cppquickfixprojectsettingswidget.cpp +++ b/src/plugins/cppeditor/cppquickfixprojectsettingswidget.cpp @@ -28,7 +28,7 @@ CppQuickFixProjectSettingsWidget::CppQuickFixProjectSettingsWidget(ProjectExplor auto layout = new QVBoxLayout(); gridLayout->addLayout(layout, 2, 0, 1, 2); - m_settingsWidget = new CppQuickFixSettingsWidget(this); + m_settingsWidget = new CppQuickFixSettingsWidget; m_settingsWidget->loadSettings(m_projectSettings->getSettings()); if (QLayout *layout = m_settingsWidget->layout()) diff --git a/src/plugins/cppeditor/cppquickfixsettingspage.cpp b/src/plugins/cppeditor/cppquickfixsettingspage.cpp index 05aa4c586a8..735dbea3b4d 100644 --- a/src/plugins/cppeditor/cppquickfixsettingspage.cpp +++ b/src/plugins/cppeditor/cppquickfixsettingspage.cpp @@ -5,12 +5,8 @@ #include "cppeditorconstants.h" #include "cppeditortr.h" -#include "cppquickfixsettings.h" #include "cppquickfixsettingswidget.h" -#include -#include - namespace CppEditor::Internal { CppQuickFixSettingsPage::CppQuickFixSettingsPage() @@ -18,27 +14,7 @@ CppQuickFixSettingsPage::CppQuickFixSettingsPage() setId(Constants::QUICK_FIX_SETTINGS_ID); setDisplayName(Tr::tr(Constants::QUICK_FIX_SETTINGS_DISPLAY_NAME)); setCategory(Constants::CPP_SETTINGS_CATEGORY); -} - -QWidget *CppQuickFixSettingsPage::widget() -{ - if (!m_widget) { - m_widget = new CppQuickFixSettingsWidget; - m_widget->loadSettings(CppQuickFixSettings::instance()); - } - return m_widget; -} - -void CppQuickFixSettingsPage::apply() -{ - const auto s = CppQuickFixSettings::instance(); - m_widget->saveSettings(s); - s->saveAsGlobalSettings(); -} - -void CppQuickFixSettingsPage::finish() -{ - delete m_widget; + setWidgetCreator([] { return new CppQuickFixSettingsWidget; }); } } // CppEditor::Internal diff --git a/src/plugins/cppeditor/cppquickfixsettingspage.h b/src/plugins/cppeditor/cppquickfixsettingspage.h index 0fea07f91a1..1965aae9569 100644 --- a/src/plugins/cppeditor/cppquickfixsettingspage.h +++ b/src/plugins/cppeditor/cppquickfixsettingspage.h @@ -5,24 +5,12 @@ #include -#include - -namespace CppEditor { -namespace Internal { -class CppQuickFixSettingsWidget; +namespace CppEditor::Internal { class CppQuickFixSettingsPage : public Core::IOptionsPage { public: CppQuickFixSettingsPage(); - - QWidget *widget() override; - void apply() override; - void finish() override; - -private: - QPointer m_widget; }; -} // namespace Internal -} // namespace CppEditor +} // CppEditor::Internal diff --git a/src/plugins/cppeditor/cppquickfixsettingswidget.cpp b/src/plugins/cppeditor/cppquickfixsettingswidget.cpp index 689a519ce37..c7aabdf6708 100644 --- a/src/plugins/cppeditor/cppquickfixsettingswidget.cpp +++ b/src/plugins/cppeditor/cppquickfixsettingswidget.cpp @@ -88,9 +88,8 @@ void LineCountSpinBox::updateFields() m_unitLabel->setEnabled(enabled); } -CppQuickFixSettingsWidget::CppQuickFixSettingsWidget(QWidget *parent) - : QWidget(parent) - , m_typeSplitter("\\s*,\\s*") +CppQuickFixSettingsWidget::CppQuickFixSettingsWidget() + : m_typeSplitter("\\s*,\\s*") { m_lines_getterOutsideClass = new LineCountSpinBox; m_lines_getterInCppFile = new LineCountSpinBox; @@ -319,6 +318,8 @@ e.g. name = "m_test_foo_": connect(m_radioButton_addUsingnamespace, &QRadioButton::clicked, then); connect(m_radioButton_generateMissingNamespace, &QRadioButton::clicked, then); connect(m_radioButton_rewriteTypes, &QRadioButton::clicked, then); + + loadSettings(CppQuickFixSettings::instance()); } void CppQuickFixSettingsWidget::loadSettings(CppQuickFixSettings *settings) @@ -426,6 +427,13 @@ void CppQuickFixSettingsWidget::saveSettings(CppQuickFixSettings *settings) } } +void CppQuickFixSettingsWidget::apply() +{ + const auto s = CppQuickFixSettings::instance(); + saveSettings(s); + s->saveAsGlobalSettings(); +} + void CppQuickFixSettingsWidget::currentCustomItemChanged(QListWidgetItem *newItem, QListWidgetItem *oldItem) { diff --git a/src/plugins/cppeditor/cppquickfixsettingswidget.h b/src/plugins/cppeditor/cppquickfixsettingswidget.h index f921afbff03..e11d81a9f23 100644 --- a/src/plugins/cppeditor/cppquickfixsettingswidget.h +++ b/src/plugins/cppeditor/cppquickfixsettingswidget.h @@ -3,6 +3,8 @@ #pragma once +#include + #include #include #include @@ -23,7 +25,7 @@ namespace CppEditor::Internal { class LineCountSpinBox; -class CppQuickFixSettingsWidget : public QWidget +class CppQuickFixSettingsWidget : public Core::IOptionsPageWidget { Q_OBJECT @@ -36,7 +38,7 @@ class CppQuickFixSettingsWidget : public QWidget }; public: - explicit CppQuickFixSettingsWidget(QWidget *parent = nullptr); + CppQuickFixSettingsWidget(); void loadSettings(CppQuickFixSettings *settings); void saveSettings(CppQuickFixSettings *settings); @@ -45,6 +47,7 @@ signals: void settingsChanged(); private: + void apply() final; void currentCustomItemChanged(QListWidgetItem *newItem, QListWidgetItem *oldItem); bool m_isLoadingSettings = false;