From f487143848ccddd9825f7782adae76622c61d92c Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 11 Mar 2022 18:17:00 +0100 Subject: [PATCH] qds: extra code to handle license in about dialog Change-Id: If9b493a4c9582b1fefac3dcaf31d34ef08eb6e6d Reviewed-by: Reviewed-by: Eike Ziller --- src/plugins/qmldesigner/dynamiclicensecheck.h | 57 +++++++++++++------ src/plugins/qmldesigner/qmldesignerplugin.cpp | 17 ++++-- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/plugins/qmldesigner/dynamiclicensecheck.h b/src/plugins/qmldesigner/dynamiclicensecheck.h index 8cc7982895c..fb1e3661b85 100644 --- a/src/plugins/qmldesigner/dynamiclicensecheck.h +++ b/src/plugins/qmldesigner/dynamiclicensecheck.h @@ -42,27 +42,48 @@ enum FoundLicense { enterprise }; -FoundLicense checkLicense() { +namespace Internal { +ExtensionSystem::IPlugin *licenseCheckerPlugin() +{ const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( ExtensionSystem::PluginManager::plugins(), Utils::equal(&ExtensionSystem::PluginSpec::name, QString("LicenseChecker"))); - if (!pluginSpec) - return community; - - ExtensionSystem::IPlugin *plugin = pluginSpec->plugin(); - - if (!plugin) - return community; - - bool retVal = false; - bool success = QMetaObject::invokeMethod(plugin, - "qdsEnterpriseLicense", - Qt::DirectConnection, - Q_RETURN_ARG(bool, retVal)); - if (success && retVal) - return enterprise; - - return professional; + if (pluginSpec) + return pluginSpec->plugin(); + return nullptr; } +} // namespace Internal + + +FoundLicense checkLicense() +{ + if (auto plugin = Internal::licenseCheckerPlugin()) { + bool retVal = false; + bool success = QMetaObject::invokeMethod(plugin, + "qdsEnterpriseLicense", + Qt::DirectConnection, + Q_RETURN_ARG(bool, retVal)); + if (success && retVal) + return enterprise; + else + return professional; + } + return community; +} + +QString licensee() +{ + if (auto plugin = Internal::licenseCheckerPlugin()) { + QString retVal; + bool success = QMetaObject::invokeMethod(plugin, + "licensee", + Qt::DirectConnection, + Q_RETURN_ARG(QString, retVal)); + if (success) + return retVal; + } + return {}; +} + } // namespace Utils diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index b9ea5c5107b..8b35c6f917c 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -35,6 +35,7 @@ #include "qmldesignerconstants.h" #include "qmldesignerprojectmanager.h" #include "settingspage.h" +#include "dynamiclicensecheck.h" #include #include @@ -312,14 +313,22 @@ bool QmlDesignerPlugin::delayedInitialize() d->viewManager.registerFormEditorTool(std::make_unique()); if (QmlProjectManager::QmlProject::isQtDesignStudio()) { + d->mainWidget.initialize(); + emitUsageStatistics("StandaloneMode"); if (QmlProjectManager::QmlProject::isQtDesignStudioStartedFromQtC()) emitUsageStatistics("QDSlaunchedFromQtC"); - emitUsageStatistics("QDSstartupCount"); - } + emitUsageStatistics("QDSstartupCount"); - if (QmlProjectManager::QmlProject::isQtDesignStudio()) - d->mainWidget.initialize(); + FoundLicense license = checkLicense(); + if (license == FoundLicense::enterprise) + Core::ICore::appendAboutInformation(tr("License: Enterprise")); + else if (license == FoundLicense::professional) + Core::ICore::appendAboutInformation(tr("License: Professional")); + + if (!licensee().isEmpty()) + Core::ICore::appendAboutInformation(tr("Licensee: %1").arg(licensee())); + } return true; }