Core: Register mimetype of softload plugin

Change-Id: I81713d951caaf4e2d97fa1a58c4f512a280af351
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-11-09 14:22:52 +01:00
parent bbfbfec4e6
commit e799bcae6c
3 changed files with 17 additions and 6 deletions

View File

@@ -126,17 +126,22 @@ CoreArguments parseArguments(const QStringList &arguments)
return args;
}
void CorePlugin::loadMimeFromPlugin(const ExtensionSystem::PluginSpec *plugin)
{
const QJsonObject metaData = plugin->metaData();
const QJsonValue mimetypes = metaData.value("Mimetypes");
QString mimetypeString;
if (Utils::readMultiLineString(mimetypes, &mimetypeString))
Utils::addMimeTypes(plugin->name() + ".mimetypes", mimetypeString.trimmed().toUtf8());
}
bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage)
{
// register all mime types from all plugins
for (ExtensionSystem::PluginSpec *plugin : ExtensionSystem::PluginManager::plugins()) {
if (!plugin->isEffectivelyEnabled())
continue;
const QJsonObject metaData = plugin->metaData();
const QJsonValue mimetypes = metaData.value("Mimetypes");
QString mimetypeString;
if (Utils::readMultiLineString(mimetypes, &mimetypeString))
Utils::addMimeTypes(plugin->name() + ".mimetypes", mimetypeString.trimmed().toUtf8());
loadMimeFromPlugin(plugin);
}
if (ThemeEntry::availableThemes().isEmpty()) {

View File

@@ -7,6 +7,7 @@
#include <qglobal.h>
#include <extensionsystem/iplugin.h>
#include <extensionsystem/pluginspec.h>
#include <utils/environment.h>
#include <memory>
@@ -54,6 +55,8 @@ public:
static void setEnvironmentChanges(const Utils::EnvironmentItems &changes);
static QString msgCrashpadInformation();
static void loadMimeFromPlugin(const ExtensionSystem::PluginSpec *plugin);
public slots:
void fileOpenRequest(const QString &);

View File

@@ -3,6 +3,7 @@
#include "plugindialog.h"
#include "coreplugin.h"
#include "coreplugintr.h"
#include "dialogs/restartdialog.h"
#include "icore.h"
@@ -87,8 +88,10 @@ void PluginDialog::closeDialog()
{
PluginManager::writeSettings();
for (PluginSpec *plugin : m_softLoad)
for (PluginSpec *plugin : m_softLoad) {
PluginManager::loadPlugin(plugin);
CorePlugin::loadMimeFromPlugin(plugin);
}
if (m_isRestartRequired) {
RestartDialog restartDialog(ICore::dialogParent(),