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 <eike.ziller@qt.io>
This commit is contained in:
hjk
2023-04-20 10:51:15 +02:00
parent 214742e943
commit 61aef4aba5
2 changed files with 27 additions and 27 deletions

View File

@@ -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

View File

@@ -17,11 +17,8 @@ public:
MimeTypeSettings();
~MimeTypeSettings() override;
QWidget *widget() override;
void apply() override;
void finish() override;
static void restoreSettings();
private:
MimeTypeSettingsPrivate *d;
};