From 61aef4aba5a20a03cee89844e614074e0b892d0b Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 20 Apr 2023 10:51:15 +0200 Subject: [PATCH] Core: Use IOptionPage::setWidgetCreator() for mime settings Less boilerplate for the implementation add user code access to IOptionPage::{apply,finish} is planned to be removed. Change-Id: I75c9ca893f49d66b72f6108f2451f3b0cb46722a Reviewed-by: Eike Ziller --- src/plugins/coreplugin/mimetypesettings.cpp | 49 +++++++++++---------- src/plugins/coreplugin/mimetypesettings.h | 5 +-- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp index a4efe1c30ef..d01abeffd21 100644 --- a/src/plugins/coreplugin/mimetypesettings.cpp +++ b/src/plugins/coreplugin/mimetypesettings.cpp @@ -291,6 +291,31 @@ MimeTypeSettingsPrivate::MimeTypeSettingsPrivate() MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate() = default; +class MimeTypeSettingsWidget : public IOptionsPageWidget +{ +public: + MimeTypeSettingsWidget(MimeTypeSettingsPrivate *d) + : d(d) + { + d->configureUi(this); + } + + void apply() final + { + MimeTypeSettingsPrivate::applyUserModifiedMimeTypes(d->m_pendingModifiedMimeTypes); + Core::Internal::setUserPreferredEditorTypes(d->m_model->m_userDefault); + d->m_pendingModifiedMimeTypes.clear(); + d->m_model->load(); + } + + void finish() final + { + d->m_pendingModifiedMimeTypes.clear(); + } + + MimeTypeSettingsPrivate *d; +}; + void MimeTypeSettingsPrivate::configureUi(QWidget *w) { auto filterLineEdit = new FancyLineEdit; @@ -713,6 +738,7 @@ MimeTypeSettings::MimeTypeSettings() setId(Constants::SETTINGS_ID_MIMETYPES); setDisplayName(Tr::tr("MIME Types")); setCategory(Constants::SETTINGS_CATEGORY_CORE); + setWidgetCreator([this] { return new MimeTypeSettingsWidget(d); }); } MimeTypeSettings::~MimeTypeSettings() @@ -720,29 +746,6 @@ MimeTypeSettings::~MimeTypeSettings() delete d; } -QWidget *MimeTypeSettings::widget() -{ - if (!d->m_widget) { - d->m_widget = new QWidget; - d->configureUi(d->m_widget); - } - return d->m_widget; -} - -void MimeTypeSettings::apply() -{ - MimeTypeSettingsPrivate::applyUserModifiedMimeTypes(d->m_pendingModifiedMimeTypes); - Core::Internal::setUserPreferredEditorTypes(d->m_model->m_userDefault); - d->m_pendingModifiedMimeTypes.clear(); - d->m_model->load(); -} - -void MimeTypeSettings::finish() -{ - d->m_pendingModifiedMimeTypes.clear(); - delete d->m_widget; -} - void MimeTypeSettings::restoreSettings() { MimeTypeSettingsPrivate::UserMimeTypeHash mimetypes diff --git a/src/plugins/coreplugin/mimetypesettings.h b/src/plugins/coreplugin/mimetypesettings.h index f676de53e62..57dee3a732b 100644 --- a/src/plugins/coreplugin/mimetypesettings.h +++ b/src/plugins/coreplugin/mimetypesettings.h @@ -17,11 +17,8 @@ public: MimeTypeSettings(); ~MimeTypeSettings() override; - QWidget *widget() override; - void apply() override; - void finish() override; - static void restoreSettings(); + private: MimeTypeSettingsPrivate *d; };