From c3bd3d6a628c1571059ed981e1666c9cc7e37643 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Mon, 21 Feb 2022 15:41:16 +0100 Subject: [PATCH] qds: make code reusable Change-Id: Ic11917f8a442a1ed15482a1ea492a7cef9f2a7ff Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- src/libs/utils/CMakeLists.txt | 1 + src/libs/utils/dynamiclicensecheck.h | 68 +++++++++++++++++++ .../studiowelcome/studiowelcomeplugin.cpp | 36 ++-------- 3 files changed, 73 insertions(+), 32 deletions(-) create mode 100644 src/libs/utils/dynamiclicensecheck.h diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt index 780f3e2017a..49e2ab648d2 100644 --- a/src/libs/utils/CMakeLists.txt +++ b/src/libs/utils/CMakeLists.txt @@ -34,6 +34,7 @@ add_qtc_library(Utils differ.cpp differ.h displayname.cpp displayname.h dropsupport.cpp dropsupport.h + dynamiclicensecheck.h elfreader.cpp elfreader.h elidinglabel.cpp elidinglabel.h environment.cpp environment.h diff --git a/src/libs/utils/dynamiclicensecheck.h b/src/libs/utils/dynamiclicensecheck.h new file mode 100644 index 00000000000..634c6b28d11 --- /dev/null +++ b/src/libs/utils/dynamiclicensecheck.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include +#include +#include + +#include +#include + +#include + +namespace Utils { + +enum FoundLicense { + community, + professional, + enterprise +}; + +FoundLicense checkLicense() { + 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; +} +} // namespace Utils diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index 9c7b82d1698..72f6afcdb57 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -39,9 +39,6 @@ #include #include -#include -#include - #include #include #include @@ -59,6 +56,7 @@ #include #include #include +#include #include #include @@ -302,35 +300,9 @@ private: void ProjectModel::setupVersion() { - const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( - ExtensionSystem::PluginManager::plugins(), - Utils::equal(&ExtensionSystem::PluginSpec::name, QString("LicenseChecker"))); - - if (!pluginSpec) - return; - - ExtensionSystem::IPlugin *plugin = pluginSpec->plugin(); - - if (!plugin) - return; - - m_communityVersion = false; - - bool retVal = false; - bool success = QMetaObject::invokeMethod(plugin, - "qdsEnterpriseLicense", - Qt::DirectConnection, - Q_RETURN_ARG(bool, retVal)); - - if (!success) { - qWarning("Check for Qt Design Studio Enterprise License failed."); - return; - } - if (!retVal) { - qWarning("No Qt Design Studio Enterprise License. Disabling asset importer."); - return; - } - m_enterpriseVersion = true; + Utils::FoundLicense license = Utils::checkLicense(); + m_communityVersion = license == Utils::FoundLicense::community; + m_enterpriseVersion = license == Utils::FoundLicense::enterprise; } ProjectModel::ProjectModel(QObject *parent)