diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp index cef7df08c3d..09ea4191a3f 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp @@ -5,7 +5,6 @@ #include "qmljscodestylepreferences.h" #include "qmljscodestylepreferenceswidget.h" -#include "qmljsindenter.h" #include "qmljsqtstylecodeformatter.h" #include "qmljstoolsconstants.h" #include "qmljstoolssettings.h" @@ -25,13 +24,13 @@ #include #include +#include using namespace TextEditor; -namespace QmlJSTools { -namespace Internal { +namespace QmlJSTools::Internal { -// ------------------ CppCodeStyleSettingsWidget +// QmlJSCodeStylePreferencesWidget QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget( const TextEditor::ICodeStylePreferencesFactory *factory, QWidget *parent) @@ -120,7 +119,51 @@ void QmlJSCodeStylePreferencesWidget::updatePreview() tc.endEditBlock(); } -// ------------------ CppCodeStyleSettingsPage +// QmlJSCodeStyleSettingsPageWidget + +class QmlJSCodeStyleSettingsPageWidget : public Core::IOptionsPageWidget +{ +public: + QmlJSCodeStyleSettingsPageWidget() + { + + QmlJSCodeStylePreferences *originalPreferences + = QmlJSToolsSettings::globalCodeStyle(); + m_preferences.setDelegatingPool(originalPreferences->delegatingPool()); + m_preferences.setCodeStyleSettings(originalPreferences->codeStyleSettings()); + m_preferences.setTabSettings(originalPreferences->tabSettings()); + m_preferences.setCurrentDelegate(originalPreferences->currentDelegate()); + m_preferences.setId(originalPreferences->id()); + + auto vbox = new QVBoxLayout(this); + vbox->addWidget(new CodeStyleEditor( + TextEditorSettings::codeStyleFactory(QmlJSTools::Constants::QML_JS_SETTINGS_ID), + &m_preferences)); + } + + void apply() final + { + QSettings *s = Core::ICore::settings(); + + QmlJSCodeStylePreferences *originalPreferences = QmlJSToolsSettings::globalCodeStyle(); + if (originalPreferences->codeStyleSettings() != m_preferences.codeStyleSettings()) { + originalPreferences->setCodeStyleSettings(m_preferences.codeStyleSettings()); + originalPreferences->toSettings(QLatin1String(QmlJSTools::Constants::QML_JS_SETTINGS_ID), s); + } + if (originalPreferences->tabSettings() != m_preferences.tabSettings()) { + originalPreferences->setTabSettings(m_preferences.tabSettings()); + originalPreferences->toSettings(QLatin1String(QmlJSTools::Constants::QML_JS_SETTINGS_ID), s); + } + if (originalPreferences->currentDelegate() != m_preferences.currentDelegate()) { + originalPreferences->setCurrentDelegate(m_preferences.currentDelegate()); + originalPreferences->toSettings(QLatin1String(QmlJSTools::Constants::QML_JS_SETTINGS_ID), s); + } + } + + QmlJSCodeStylePreferences m_preferences; +}; + +// QmlJSCodeStyleSettingsPage QmlJSCodeStyleSettingsPage::QmlJSCodeStyleSettingsPage() { @@ -129,50 +172,7 @@ QmlJSCodeStyleSettingsPage::QmlJSCodeStyleSettingsPage() setCategory(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML); setDisplayCategory(Tr::tr("Qt Quick")); setCategoryIconPath(":/qmljstools/images/settingscategory_qml.png"); + setWidgetCreator([] { return new QmlJSCodeStyleSettingsPageWidget; }); } -QWidget *QmlJSCodeStyleSettingsPage::widget() -{ - if (!m_widget) { - QmlJSCodeStylePreferences *originalPreferences - = QmlJSToolsSettings::globalCodeStyle(); - m_preferences = new QmlJSCodeStylePreferences(m_widget); - m_preferences->setDelegatingPool(originalPreferences->delegatingPool()); - m_preferences->setCodeStyleSettings(originalPreferences->codeStyleSettings()); - m_preferences->setTabSettings(originalPreferences->tabSettings()); - m_preferences->setCurrentDelegate(originalPreferences->currentDelegate()); - m_preferences->setId(originalPreferences->id()); - m_widget = new CodeStyleEditor(TextEditorSettings::codeStyleFactory(QmlJSTools::Constants::QML_JS_SETTINGS_ID), - m_preferences); - } - return m_widget; -} - -void QmlJSCodeStyleSettingsPage::apply() -{ - if (m_widget) { - QSettings *s = Core::ICore::settings(); - - QmlJSCodeStylePreferences *originalPreferences = QmlJSToolsSettings::globalCodeStyle(); - if (originalPreferences->codeStyleSettings() != m_preferences->codeStyleSettings()) { - originalPreferences->setCodeStyleSettings(m_preferences->codeStyleSettings()); - originalPreferences->toSettings(QLatin1String(QmlJSTools::Constants::QML_JS_SETTINGS_ID), s); - } - if (originalPreferences->tabSettings() != m_preferences->tabSettings()) { - originalPreferences->setTabSettings(m_preferences->tabSettings()); - originalPreferences->toSettings(QLatin1String(QmlJSTools::Constants::QML_JS_SETTINGS_ID), s); - } - if (originalPreferences->currentDelegate() != m_preferences->currentDelegate()) { - originalPreferences->setCurrentDelegate(m_preferences->currentDelegate()); - originalPreferences->toSettings(QLatin1String(QmlJSTools::Constants::QML_JS_SETTINGS_ID), s); - } - } -} - -void QmlJSCodeStyleSettingsPage::finish() -{ - delete m_widget; -} - -} // namespace Internal -} // namespace QmlJSTools +} // QmlJSTools::Internal diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.h b/src/plugins/qmljstools/qmljscodestylesettingspage.h index e9b244865ba..853d482b95e 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.h +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.h @@ -6,16 +6,8 @@ #include #include -#include -#include - -QT_BEGIN_NAMESPACE -class QSettings; -QT_END_NAMESPACE - namespace TextEditor { class FontSettings; - class CodeStyleEditor; class SimpleCodeStylePreferencesWidget; class SnippetEditorWidget; } @@ -54,14 +46,6 @@ class QmlJSCodeStyleSettingsPage : public Core::IOptionsPage { public: QmlJSCodeStyleSettingsPage(); - - QWidget *widget() override; - void apply() override; - void finish() override; - -private: - QmlJSCodeStylePreferences *m_preferences = nullptr; - QPointer m_widget; }; } // namespace Internal