aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2022-04-01 16:26:09 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2022-04-11 13:02:18 +0000
commit03385ef86ba3bf0df63a443aff4c2ca4ba5cd9e9 (patch)
tree1fbbf4f9e3072a2654c90636340b35d3a5b1771e
parentfa7e61981dd95f900dcaa5ede35ee3bff65b4319 (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.cpp59
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