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; };