diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 711fa5c424c..e468859778e 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -318,7 +318,6 @@ public: ShortcutSettings *m_shortcutSettings = nullptr; ToolSettings *m_toolSettings = nullptr; - MimeTypeSettings *m_mimeTypeSettings = nullptr; SystemEditor *m_systemEditor = nullptr; // actions @@ -1343,7 +1342,6 @@ void ICorePrivate::init() m_modeStack = new FancyTabWidget(m_mainwindow); m_shortcutSettings = new ShortcutSettings; m_toolSettings = new ToolSettings; - m_mimeTypeSettings = new MimeTypeSettings; m_systemEditor = new SystemEditor; m_toggleLeftSideBarButton = new QToolButton; m_toggleRightSideBarButton = new QToolButton; @@ -1455,8 +1453,6 @@ ICorePrivate::~ICorePrivate() m_shortcutSettings = nullptr; delete m_toolSettings; m_toolSettings = nullptr; - delete m_mimeTypeSettings; - m_mimeTypeSettings = nullptr; delete m_systemEditor; m_systemEditor = nullptr; delete m_printer; @@ -1497,7 +1493,7 @@ ICorePrivate::~ICorePrivate() void ICore::extensionsInitialized() { EditorManagerPrivate::extensionsInitialized(); - MimeTypeSettings::restoreSettings(); + setupMimeTypeSettings(d); d->m_windowSupport = new WindowSupport(d->m_mainwindow, Context("Core.MainWindow")); d->m_windowSupport->setCloseActionEnabled(false); OutputPaneManager::initialize(); diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp index c2bf8202ea4..9e42f62930f 100644 --- a/src/plugins/coreplugin/mimetypesettings.cpp +++ b/src/plugins/coreplugin/mimetypesettings.cpp @@ -5,6 +5,7 @@ #include "coreconstants.h" #include "coreplugintr.h" +#include "dialogs/ioptionspage.h" #include "editormanager/ieditorfactory.h" #include "editormanager/ieditorfactory_p.h" #include "icore.h" @@ -767,6 +768,19 @@ void MimeTypeSettingsPrivate::applyUserModifiedMimeTypes(const UserMimeTypeHash // MimeTypeSettingsPage +class MimeTypeSettings final : public IOptionsPage +{ +public: + MimeTypeSettings(); + + ~MimeTypeSettings() final { delete d; } + + QStringList keywords() const final; + +private: + MimeTypeSettingsPrivate *d; +}; + MimeTypeSettings::MimeTypeSettings() : d(new MimeTypeSettingsPrivate) { @@ -776,11 +790,6 @@ MimeTypeSettings::MimeTypeSettings() setWidgetCreator([this] { return new MimeTypeSettingsWidget(d); }); } -MimeTypeSettings::~MimeTypeSettings() -{ - delete d; -} - QStringList MimeTypeSettings::keywords() const { return { @@ -795,14 +804,6 @@ QStringList MimeTypeSettings::keywords() const }; } -void MimeTypeSettings::restoreSettings() -{ - MimeTypeSettingsPrivate::UserMimeTypeHash mimetypes - = MimeTypeSettingsPrivate::readUserModifiedMimeTypes(); - MimeTypeSettingsPrivate::m_userModifiedMimeTypes = mimetypes; - Utils::addMimeInitializer([mimetypes] { registerUserModifiedMimeTypes(mimetypes); }); -} - QWidget *MimeEditorDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const @@ -836,4 +837,15 @@ void MimeEditorDelegate::setModelData(QWidget *editor, int(MimeTypeSettingsModel::Role::DefaultHandler)); } +void setupMimeTypeSettings(QObject *guard) +{ + auto page = new MimeTypeSettings; + QObject::connect(guard, &QObject::destroyed, [page] { delete page; }); + + MimeTypeSettingsPrivate::UserMimeTypeHash mimetypes + = MimeTypeSettingsPrivate::readUserModifiedMimeTypes(); + MimeTypeSettingsPrivate::m_userModifiedMimeTypes = mimetypes; + Utils::addMimeInitializer([mimetypes] { registerUserModifiedMimeTypes(mimetypes); }); +} + } // Core::Internal diff --git a/src/plugins/coreplugin/mimetypesettings.h b/src/plugins/coreplugin/mimetypesettings.h index 1080b0746b9..c65d8d0f365 100644 --- a/src/plugins/coreplugin/mimetypesettings.h +++ b/src/plugins/coreplugin/mimetypesettings.h @@ -3,24 +3,10 @@ #pragma once -#include "dialogs/ioptionspage.h" +#include namespace Core::Internal { -class MimeTypeSettingsPrivate; - -class MimeTypeSettings : public IOptionsPage -{ -public: - MimeTypeSettings(); - ~MimeTypeSettings() override; - - QStringList keywords() const override; - - static void restoreSettings(); - -private: - MimeTypeSettingsPrivate *d; -}; +void setupMimeTypeSettings(QObject *guard); } // Core::Internal