forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
@@ -17,11 +17,8 @@ public:
|
||||
MimeTypeSettings();
|
||||
~MimeTypeSettings() override;
|
||||
|
||||
QWidget *widget() override;
|
||||
void apply() override;
|
||||
void finish() override;
|
||||
|
||||
static void restoreSettings();
|
||||
|
||||
private:
|
||||
MimeTypeSettingsPrivate *d;
|
||||
};
|
||||
|
Reference in New Issue
Block a user