From b3df7c3cdb10f30a3255a716eec2c6e04f1d1d31 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 20 Apr 2023 11:02:48 +0200 Subject: [PATCH] CppEditor: Use IOptionPage::setWidgetCreator() for settings Change-Id: I0d2f8ffae7ca4e7360de0f69566ab03036c10c53 Reviewed-by: Christian Stenger --- .../cppeditor/cppcodestylesettingspage.cpp | 51 ++++++++++--------- .../cppeditor/cppcodestylesettingspage.h | 8 --- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.cpp b/src/plugins/cppeditor/cppcodestylesettingspage.cpp index aa7279aeb81..190c2f5fc4c 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.cpp +++ b/src/plugins/cppeditor/cppcodestylesettingspage.cpp @@ -34,6 +34,7 @@ #include #include #include +#include using namespace TextEditor; using namespace Utils; @@ -548,18 +549,13 @@ void CppCodeStylePreferencesWidget::finish() emit finishEmitted(); } -// ------------------ CppCodeStyleSettingsPage +// CppCodeStyleSettingsPageWidget -CppCodeStyleSettingsPage::CppCodeStyleSettingsPage() +class CppCodeStyleSettingsPageWidget : public Core::IOptionsPageWidget { - setId(Constants::CPP_CODE_STYLE_SETTINGS_ID); - setDisplayName(Tr::tr("Code Style")); - setCategory(Constants::CPP_SETTINGS_CATEGORY); -} - -QWidget *CppCodeStyleSettingsPage::widget() -{ - if (!m_widget) { +public: + CppCodeStyleSettingsPageWidget() + { CppCodeStylePreferences *originalCodeStylePreferences = CppToolsSettings::instance() ->cppCodeStyle(); m_pageCppCodeStylePreferences = new CppCodeStylePreferences(); @@ -571,15 +567,16 @@ QWidget *CppCodeStyleSettingsPage::widget() originalCodeStylePreferences->currentDelegate()); // we set id so that it won't be possible to set delegate to the original prefs m_pageCppCodeStylePreferences->setId(originalCodeStylePreferences->id()); - m_widget = TextEditorSettings::codeStyleFactory(CppEditor::Constants::CPP_SETTINGS_ID) - ->createCodeStyleEditor(m_pageCppCodeStylePreferences); - } - return m_widget; -} -void CppCodeStyleSettingsPage::apply() -{ - if (m_widget) { + m_codeStyleEditor = TextEditorSettings::codeStyleFactory(CppEditor::Constants::CPP_SETTINGS_ID) + ->createCodeStyleEditor(m_pageCppCodeStylePreferences); + + auto hbox = new QVBoxLayout(this); + hbox->addWidget(m_codeStyleEditor); + } + + void apply() final + { QSettings *s = Core::ICore::settings(); CppCodeStylePreferences *originalCppCodeStylePreferences = CppToolsSettings::instance()->cppCodeStyle(); @@ -596,15 +593,21 @@ void CppCodeStyleSettingsPage::apply() originalCppCodeStylePreferences->toSettings(QLatin1String(CppEditor::Constants::CPP_SETTINGS_ID), s); } - m_widget->apply(); + m_codeStyleEditor->apply(); } -} -void CppCodeStyleSettingsPage::finish() + CppCodeStylePreferences *m_pageCppCodeStylePreferences = nullptr; + CodeStyleEditorWidget *m_codeStyleEditor; +}; + +// CppCodeStyleSettingsPage + +CppCodeStyleSettingsPage::CppCodeStyleSettingsPage() { - if (m_widget) - m_widget->finish(); - delete m_widget; + setId(Constants::CPP_CODE_STYLE_SETTINGS_ID); + setDisplayName(Tr::tr("Code Style")); + setCategory(Constants::CPP_SETTINGS_CATEGORY); + setWidgetCreator([] { return new CppCodeStyleSettingsPageWidget; }); } } // namespace CppEditor::Internal diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.h b/src/plugins/cppeditor/cppcodestylesettingspage.h index da15c38948a..666b3ab4a29 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.h +++ b/src/plugins/cppeditor/cppcodestylesettingspage.h @@ -86,14 +86,6 @@ class CppCodeStyleSettingsPage : public Core::IOptionsPage { public: CppCodeStyleSettingsPage(); - - QWidget *widget() override; - void apply() override; - void finish() override; - -private: - CppCodeStylePreferences *m_pageCppCodeStylePreferences = nullptr; - QPointer m_widget; }; } // namespace Internal