diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2022-04-01 16:26:09 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2022-04-11 13:02:18 +0000 |
commit | 03385ef86ba3bf0df63a443aff4c2ca4ba5cd9e9 (patch) | |
tree | 1fbbf4f9e3072a2654c90636340b35d3a5b1771e | |
parent | fa7e61981dd95f900dcaa5ede35ee3bff65b4319 (diff) |
Add license information for Qt Design Studio
This adds QDS specific license information and mark
Qt Design Studio as isQtDesignStudio: true in qtcLicense.
I also adjusted the user visible strings.
Change-Id: Icd668a10bb47944f7de2485f540666678643e552
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r-- | src/datasources/qtclicensesource.cpp | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/src/datasources/qtclicensesource.cpp b/src/datasources/qtclicensesource.cpp index bee2c8c..8eaec55 100644 --- a/src/datasources/qtclicensesource.cpp +++ b/src/datasources/qtclicensesource.cpp @@ -24,6 +24,7 @@ ****************************************************************************/ #include "qtclicensesource.h" +#include <app/app_version.h> #include <coreplugin/icore.h> #include <extensionsystem/iplugin.h> #include <extensionsystem/pluginmanager.h> @@ -36,24 +37,45 @@ namespace Internal { using namespace KUserFeedback; +static QString applicationName() +{ + return Core::Constants::IDE_DISPLAY_NAME; +} + +static bool isQtDesignStudio() +{ + return applicationName() == "Qt Design Studio"; +} + +static const auto evaluationStr = QStringLiteral("evaluation"); +static const auto opensourceStr = QStringLiteral("opensource"); +static const auto commercialStr = QStringLiteral("commercial"); +static const auto communityStr = QStringLiteral("community"); +static const auto enterpriseStr = QStringLiteral("enterprise"); +static const auto professionalStr = QStringLiteral("professional"); +static const auto joinStr = QStringLiteral(", "); + +static QString possibleLicenses() +{ + if (isQtDesignStudio()) + return QStringList({communityStr, professionalStr, enterpriseStr}).join(joinStr); + return QStringList({opensourceStr, evaluationStr, commercialStr}).join(joinStr); +} + QtcLicenseSource::QtcLicenseSource() : AbstractDataSource(QStringLiteral("qtcLicense"), Provider::DetailedUsageStatistics) {} QString QtcLicenseSource::description() const { - return tr("Qt Creator license type string: opensource, evaluation, commercial"); + return tr("%1 license type string: %2").arg(applicationName()).arg(possibleLicenses()); } QString QtcLicenseSource::name() const { - return tr("Qt Creator license"); + return tr("%1 license").arg(applicationName()); } -static const auto evaluationStr = QStringLiteral("evaluation"); -static const auto opensourceStr = QStringLiteral("opensource"); -static const auto commercialStr = QStringLiteral("commercial"); - static bool isLicenseChecker(const ExtensionSystem::PluginSpec *spec) { if (!spec) { @@ -78,20 +100,39 @@ static bool hasEvaluationLicense(ExtensionSystem::IPlugin *plugin) return isEvaluation; } +QString getQDSLicense(ExtensionSystem::IPlugin *plugin) +{ + if (!plugin) + return communityStr; + + bool retVal = false; + bool success = QMetaObject::invokeMethod(plugin, + "qdsEnterpriseLicense", + Qt::DirectConnection, + Q_RETURN_ARG(bool, retVal)); + + return (success && retVal) ? enterpriseStr : professionalStr; +} + static QString licenseString() { const auto plugins = ExtensionSystem::PluginManager::plugins(); const auto it = std::find_if(plugins.begin(), plugins.end(), &isLicenseChecker); - if (it != plugins.end()) { - return hasEvaluationLicense((*it)->plugin()) ? evaluationStr: commercialStr; + + if (isQtDesignStudio()) { + if (it != plugins.end()) + return getQDSLicense((*it)->plugin()); + return communityStr; } + if (it != plugins.end()) + return hasEvaluationLicense((*it)->plugin()) ? evaluationStr: commercialStr; return opensourceStr; } QVariant QtcLicenseSource::data() { - return QVariantMap{{"value", licenseString()}}; + return QVariantMap{{"value", licenseString()}, {"isQtDesignStudio", isQtDesignStudio()}}; } } // namespace Internal |