diff --git a/part.cpp b/part.cpp index f227d6d4c879643ee8ac890fa21ada78d3530b14..ca1a453f773b4ee8d5440c06989a97a206906e55 100644 --- a/part.cpp +++ b/part.cpp @@ -49,7 +49,7 @@ #include #include -#include +#include #include #include #include @@ -3019,15 +3019,20 @@ void Part::enableExitAfterPrint() m_cliPrintAndExit = true; } +static const char *kKPlugin = "KPlugin"; + void Part::slotAboutBackend() { const KPluginMetaData data = m_document->generatorInfo(); if (!data.isValid()) return; - KAboutData aboutData = KAboutData::fromPluginMetaData(data); - - QIcon icon = QIcon::fromTheme(data.iconName()); + // Here we do a bit of magic because KPluginMetaData doesn't have setters + // so we get the json info from it, modify it and use that for the KAboutPluginDialog + // in case the internals of KPluginMetaData change it won't be too bad, at most we're + // missing the icon or the generator extra description + QJsonObject rawData = data.rawData(); + const QIcon icon = QIcon::fromTheme(data.iconName()); // fall back to mime type icon if (icon.isNull()) { @@ -3037,22 +3042,23 @@ void Part::slotAboutBackend() QMimeDatabase db; QMimeType type = db.mimeTypeForName(mimeTypeName); if (type.isValid()) { - icon = QIcon::fromTheme(type.iconName()); + QJsonObject kplugin = rawData[kKPlugin].toObject(); + kplugin[QStringLiteral("Icon")] = type.iconName(); + rawData[kKPlugin] = kplugin; } } } const QString extraDescription = m_document->metaData(QStringLiteral("GeneratorExtraDescription")).toString(); - if (!extraDescription.isEmpty()) { - aboutData.setShortDescription(aboutData.shortDescription() + QStringLiteral("\n\n") + extraDescription); - } - if (!icon.isNull()) { - // 48x48 is what KAboutApplicationDialog wants, which doesn't match any default so we hardcode it - aboutData.setProgramLogo(icon.pixmap(48, 48)); + if (!extraDescription.isEmpty()) { + const QString descriptionAndLang = QStringLiteral("Description[%1]").arg(QLocale().name()); + QJsonObject kplugin = rawData[kKPlugin].toObject(); + kplugin[descriptionAndLang] = QStringLiteral("%1\n\n%2").arg(data.description(), extraDescription); + rawData[kKPlugin] = kplugin; } - KAboutApplicationDialog dlg(aboutData, widget()); + KAboutPluginDialog dlg(KPluginMetaData(rawData, data.fileName()), widget()); dlg.exec(); }