From 7e3585a64e08dfd312c1915b1ffdfb752f6940f7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 21 Feb 2022 18:47:44 +0100 Subject: [PATCH 01/45] QmlDesigner: Introduce dependencies for imports QtQuick3D is added as a prefix dependency. This means that if any import, that starts with QtQuick3D is added we add QtQuick3D first. Task-number: QDS-6199 Change-Id: Ic105bf0fb53a7beaa80be69f99e6bc55edd140c1 Reviewed-by: Mahmoud Badri Reviewed-by: Miikka Heikkinen Reviewed-by: --- .../itemlibrary/itemlibrarywidget.cpp | 27 ++++++++++++++++++- .../itemlibrary/itemlibrarywidget.h | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 7b8c0c2a3f4..516dfa233b1 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -254,6 +254,20 @@ void ItemLibraryWidget::handleSearchfilterChanged(const QString &filterText) } } +QString ItemLibraryWidget::getDependencyImport(const Import &import) +{ + static QStringList prefixDependencies = {"QtQuick3D"}; + + const QStringList splitImport = import.url().split('.'); + + if (splitImport.count() > 1) { + if (prefixDependencies.contains(splitImport.first())) + return splitImport.first(); + } + + return {}; +} + void ItemLibraryWidget::handleAddImport(int index) { Import import = m_addModuleModel->getImportAt(index); @@ -263,8 +277,19 @@ void ItemLibraryWidget::handleAddImport(int index) + import.toImportString()); } + QList imports; + const QString dependency = getDependencyImport(import); + auto document = QmlDesignerPlugin::instance()->currentDesignDocument(); - document->documentModel()->changeImports({import}, {}); + Model *model = document->documentModel(); + + if (!dependency.isEmpty()) { + Import dependencyImport = m_addModuleModel->getImport(dependency); + if (!dependencyImport.isEmpty()) + imports.append(dependencyImport); + } + imports.append(import); + model->changeImports(imports, {}); QMetaObject::invokeMethod(m_itemsWidget->rootObject(), "switchToComponentsView"); updateSearch(); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h index 7a3db274f84..500b3f71970 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h @@ -110,6 +110,7 @@ private: void updateSearch(); void handlePriorityImportsChanged(); + static QString getDependencyImport(const Import &import); QTimer m_compressionTimer; QSize m_itemIconSize; From d73fbbcb97bb47f8804b67ead0052e145badc0ad Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 22 Feb 2022 13:20:55 +0100 Subject: [PATCH 02/45] LanguageClient: send exit notification after failed shutdown Despite receiving an error in the shutdown response continue to exit the server. Otherwise we end up with an unusable client. Change-Id: Iacff38699cb4e5bcc5610eba1654047bf7f8ce80 Reviewed-by: Christian Kandeler --- src/plugins/languageclient/client.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 2b7594539cc..eb2633fef1b 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -1560,12 +1560,8 @@ void Client::shutDownCallback(const ShutdownRequest::Response &shutdownResponse) m_shutdownTimer.stop(); QTC_ASSERT(m_state == ShutdownRequested, return); QTC_ASSERT(m_clientInterface, return); - optional errorValue = shutdownResponse.error(); - if (errorValue.has_value()) { - ShutdownRequest::Response::Error error = errorValue.value(); - qDebug() << error; - return; - } + if (optional error = shutdownResponse.error()) + log(*error); // directly send message otherwise the state check of sendContent would fail sendMessage(ExitNotification().toBaseMessage()); qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " shutdown"; From ec80ae2322a78f43a27c6fd2f6daea2728087b9c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 21 Feb 2022 16:12:02 +0100 Subject: [PATCH 03/45] Tests: Fix dumper execution on macOS macOS may print warnings on stderr when running qmake which in turn stops the test before starting to build. Change-Id: I01750e984916b3e16f5d5737e44cd5a2c6e0433b Reviewed-by: hjk --- tests/auto/debugger/tst_dumpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 3b2342e97e3..4c6c9919d0c 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -1648,7 +1648,7 @@ void tst_Dumpers::dumper() if (data.allProfile.isEmpty()) { // Nim... if (!error.isEmpty()) { - qDebug() << error; QVERIFY(false); + qDebug() << error; QVERIFY(qmake.exitCode() == 0); } } } From 7d9bb3f7e813089f6c2a39637ef8c3371877c343 Mon Sep 17 00:00:00 2001 From: Christiaan Janssen Date: Mon, 21 Feb 2022 15:24:46 +0100 Subject: [PATCH 04/45] McuSupport: refactor McuPackage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rename 'type' to 'toolChainType' in McuToolChainPackage 'addToPath' and 'relativePath' set in McuPackage constructor put McuToolChainPackage methods together in same source file 'detectionPath' type changed from QString to FilePath renamed boolean getters Task-number: QTCREATORBUG-26897 Change-Id: If59c299901a169d08efa8f39614ef7c6d48d44ed Reviewed-by: Piotr Mućko Reviewed-by: Alessandro Portale Reviewed-by: --- src/plugins/mcusupport/mcuabstractpackage.h | 20 +- src/plugins/mcusupport/mcukitmanager.cpp | 57 +-- src/plugins/mcusupport/mcupackage.cpp | 479 ++++++++++++------ src/plugins/mcusupport/mcupackage.h | 44 +- src/plugins/mcusupport/mcusupportoptions.cpp | 54 +- .../mcusupport/mcusupportoptionspage.cpp | 2 +- src/plugins/mcusupport/mcusupportsdk.cpp | 57 ++- .../mcusupport/mcusupportversiondetection.cpp | 4 +- .../mcusupport/mcusupportversiondetection.h | 5 +- src/plugins/mcusupport/mcutarget.cpp | 188 +------ src/plugins/mcusupport/test/packagemock.h | 8 +- src/plugins/mcusupport/test/unittest.cpp | 2 +- 12 files changed, 461 insertions(+), 459 deletions(-) diff --git a/src/plugins/mcusupport/mcuabstractpackage.h b/src/plugins/mcusupport/mcuabstractpackage.h index 9406b474fb9..e0499ef06fa 100644 --- a/src/plugins/mcusupport/mcuabstractpackage.h +++ b/src/plugins/mcusupport/mcuabstractpackage.h @@ -45,22 +45,22 @@ public: ValidPackage }; + virtual QString label() const = 0; + virtual const QString &environmentVariableName() const = 0; + virtual bool isAddToSystemPath() const = 0; + virtual void setVersions(const QStringList &) = 0; + virtual Utils::FilePath basePath() const = 0; virtual Utils::FilePath path() const = 0; - virtual QString label() const = 0; virtual Utils::FilePath defaultPath() const = 0; - virtual QString detectionPath() const = 0; - virtual QString statusText() const = 0; - virtual void updateStatus() = 0; + virtual Utils::FilePath detectionPath() const = 0; + virtual void updateStatus() = 0; virtual Status status() const = 0; - virtual bool validStatus() const = 0; - virtual const QString &environmentVariableName() const = 0; - virtual void setAddToPath(bool) = 0; - virtual bool addToPath() const = 0; + virtual QString statusText() const = 0; + virtual bool isValidStatus() const = 0; + virtual bool writeToSettings() const = 0; - virtual void setRelativePathModifier(const QString &) = 0; - virtual void setVersions(const QStringList &) = 0; virtual QWidget *widget() = 0; diff --git a/src/plugins/mcusupport/mcukitmanager.cpp b/src/plugins/mcusupport/mcukitmanager.cpp index 5fffe2b8da3..6b52b475cb0 100644 --- a/src/plugins/mcusupport/mcukitmanager.cpp +++ b/src/plugins/mcusupport/mcukitmanager.cpp @@ -68,19 +68,19 @@ static FilePath qulDocsDir() static void setKitToolchains(Kit *k, const McuToolChainPackage *tcPackage) { - switch (tcPackage->type()) { - case McuToolChainPackage::Type::Unsupported: + switch (tcPackage->toolchainType()) { + case McuToolChainPackage::ToolChainType::Unsupported: return; - case McuToolChainPackage::Type::GHS: - case McuToolChainPackage::Type::GHSArm: + case McuToolChainPackage::ToolChainType::GHS: + case McuToolChainPackage::ToolChainType::GHSArm: return; // No Green Hills toolchain, because support for it is missing. - case McuToolChainPackage::Type::IAR: - case McuToolChainPackage::Type::KEIL: - case McuToolChainPackage::Type::MSVC: - case McuToolChainPackage::Type::GCC: - case McuToolChainPackage::Type::ArmGcc: + case McuToolChainPackage::ToolChainType::IAR: + case McuToolChainPackage::ToolChainType::KEIL: + case McuToolChainPackage::ToolChainType::MSVC: + case McuToolChainPackage::ToolChainType::GCC: + case McuToolChainPackage::ToolChainType::ArmGcc: ToolChainKitAspect::setToolChain(k, tcPackage->toolChain( ProjectExplorer::Constants::C_LANGUAGE_ID)); @@ -136,17 +136,17 @@ static void setKitDebugger(Kit *k, const McuToolChainPackage *tcPackage) return; } - switch (tcPackage->type()) { - case McuToolChainPackage::Type::Unsupported: - case McuToolChainPackage::Type::GHS: - case McuToolChainPackage::Type::GHSArm: - case McuToolChainPackage::Type::IAR: + switch (tcPackage->toolchainType()) { + case McuToolChainPackage::ToolChainType::Unsupported: + case McuToolChainPackage::ToolChainType::GHS: + case McuToolChainPackage::ToolChainType::GHSArm: + case McuToolChainPackage::ToolChainType::IAR: return; // No Green Hills and IAR debugger, because support for it is missing. - case McuToolChainPackage::Type::KEIL: - case McuToolChainPackage::Type::MSVC: - case McuToolChainPackage::Type::GCC: - case McuToolChainPackage::Type::ArmGcc: { + case McuToolChainPackage::ToolChainType::KEIL: + case McuToolChainPackage::ToolChainType::MSVC: + case McuToolChainPackage::ToolChainType::GCC: + case McuToolChainPackage::ToolChainType::ArmGcc: { const QVariant debuggerId = tcPackage->debuggerId(); if (debuggerId.isValid()) { Debugger::DebuggerKitAspect::setDebugger(k, debuggerId); @@ -182,7 +182,7 @@ static void setKitDependencies(Kit *k, auto processPackage = [&dependencies](const McuAbstractPackage *package) { if (!package->environmentVariableName().isEmpty()) dependencies.append({package->environmentVariableName(), - QDir::toNativeSeparators(package->detectionPath())}); + package->detectionPath().toUserOutput()}); }; for (auto package : mcuTarget->packages()) processPackage(package); @@ -201,8 +201,8 @@ static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePat CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); // CMake ToolChain file for ghs handles CMAKE_*_COMPILER autonomously - if (mcuTarget->toolChainPackage()->type() != McuToolChainPackage::Type::GHS - && mcuTarget->toolChainPackage()->type() != McuToolChainPackage::Type::GHSArm) { + if (mcuTarget->toolChainPackage()->toolchainType() != McuToolChainPackage::ToolChainType::GHS + && mcuTarget->toolChainPackage()->toolchainType() != McuToolChainPackage::ToolChainType::GHSArm) { config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}")); config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}")); } @@ -240,8 +240,8 @@ static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePat CMakeConfigurationKitAspect::setConfiguration(k, config); if (HostOsInfo::isWindowsHost()) { - auto type = mcuTarget->toolChainPackage()->type(); - if (type == McuToolChainPackage::Type::GHS || type == McuToolChainPackage::Type::GHSArm) { + auto type = mcuTarget->toolChainPackage()->toolchainType(); + if (type == McuToolChainPackage::ToolChainType::GHS || type == McuToolChainPackage::ToolChainType::GHSArm) { // See https://bugreports.qt.io/browse/UL-4247?focusedCommentId=565802&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-565802 // and https://bugreports.qt.io/browse/UL-4247?focusedCommentId=565803&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-565803 CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM"); @@ -389,13 +389,12 @@ void createAutomaticKits() const auto createKits = [qtForMCUsPackage]() { if (McuSupportOptions::automaticKitCreationFromSettings()) { qtForMCUsPackage->updateStatus(); - if (!qtForMCUsPackage->validStatus()) { + if (!qtForMCUsPackage->isValidStatus()) { switch (qtForMCUsPackage->status()) { case McuAbstractPackage::Status::ValidPathInvalidPackage: { - const QString displayPath - = FilePath::fromString(qtForMCUsPackage->detectionPath()).toUserOutput(); printMessage(McuPackage::tr("Path %1 exists, but does not contain %2.") - .arg(qtForMCUsPackage->path().toUserOutput(), displayPath), + .arg(qtForMCUsPackage->path().toUserOutput(), + qtForMCUsPackage->detectionPath().toUserOutput()), true); break; } @@ -408,7 +407,7 @@ void createAutomaticKits() } case McuAbstractPackage::Status::EmptyPath: { printMessage(McuPackage::tr("Missing %1. Add the path in Tools > Options > Devices > MCU.") - .arg(qtForMCUsPackage->detectionPath()), + .arg(qtForMCUsPackage->detectionPath().toUserOutput()), true); return; } @@ -575,7 +574,7 @@ void fixExistingKits() // Fix kit dependencies for known targets auto qtForMCUsPackage = Sdk::createQtForMCUsPackage(); qtForMCUsPackage->updateStatus(); - if (qtForMCUsPackage->validStatus()) { + if (qtForMCUsPackage->isValidStatus()) { FilePath dir = qtForMCUsPackage->path(); McuSdkRepository repo; Sdk::targetsAndPackages(dir, &repo); diff --git a/src/plugins/mcusupport/mcupackage.cpp b/src/plugins/mcusupport/mcupackage.cpp index f108ca67f83..197389515aa 100644 --- a/src/plugins/mcusupport/mcupackage.cpp +++ b/src/plugins/mcusupport/mcupackage.cpp @@ -28,26 +28,36 @@ #include "mcusupportversiondetection.h" #include "mcusupportsdk.h" +#include #include +#include #include #include #include +#include +#include +#include +#include +#include #include #include #include +using namespace ProjectExplorer; using namespace Utils; namespace McuSupport::Internal { McuPackage::McuPackage(const QString &label, const FilePath &defaultPath, - const QString &detectionPath, + const FilePath &detectionPath, const QString &settingsKey, const QString &envVarName, const QString &downloadUrl, - const McuPackageVersionDetector *versionDetector) + const McuPackageVersionDetector *versionDetector, + const bool addToSystemPath, + const FilePath &relativePathModifier) : m_label(label) , m_defaultPath(Sdk::packagePathFromSettings(settingsKey, QSettings::SystemScope, defaultPath)) , m_detectionPath(detectionPath) @@ -55,10 +65,32 @@ McuPackage::McuPackage(const QString &label, , m_versionDetector(versionDetector) , m_environmentVariableName(envVarName) , m_downloadUrl(downloadUrl) + , m_addToSystemPath(addToSystemPath) + , m_relativePathModifier(relativePathModifier) { m_path = Sdk::packagePathFromSettings(settingsKey, QSettings::UserScope, m_defaultPath); } +QString McuPackage::label() const +{ + return m_label; +} + +const QString &McuPackage::environmentVariableName() const +{ + return m_environmentVariableName; +} + +bool McuPackage::isAddToSystemPath() const +{ + return m_addToSystemPath; +} + +void McuPackage::setVersions(const QStringList &versions) +{ + m_versions = versions; +} + FilePath McuPackage::basePath() const { return m_fileChooser != nullptr ? m_fileChooser->filePath() : m_path; @@ -69,21 +101,131 @@ FilePath McuPackage::path() const return basePath().resolvePath(m_relativePathModifier).absoluteFilePath(); } -QString McuPackage::label() const -{ - return m_label; -} - FilePath McuPackage::defaultPath() const { return m_defaultPath; } -QString McuPackage::detectionPath() const +FilePath McuPackage::detectionPath() const { return m_detectionPath; } +void McuPackage::updatePath() +{ + m_path = m_fileChooser->rawFilePath(); + m_fileChooser->lineEdit()->button(FancyLineEdit::Right)->setEnabled(m_path != m_defaultPath); + updateStatus(); +} + +void McuPackage::updateStatus() +{ + bool validPath = !m_path.isEmpty() && m_path.exists(); + const FilePath detectionPath = basePath().resolvePath(m_detectionPath); + const bool validPackage = m_detectionPath.isEmpty() || detectionPath.exists(); + m_detectedVersion = validPath && validPackage && m_versionDetector + ? m_versionDetector->parseVersion(basePath().toString()) + : QString(); + const bool validVersion = m_detectedVersion.isEmpty() || m_versions.isEmpty() + || m_versions.contains(m_detectedVersion); + + m_status = validPath ? (validPackage ? (validVersion ? Status::ValidPackage + : Status::ValidPackageMismatchedVersion) + : Status::ValidPathInvalidPackage) + : m_path.isEmpty() ? Status::EmptyPath + : Status::InvalidPath; + + emit statusChanged(); +} + +McuPackage::Status McuPackage::status() const +{ + return m_status; +} + +bool McuPackage::isValidStatus() const +{ + return m_status == Status::ValidPackage || m_status == Status::ValidPackageMismatchedVersion; +} + + +void McuPackage::updateStatusUi() +{ + switch (m_status) { + case Status::ValidPackage: + m_infoLabel->setType(InfoLabel::Ok); + break; + case Status::ValidPackageMismatchedVersion: + m_infoLabel->setType(InfoLabel::Warning); + break; + default: + m_infoLabel->setType(InfoLabel::NotOk); + break; + } + m_infoLabel->setText(statusText()); +} + +QString McuPackage::statusText() const +{ + const QString displayPackagePath = m_path.toUserOutput(); + const QString displayVersions = m_versions.join(" or "); + const QString outDetectionPath = m_detectionPath.toUserOutput(); + const QString displayRequiredPath = m_versions.empty() ? outDetectionPath + : QString("%1 %2").arg(outDetectionPath, + displayVersions); + const QString displayDetectedPath = m_versions.empty() + ? outDetectionPath + : QString("%1 %2").arg(outDetectionPath, + m_detectedVersion); + + QString response; + switch (m_status) { + case Status::ValidPackage: + response = m_detectionPath.isEmpty() + ? (m_detectedVersion.isEmpty() + ? tr("Path %1 exists.").arg(displayPackagePath) + : tr("Path %1 exists. Version %2 was found.") + .arg(displayPackagePath, m_detectedVersion)) + : tr("Path %1 is valid, %2 was found.") + .arg(displayPackagePath, displayDetectedPath); + break; + case Status::ValidPackageMismatchedVersion: { + const QString versionWarning + = m_versions.size() == 1 + ? tr("but only version %1 is supported").arg(m_versions.first()) + : tr("but only versions %1 are supported").arg(displayVersions); + response = tr("Path %1 is valid, %2 was found, %3.") + .arg(displayPackagePath, displayDetectedPath, versionWarning); + break; + } + case Status::ValidPathInvalidPackage: + response = tr("Path %1 exists, but does not contain %2.") + .arg(displayPackagePath, displayRequiredPath); + break; + case Status::InvalidPath: + response = tr("Path %1 does not exist.").arg(displayPackagePath); + break; + case Status::EmptyPath: + response = m_detectionPath.isEmpty() + ? tr("Path is empty.") + : tr("Path is empty, %1 not found.").arg(displayRequiredPath); + break; + } + return response; +} + +bool McuPackage::writeToSettings() const +{ + const FilePath savedPath = Sdk::packagePathFromSettings(m_settingsKey, + QSettings::UserScope, + m_defaultPath); + const QString key = QLatin1String(Constants::SETTINGS_GROUP) + '/' + + QLatin1String(Constants::SETTINGS_KEY_PACKAGE_PREFIX) + m_settingsKey; + Core::ICore::settings()->setValueWithDefault(key, m_path.toString(), m_defaultPath.toString()); + + return savedPath != m_path; +} + QWidget *McuPackage::widget() { if (m_widget) @@ -127,164 +269,201 @@ QWidget *McuPackage::widget() return m_widget; } -McuPackage::Status McuPackage::status() const -{ - return m_status; -} - -bool McuPackage::validStatus() const -{ - return m_status == Status::ValidPackage || m_status == Status::ValidPackageMismatchedVersion; -} - -const QString &McuPackage::environmentVariableName() const -{ - return m_environmentVariableName; -} - -void McuPackage::setAddToPath(bool addToPath) -{ - m_addToPath = addToPath; -} - -bool McuPackage::addToPath() const -{ - return m_addToPath; -} - -bool McuPackage::writeToSettings() const -{ - const FilePath savedPath = Sdk::packagePathFromSettings(m_settingsKey, - QSettings::UserScope, - m_defaultPath); - const QString key = QLatin1String(Constants::SETTINGS_GROUP) + '/' - + QLatin1String(Constants::SETTINGS_KEY_PACKAGE_PREFIX) + m_settingsKey; - Core::ICore::settings()->setValueWithDefault(key, m_path.toString(), m_defaultPath.toString()); - - return savedPath != m_path; -} - -void McuPackage::setRelativePathModifier(const QString &path) -{ - m_relativePathModifier = path; -} - -void McuPackage::setVersions(const QStringList &versions) -{ - m_versions = versions; -} - -void McuPackage::updatePath() -{ - m_path = m_fileChooser->rawFilePath(); - m_fileChooser->lineEdit()->button(FancyLineEdit::Right)->setEnabled(m_path != m_defaultPath); - updateStatus(); -} - -void McuPackage::updateStatus() -{ - bool validPath = !m_path.isEmpty() && m_path.exists(); - const FilePath detectionPath = basePath() / m_detectionPath; - const bool validPackage = m_detectionPath.isEmpty() || detectionPath.exists(); - m_detectedVersion = validPath && validPackage && m_versionDetector - ? m_versionDetector->parseVersion(basePath().toString()) - : QString(); - const bool validVersion = m_detectedVersion.isEmpty() || m_versions.isEmpty() - || m_versions.contains(m_detectedVersion); - - m_status = validPath ? (validPackage ? (validVersion ? Status::ValidPackage - : Status::ValidPackageMismatchedVersion) - : Status::ValidPathInvalidPackage) - : m_path.isEmpty() ? Status::EmptyPath - : Status::InvalidPath; - - emit statusChanged(); -} - -void McuPackage::updateStatusUi() -{ - switch (m_status) { - case Status::ValidPackage: - m_infoLabel->setType(InfoLabel::Ok); - break; - case Status::ValidPackageMismatchedVersion: - m_infoLabel->setType(InfoLabel::Warning); - break; - default: - m_infoLabel->setType(InfoLabel::NotOk); - break; - } - m_infoLabel->setText(statusText()); -} - -QString McuPackage::statusText() const -{ - const QString displayPackagePath = m_path.toUserOutput(); - const QString displayVersions = m_versions.join(" or "); - const QString outDetectionPath = FilePath::fromString(m_detectionPath).toUserOutput(); - const QString displayRequiredPath = m_versions.empty() ? outDetectionPath - : QString("%1 %2").arg(outDetectionPath, - displayVersions); - const QString displayDetectedPath = m_versions.empty() - ? outDetectionPath - : QString("%1 %2").arg(outDetectionPath, - m_detectedVersion); - - QString response; - switch (m_status) { - case Status::ValidPackage: - response = m_detectionPath.isEmpty() - ? (m_detectedVersion.isEmpty() - ? tr("Path %1 exists.").arg(displayPackagePath) - : tr("Path %1 exists. Version %2 was found.") - .arg(displayPackagePath, m_detectedVersion)) - : tr("Path %1 is valid, %2 was found.") - .arg(displayPackagePath, displayDetectedPath); - break; - case Status::ValidPackageMismatchedVersion: { - const QString versionWarning - = m_versions.size() == 1 - ? tr("but only version %1 is supported").arg(m_versions.first()) - : tr("but only versions %1 are supported").arg(displayVersions); - response = tr("Path %1 is valid, %2 was found, %3.") - .arg(displayPackagePath, displayDetectedPath, versionWarning); - break; - } - case Status::ValidPathInvalidPackage: - response = tr("Path %1 exists, but does not contain %2.") - .arg(displayPackagePath, displayRequiredPath); - break; - case Status::InvalidPath: - response = tr("Path %1 does not exist.").arg(displayPackagePath); - break; - case Status::EmptyPath: - response = m_detectionPath.isEmpty() - ? tr("Path is empty.") - : tr("Path is empty, %1 not found.").arg(displayRequiredPath); - break; - } - return response; -} McuToolChainPackage::McuToolChainPackage(const QString &label, const FilePath &defaultPath, - const QString &detectionPath, + const FilePath &detectionPath, const QString &settingsKey, - McuToolChainPackage::Type type, + McuToolChainPackage::ToolChainType type, const QString &envVarName, const McuPackageVersionDetector *versionDetector) : McuPackage(label, defaultPath, detectionPath, settingsKey, envVarName, {}, versionDetector) , m_type(type) {} -McuToolChainPackage::Type McuToolChainPackage::type() const +McuToolChainPackage::ToolChainType McuToolChainPackage::toolchainType() const { return m_type; } bool McuToolChainPackage::isDesktopToolchain() const { - return m_type == Type::MSVC || m_type == Type::GCC; + return m_type == ToolChainType::MSVC || m_type == ToolChainType::GCC; +} + +static ToolChain *msvcToolChain(Id language) +{ + ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { + const Abi abi = t->targetAbi(); + // TODO: Should Abi::WindowsMsvc2022Flavor be added too? + return (abi.osFlavor() == Abi::WindowsMsvc2017Flavor + || abi.osFlavor() == Abi::WindowsMsvc2019Flavor) + && abi.architecture() == Abi::X86Architecture && abi.wordWidth() == 64 + && t->language() == language; + }); + return toolChain; +} + +static ToolChain *gccToolChain(Id language) +{ + ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { + const Abi abi = t->targetAbi(); + return abi.os() != Abi::WindowsOS && abi.architecture() == Abi::X86Architecture + && abi.wordWidth() == 64 && t->language() == language; + }); + return toolChain; +} + +static ToolChain *armGccToolChain(const FilePath &path, Id language) +{ + ToolChain *toolChain = ToolChainManager::toolChain([&path, language](const ToolChain *t) { + return t->compilerCommand() == path && t->language() == language; + }); + if (!toolChain) { + ToolChainFactory *gccFactory + = Utils::findOrDefault(ToolChainFactory::allToolChainFactories(), + [](ToolChainFactory *f) { + return f->supportedToolChainType() + == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID; + }); + if (gccFactory) { + const QList detected = gccFactory->detectForImport({path, language}); + if (!detected.isEmpty()) { + toolChain = detected.first(); + toolChain->setDetection(ToolChain::ManualDetection); + toolChain->setDisplayName("Arm GCC"); + ToolChainManager::registerToolChain(toolChain); + } + } + } + + return toolChain; +} + +static ToolChain *iarToolChain(const FilePath &path, Id language) +{ + ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { + return t->typeId() == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID + && t->language() == language; + }); + if (!toolChain) { + ToolChainFactory *iarFactory + = Utils::findOrDefault(ToolChainFactory::allToolChainFactories(), + [](ToolChainFactory *f) { + return f->supportedToolChainType() + == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID; + }); + if (iarFactory) { + Toolchains detected = iarFactory->autoDetect(ToolchainDetector({}, {})); + if (detected.isEmpty()) + detected = iarFactory->detectForImport({path, language}); + for (auto tc : detected) { + if (tc->language() == language) { + toolChain = tc; + toolChain->setDetection(ToolChain::ManualDetection); + toolChain->setDisplayName("IAREW"); + ToolChainManager::registerToolChain(toolChain); + } + } + } + } + + return toolChain; +} + +ToolChain *McuToolChainPackage::toolChain(Id language) const +{ + switch (m_type) { + case ToolChainType::MSVC: + return msvcToolChain(language); + case ToolChainType::GCC: + return gccToolChain(language); + case ToolChainType::IAR: { + const FilePath compiler = path().pathAppended("/bin/iccarm").withExecutableSuffix(); + return iarToolChain(compiler, language); + } + case ToolChainType::ArmGcc: + case ToolChainType::KEIL: + case ToolChainType::GHS: + case ToolChainType::GHSArm: + case ToolChainType::Unsupported: { + const QLatin1String compilerName( + language == ProjectExplorer::Constants::C_LANGUAGE_ID ? "gcc" : "g++"); + const QString comp = QLatin1String(m_type == ToolChainType::ArmGcc ? "/bin/arm-none-eabi-%1" + : "/bar/foo-keil-%1") + .arg(compilerName); + const FilePath compiler = path().pathAppended(comp).withExecutableSuffix(); + + return armGccToolChain(compiler, language); + } + default: + Q_UNREACHABLE(); + } +} + +QString McuToolChainPackage::toolChainName() const +{ + switch (m_type) { + case ToolChainType::ArmGcc: + return QLatin1String("armgcc"); + case ToolChainType::IAR: + return QLatin1String("iar"); + case ToolChainType::KEIL: + return QLatin1String("keil"); + case ToolChainType::GHS: + return QLatin1String("ghs"); + case ToolChainType::GHSArm: + return QLatin1String("ghs-arm"); + default: + return QLatin1String("unsupported"); + } +} + +QString McuToolChainPackage::cmakeToolChainFileName() const +{ + return toolChainName() + QLatin1String(".cmake"); +} + +QVariant McuToolChainPackage::debuggerId() const +{ + using namespace Debugger; + + QString sub, displayName; + DebuggerEngineType engineType; + + switch (m_type) { + case ToolChainType::ArmGcc: { + sub = QString::fromLatin1("bin/arm-none-eabi-gdb-py"); + displayName = McuPackage::tr("Arm GDB at %1"); + engineType = Debugger::GdbEngineType; + break; + } + case ToolChainType::IAR: { + sub = QString::fromLatin1("../common/bin/CSpyBat"); + displayName = QLatin1String("CSpy"); + engineType = Debugger::NoEngineType; // support for IAR missing + break; + } + case ToolChainType::KEIL: { + sub = QString::fromLatin1("UV4/UV4"); + displayName = QLatin1String("KEIL uVision Debugger"); + engineType = Debugger::UvscEngineType; + break; + } + default: + return QVariant(); + } + + const FilePath command = path().pathAppended(sub).withExecutableSuffix(); + if (const DebuggerItem *debugger = DebuggerItemManager::findByCommand(command)) { + return debugger->id(); + } + + DebuggerItem newDebugger; + newDebugger.setCommand(command); + newDebugger.setUnexpandedDisplayName(displayName.arg(command.toUserOutput())); + newDebugger.setEngineType(engineType); + return DebuggerItemManager::registerDebugger(newDebugger); } diff --git a/src/plugins/mcusupport/mcupackage.h b/src/plugins/mcusupport/mcupackage.h index dcc9917c1ce..5a57fad9658 100644 --- a/src/plugins/mcusupport/mcupackage.h +++ b/src/plugins/mcusupport/mcupackage.h @@ -55,33 +55,35 @@ class McuPackage : public McuAbstractPackage public: McuPackage(const QString &label, const Utils::FilePath &defaultPath, - const QString &detectionPath, + const Utils::FilePath &detectionPath, const QString &settingsKey, const QString &envVarName = {}, const QString &downloadUrl = {}, - const McuPackageVersionDetector *versionDetector = nullptr); + const McuPackageVersionDetector *versionDetector = nullptr, + const bool addToPath = false, + const Utils::FilePath &relativePathModifier = Utils::FilePath()); + ~McuPackage() override = default; + QString label() const override; + const QString &environmentVariableName() const override; + bool isAddToSystemPath() const override; + void setVersions(const QStringList &versions) override; + Utils::FilePath basePath() const override; Utils::FilePath path() const override; - QString label() const override; Utils::FilePath defaultPath() const override; - QString detectionPath() const override; - QString statusText() const override; - void updateStatus() override; + Utils::FilePath detectionPath() const override; + void updateStatus() override; Status status() const override; - bool validStatus() const override; - void setAddToPath(bool addToPath) override; - bool addToPath() const override; + bool isValidStatus() const override; + QString statusText() const override; + bool writeToSettings() const override; - void setRelativePathModifier(const QString &path) override; - void setVersions(const QStringList &versions) override; QWidget *widget() override; - const QString &environmentVariableName() const override; - private: void updatePath(); void updateStatusUi(); @@ -92,17 +94,17 @@ private: const QString m_label; const Utils::FilePath m_defaultPath; - const QString m_detectionPath; + const Utils::FilePath m_detectionPath; const QString m_settingsKey; const McuPackageVersionDetector *m_versionDetector; Utils::FilePath m_path; - QString m_relativePathModifier; // relative path to m_path to be returned by path() + Utils::FilePath m_relativePathModifier; // relative path to m_path to be returned by path() QString m_detectedVersion; QStringList m_versions; const QString m_environmentVariableName; const QString m_downloadUrl; - bool m_addToPath = false; + const bool m_addToSystemPath; Status m_status = Status::InvalidPath; }; @@ -110,17 +112,17 @@ private: class McuToolChainPackage : public McuPackage { public: - enum class Type { IAR, KEIL, MSVC, GCC, ArmGcc, GHS, GHSArm, Unsupported }; + enum class ToolChainType { IAR, KEIL, MSVC, GCC, ArmGcc, GHS, GHSArm, Unsupported }; McuToolChainPackage(const QString &label, const Utils::FilePath &defaultPath, - const QString &detectionPath, + const Utils::FilePath &detectionPath, const QString &settingsKey, - Type type, + ToolChainType toolchainType, const QString &envVarName = {}, const McuPackageVersionDetector *versionDetector = nullptr); - Type type() const; + ToolChainType toolchainType() const; bool isDesktopToolchain() const; ProjectExplorer::ToolChain *toolChain(Utils::Id language) const; QString toolChainName() const; @@ -128,7 +130,7 @@ public: QVariant debuggerId() const; private: - const Type m_type; + const ToolChainType m_type; }; } // namespace Internal diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index a5915c7affc..cc61de078a4 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -134,7 +134,7 @@ void McuSupportOptions::setQulDir(const FilePath &dir) { deletePackagesAndTargets(); qtForMCUsSdkPackage->updateStatus(); - if (qtForMCUsSdkPackage->validStatus()) + if (qtForMCUsSdkPackage->isValidStatus()) Sdk::targetsAndPackages(dir, &sdkRepository); for (const auto &package : qAsConst(sdkRepository.packages)) connect(package, &McuAbstractPackage::changed, this, &McuSupportOptions::packagesChanged); @@ -165,19 +165,19 @@ void McuSupportOptions::remapQul2xCmakeVars(Kit *kit, const EnvironmentItems &en static void setKitToolchains(Kit *k, const McuToolChainPackage *tcPackage) { - switch (tcPackage->type()) { - case McuToolChainPackage::Type::Unsupported: + switch (tcPackage->toolchainType()) { + case McuToolChainPackage::ToolChainType::Unsupported: return; - case McuToolChainPackage::Type::GHS: - case McuToolChainPackage::Type::GHSArm: + case McuToolChainPackage::ToolChainType::GHS: + case McuToolChainPackage::ToolChainType::GHSArm: return; // No Green Hills toolchain, because support for it is missing. - case McuToolChainPackage::Type::IAR: - case McuToolChainPackage::Type::KEIL: - case McuToolChainPackage::Type::MSVC: - case McuToolChainPackage::Type::GCC: - case McuToolChainPackage::Type::ArmGcc: + case McuToolChainPackage::ToolChainType::IAR: + case McuToolChainPackage::ToolChainType::KEIL: + case McuToolChainPackage::ToolChainType::MSVC: + case McuToolChainPackage::ToolChainType::GCC: + case McuToolChainPackage::ToolChainType::ArmGcc: ToolChainKitAspect::setToolChain(k, tcPackage->toolChain( ProjectExplorer::Constants::C_LANGUAGE_ID)); @@ -198,17 +198,17 @@ static void setKitDebugger(Kit *k, const McuToolChainPackage *tcPackage) return; } - switch (tcPackage->type()) { - case McuToolChainPackage::Type::Unsupported: - case McuToolChainPackage::Type::GHS: - case McuToolChainPackage::Type::GHSArm: - case McuToolChainPackage::Type::IAR: + switch (tcPackage->toolchainType()) { + case McuToolChainPackage::ToolChainType::Unsupported: + case McuToolChainPackage::ToolChainType::GHS: + case McuToolChainPackage::ToolChainType::GHSArm: + case McuToolChainPackage::ToolChainType::IAR: return; // No Green Hills and IAR debugger, because support for it is missing. - case McuToolChainPackage::Type::KEIL: - case McuToolChainPackage::Type::MSVC: - case McuToolChainPackage::Type::GCC: - case McuToolChainPackage::Type::ArmGcc: { + case McuToolChainPackage::ToolChainType::KEIL: + case McuToolChainPackage::ToolChainType::MSVC: + case McuToolChainPackage::ToolChainType::GCC: + case McuToolChainPackage::ToolChainType::ArmGcc: { const QVariant debuggerId = tcPackage->debuggerId(); if (debuggerId.isValid()) { Debugger::DebuggerKitAspect::setDebugger(k, debuggerId); @@ -250,7 +250,7 @@ void McuSupportOptions::setKitEnvironment(Kit *k, pathAdditions.append(qtForMCUsSdkPackage->path().pathAppended("bin").toUserOutput()); auto processPackage = [&pathAdditions, &changes](const McuAbstractPackage *package) { - if (package->addToPath()) + if (package->isAddToSystemPath()) pathAdditions.append(package->path().toUserOutput()); if (!package->environmentVariableName().isEmpty()) changes.append({package->environmentVariableName(), package->path().toUserOutput()}); @@ -279,7 +279,7 @@ static void setKitDependencies(Kit *k, auto processPackage = [&dependencies](const McuAbstractPackage *package) { if (!package->environmentVariableName().isEmpty()) dependencies.append({package->environmentVariableName(), - QDir::toNativeSeparators(package->detectionPath())}); + package->detectionPath().toUserOutput()}); }; for (auto package : mcuTarget->packages()) processPackage(package); @@ -297,7 +297,7 @@ void McuSupportOptions::updateKitEnvironment(Kit *k, const McuTarget *mcuTarget) EnvironmentItems changes = EnvironmentKitAspect::environmentChanges(k); for (auto package : mcuTarget->packages()) { const QString varName = package->environmentVariableName(); - if (!varName.isEmpty() && package->validStatus()) { + if (!varName.isEmpty() && package->isValidStatus()) { const int index = Utils::indexOf(changes, [varName](const EnvironmentItem &item) { return item.name == varName; }); @@ -324,8 +324,8 @@ static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePat CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); // CMake ToolChain file for ghs handles CMAKE_*_COMPILER autonomously - if (mcuTarget->toolChainPackage()->type() != McuToolChainPackage::Type::GHS - && mcuTarget->toolChainPackage()->type() != McuToolChainPackage::Type::GHSArm) { + if (mcuTarget->toolChainPackage()->toolchainType() != McuToolChainPackage::ToolChainType::GHS + && mcuTarget->toolChainPackage()->toolchainType() != McuToolChainPackage::ToolChainType::GHSArm) { config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}")); config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}")); } @@ -363,8 +363,8 @@ static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePat CMakeConfigurationKitAspect::setConfiguration(k, config); if (HostOsInfo::isWindowsHost()) { - auto type = mcuTarget->toolChainPackage()->type(); - if (type == McuToolChainPackage::Type::GHS || type == McuToolChainPackage::Type::GHSArm) { + auto type = mcuTarget->toolChainPackage()->toolchainType(); + if (type == McuToolChainPackage::ToolChainType::GHS || type == McuToolChainPackage::ToolChainType::GHSArm) { // See https://bugreports.qt.io/browse/UL-4247?focusedCommentId=565802&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-565802 // and https://bugreports.qt.io/browse/UL-4247?focusedCommentId=565803&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-565803 CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM"); @@ -418,7 +418,7 @@ void McuSupportOptions::deletePackagesAndTargets() void McuSupportOptions::checkUpgradeableKits() { - if (!qtForMCUsSdkPackage->validStatus() || sdkRepository.mcuTargets.length() == 0) + if (!qtForMCUsSdkPackage->isValidStatus() || sdkRepository.mcuTargets.length() == 0) return; if (Utils::anyOf(sdkRepository.mcuTargets, [this](const McuTarget *target) { diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp index 36a8d318a0a..2b96f02ce74 100644 --- a/src/plugins/mcusupport/mcusupportoptionspage.cpp +++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp @@ -196,7 +196,7 @@ void McuSupportOptionsWidget::updateStatus() // Page elements { m_qtForMCUsSdkGroupBox->setVisible(cMakeAvailable); - const bool valid = cMakeAvailable && m_options.qtForMCUsSdkPackage->validStatus(); + const bool valid = cMakeAvailable && m_options.qtForMCUsSdkPackage->isValidStatus(); const bool ready = valid && mcuTarget; m_mcuTargetsGroupBox->setVisible(ready); m_packagesGroupBox->setVisible(ready && !mcuTarget->packages().isEmpty()); diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index 5550a6848cc..b32af50e5c7 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -71,24 +71,24 @@ McuPackage *createQtForMCUsPackage() { return new McuPackage(McuPackage::tr("Qt for MCUs SDK"), FileUtils::homePath(), // defaultPath - FilePath("bin/qmltocpp").withExecutableSuffix().toString(), // detectionPath + FilePath("bin/qmltocpp").withExecutableSuffix(), // detectionPath Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK, // settingsKey QStringLiteral("Qul_DIR")); // envVarName } static McuToolChainPackage *createMsvcToolChainPackage() { - return new McuToolChainPackage({}, {}, {}, {}, McuToolChainPackage::Type::MSVC); + return new McuToolChainPackage({}, {}, {}, {}, McuToolChainPackage::ToolChainType::MSVC); } static McuToolChainPackage *createGccToolChainPackage() { - return new McuToolChainPackage({}, {}, {}, {}, McuToolChainPackage::Type::GCC); + return new McuToolChainPackage({}, {}, {}, {}, McuToolChainPackage::ToolChainType::GCC); } static McuToolChainPackage *createUnsupportedToolChainPackage() { - return new McuToolChainPackage({}, {}, {}, {}, McuToolChainPackage::Type::Unsupported); + return new McuToolChainPackage({}, {}, {}, {}, McuToolChainPackage::ToolChainType::Unsupported); } static McuToolChainPackage *createArmGccPackage() @@ -109,7 +109,7 @@ static McuToolChainPackage *createArmGccPackage() } } - const QString detectionPath = Utils::HostOsInfo::withExecutableSuffix("bin/arm-none-eabi-g++"); + const Utils::FilePath detectionPath = FilePath("bin/arm-none-eabi-g++").withExecutableSuffix(); const auto versionDetector = new McuPackageExecutableVersionDetector(detectionPath, {"--version"}, @@ -119,7 +119,7 @@ static McuToolChainPackage *createArmGccPackage() defaultPath, detectionPath, "GNUArmEmbeddedToolchain", // settingsKey - McuToolChainPackage::Type::ArmGcc, + McuToolChainPackage::ToolChainType::ArmGcc, envVar, versionDetector); } @@ -131,16 +131,15 @@ static McuToolChainPackage *createGhsToolchainPackage() const FilePath defaultPath = FilePath::fromUserInput(qEnvironmentVariable(envVar)); const auto versionDetector - = new McuPackageExecutableVersionDetector(Utils::HostOsInfo::withExecutableSuffix("as850"), + = new McuPackageExecutableVersionDetector(FilePath("as850").withExecutableSuffix(), {"-V"}, "\\bv(\\d+\\.\\d+\\.\\d+)\\b"); return new McuToolChainPackage("Green Hills Compiler", defaultPath, - Utils::HostOsInfo::withExecutableSuffix( - "ccv850"), // detectionPath + FilePath("ccv850").withExecutableSuffix(), // detectionPath "GHSToolchain", // settingsKey - McuToolChainPackage::Type::GHS, + McuToolChainPackage::ToolChainType::GHS, envVar, versionDetector); } @@ -152,15 +151,15 @@ static McuToolChainPackage *createGhsArmToolchainPackage() const FilePath defaultPath = FilePath::fromUserInput(qEnvironmentVariable(envVar)); const auto versionDetector - = new McuPackageExecutableVersionDetector(Utils::HostOsInfo::withExecutableSuffix("asarm"), + = new McuPackageExecutableVersionDetector(FilePath("asarm").withExecutableSuffix(), {"-V"}, "\\bv(\\d+\\.\\d+\\.\\d+)\\b"); return new McuToolChainPackage("Green Hills Compiler for ARM", defaultPath, - Utils::HostOsInfo::withExecutableSuffix("cxarm"), // detectionPath + FilePath("cxarm").withExecutableSuffix(), // detectionPath "GHSArmToolchain", // settingsKey - McuToolChainPackage::Type::GHSArm, + McuToolChainPackage::ToolChainType::GHSArm, envVar, versionDetector); } @@ -183,7 +182,7 @@ static McuToolChainPackage *createIarToolChainPackage() } } - const QString detectionPath = Utils::HostOsInfo::withExecutableSuffix("bin/iccarm"); + const FilePath detectionPath = FilePath("bin/iccarm").withExecutableSuffix(); const auto versionDetector = new McuPackageExecutableVersionDetector(detectionPath, {"--version"}, @@ -193,7 +192,7 @@ static McuToolChainPackage *createIarToolChainPackage() defaultPath, detectionPath, "IARToolchain", // settings key - McuToolChainPackage::Type::IAR, + McuToolChainPackage::ToolChainType::IAR, envVar, versionDetector); } @@ -237,17 +236,24 @@ static McuPackage *createStm32CubeProgrammerPackage() if (programPath.exists()) defaultPath = programPath; } + + const FilePath detectionPath = FilePath::fromString( + QLatin1String(Utils::HostOsInfo::isWindowsHost() + ? "/bin/STM32_Programmer_CLI.exe" + : "/bin/STM32_Programmer.sh") + ); + auto result = new McuPackage(McuPackage::tr("STM32CubeProgrammer"), defaultPath, - QLatin1String(Utils::HostOsInfo::isWindowsHost() - ? "/bin/STM32_Programmer_CLI.exe" - : "/bin/STM32_Programmer.sh"), // detection path + detectionPath, "Stm32CubeProgrammer", {}, // env var - "https://www.st.com/en/development-tools/stm32cubeprog.html"); // download url - result->setRelativePathModifier("/bin"); - result->setAddToPath(true); + "https://www.st.com/en/development-tools/stm32cubeprog.html", // download url + nullptr, // version detector + true, // add to path + "/bin" // relative path modifier + ); return result; } @@ -276,8 +282,7 @@ static McuPackage *createMcuXpressoIdePackage() return new McuPackage("MCUXpresso IDE", defaultPath, - Utils::HostOsInfo::withExecutableSuffix( - "ide/binaries/crt_emu_cm_redlink"), // detection path + FilePath("ide/binaries/crt_emu_cm_redlink").withExecutableSuffix(), // detection path "MCUXpressoIDE", // settings key envVar, "https://www.nxp.com/mcuxpresso/ide"); // download url @@ -303,7 +308,7 @@ static McuPackage *createCypressProgrammerPackage() auto result = new McuPackage("Cypress Auto Flash Utility", defaultPath, - Utils::HostOsInfo::withExecutableSuffix("/bin/openocd"), + FilePath("/bin/openocd").withExecutableSuffix(), "CypressAutoFlashUtil", envVar); return result; @@ -329,7 +334,7 @@ static McuPackage *createRenesasProgrammerPackage() auto result = new McuPackage("Renesas Flash Programmer", defaultPath, - Utils::HostOsInfo::withExecutableSuffix("rfp-cli"), + FilePath("rfp-cli").withExecutableSuffix(), "RenesasFlashProgrammer", envVar); return result; @@ -538,7 +543,7 @@ protected: QVector required3rdPartyPkgs; // Desktop toolchains don't need any additional settings if (tcPkg && !tcPkg->isDesktopToolchain() - && tcPkg->type() != McuToolChainPackage::Type::Unsupported) + && tcPkg->toolchainType() != McuToolChainPackage::ToolChainType::Unsupported) required3rdPartyPkgs.append(tcPkg); // Add setting specific to platform IDE diff --git a/src/plugins/mcusupport/mcusupportversiondetection.cpp b/src/plugins/mcusupport/mcusupportversiondetection.cpp index b3f1a3cd003..5380446a134 100644 --- a/src/plugins/mcusupport/mcusupportversiondetection.cpp +++ b/src/plugins/mcusupport/mcusupportversiondetection.cpp @@ -46,7 +46,7 @@ QString matchRegExp(const QString &text, const QString ®Exp) McuPackageVersionDetector::McuPackageVersionDetector() {} McuPackageExecutableVersionDetector::McuPackageExecutableVersionDetector( - const QString &detectionPath, const QStringList &detectionArgs, const QString &detectionRegExp) + const Utils::FilePath &detectionPath, const QStringList &detectionArgs, const QString &detectionRegExp) : McuPackageVersionDetector() , m_detectionPath(detectionPath) , m_detectionArgs(detectionArgs) @@ -58,7 +58,7 @@ QString McuPackageExecutableVersionDetector::parseVersion(const QString &package if (m_detectionPath.isEmpty() || m_detectionRegExp.isEmpty()) return QString(); - const Utils::FilePath binaryPath = Utils::FilePath::fromString(packagePath) / m_detectionPath; + const Utils::FilePath binaryPath = Utils::FilePath::fromString(packagePath).resolvePath(m_detectionPath); if (!binaryPath.exists()) return QString(); diff --git a/src/plugins/mcusupport/mcusupportversiondetection.h b/src/plugins/mcusupport/mcusupportversiondetection.h index a5599591562..c5f25875d0d 100644 --- a/src/plugins/mcusupport/mcusupportversiondetection.h +++ b/src/plugins/mcusupport/mcusupportversiondetection.h @@ -26,6 +26,7 @@ #pragma once #include +#include namespace McuSupport { namespace Internal { @@ -43,13 +44,13 @@ public: class McuPackageExecutableVersionDetector : public McuPackageVersionDetector { public: - McuPackageExecutableVersionDetector(const QString &detectionPath, + McuPackageExecutableVersionDetector(const Utils::FilePath &detectionPath, const QStringList &detectionArgs, const QString &detectionRegExp); QString parseVersion(const QString &packagePath) const final; private: - const QString m_detectionPath; + const Utils::FilePath m_detectionPath; const QStringList m_detectionArgs; const QString m_detectionRegExp; }; diff --git a/src/plugins/mcusupport/mcutarget.cpp b/src/plugins/mcusupport/mcutarget.cpp index 291b861e221..28628eeca51 100644 --- a/src/plugins/mcusupport/mcutarget.cpp +++ b/src/plugins/mcusupport/mcutarget.cpp @@ -26,196 +26,14 @@ #include "mcutarget.h" #include "mcupackage.h" #include "mcukitmanager.h" - #include "mcusupportplugin.h" -#include -#include -#include -#include -#include -#include +#include -using namespace ProjectExplorer; using namespace Utils; namespace McuSupport::Internal { -static ToolChain *msvcToolChain(Id language) -{ - ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { - const Abi abi = t->targetAbi(); - // TODO: Should Abi::WindowsMsvc2022Flavor be added too? - return (abi.osFlavor() == Abi::WindowsMsvc2017Flavor - || abi.osFlavor() == Abi::WindowsMsvc2019Flavor) - && abi.architecture() == Abi::X86Architecture && abi.wordWidth() == 64 - && t->language() == language; - }); - return toolChain; -} - -static ToolChain *gccToolChain(Id language) -{ - ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { - const Abi abi = t->targetAbi(); - return abi.os() != Abi::WindowsOS && abi.architecture() == Abi::X86Architecture - && abi.wordWidth() == 64 && t->language() == language; - }); - return toolChain; -} - -static ToolChain *armGccToolChain(const FilePath &path, Id language) -{ - ToolChain *toolChain = ToolChainManager::toolChain([&path, language](const ToolChain *t) { - return t->compilerCommand() == path && t->language() == language; - }); - if (!toolChain) { - ToolChainFactory *gccFactory - = Utils::findOrDefault(ToolChainFactory::allToolChainFactories(), - [](ToolChainFactory *f) { - return f->supportedToolChainType() - == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID; - }); - if (gccFactory) { - const QList detected = gccFactory->detectForImport({path, language}); - if (!detected.isEmpty()) { - toolChain = detected.first(); - toolChain->setDetection(ToolChain::ManualDetection); - toolChain->setDisplayName("Arm GCC"); - ToolChainManager::registerToolChain(toolChain); - } - } - } - - return toolChain; -} - -static ToolChain *iarToolChain(const FilePath &path, Id language) -{ - ToolChain *toolChain = ToolChainManager::toolChain([language](const ToolChain *t) { - return t->typeId() == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID - && t->language() == language; - }); - if (!toolChain) { - ToolChainFactory *iarFactory - = Utils::findOrDefault(ToolChainFactory::allToolChainFactories(), - [](ToolChainFactory *f) { - return f->supportedToolChainType() - == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID; - }); - if (iarFactory) { - Toolchains detected = iarFactory->autoDetect(ToolchainDetector({}, {})); - if (detected.isEmpty()) - detected = iarFactory->detectForImport({path, language}); - for (auto tc : detected) { - if (tc->language() == language) { - toolChain = tc; - toolChain->setDetection(ToolChain::ManualDetection); - toolChain->setDisplayName("IAREW"); - ToolChainManager::registerToolChain(toolChain); - } - } - } - } - - return toolChain; -} - -ToolChain *McuToolChainPackage::toolChain(Id language) const -{ - switch (m_type) { - case Type::MSVC: - return msvcToolChain(language); - case Type::GCC: - return gccToolChain(language); - case Type::IAR: { - const FilePath compiler = path().pathAppended("/bin/iccarm").withExecutableSuffix(); - return iarToolChain(compiler, language); - } - case Type::ArmGcc: - case Type::KEIL: - case Type::GHS: - case Type::GHSArm: - case Type::Unsupported: { - const QLatin1String compilerName( - language == ProjectExplorer::Constants::C_LANGUAGE_ID ? "gcc" : "g++"); - const QString comp = QLatin1String(m_type == Type::ArmGcc ? "/bin/arm-none-eabi-%1" - : "/bar/foo-keil-%1") - .arg(compilerName); - const FilePath compiler = path().pathAppended(comp).withExecutableSuffix(); - - return armGccToolChain(compiler, language); - } - default: - Q_UNREACHABLE(); - } -} - -QString McuToolChainPackage::toolChainName() const -{ - switch (m_type) { - case Type::ArmGcc: - return QLatin1String("armgcc"); - case Type::IAR: - return QLatin1String("iar"); - case Type::KEIL: - return QLatin1String("keil"); - case Type::GHS: - return QLatin1String("ghs"); - case Type::GHSArm: - return QLatin1String("ghs-arm"); - default: - return QLatin1String("unsupported"); - } -} - -QString McuToolChainPackage::cmakeToolChainFileName() const -{ - return toolChainName() + QLatin1String(".cmake"); -} - -QVariant McuToolChainPackage::debuggerId() const -{ - using namespace Debugger; - - QString sub, displayName; - DebuggerEngineType engineType; - - switch (m_type) { - case Type::ArmGcc: { - sub = QString::fromLatin1("bin/arm-none-eabi-gdb-py"); - displayName = McuPackage::tr("Arm GDB at %1"); - engineType = Debugger::GdbEngineType; - break; - } - case Type::IAR: { - sub = QString::fromLatin1("../common/bin/CSpyBat"); - displayName = QLatin1String("CSpy"); - engineType = Debugger::NoEngineType; // support for IAR missing - break; - } - case Type::KEIL: { - sub = QString::fromLatin1("UV4/UV4"); - displayName = QLatin1String("KEIL uVision Debugger"); - engineType = Debugger::UvscEngineType; - break; - } - default: - return QVariant(); - } - - const FilePath command = path().pathAppended(sub).withExecutableSuffix(); - if (const DebuggerItem *debugger = DebuggerItemManager::findByCommand(command)) { - return debugger->id(); - } - - DebuggerItem newDebugger; - newDebugger.setCommand(command); - newDebugger.setUnexpandedDisplayName(displayName.arg(command.toUserOutput())); - newDebugger.setEngineType(engineType); - return DebuggerItemManager::registerDebugger(newDebugger); -} - McuTarget::McuTarget(const QVersionNumber &qulVersion, const Platform &platform, OS os, @@ -254,7 +72,7 @@ bool McuTarget::isValid() const { return Utils::allOf(packages(), [](McuAbstractPackage *package) { package->updateStatus(); - return package->validStatus(); + return package->isValidStatus(); }); } @@ -262,7 +80,7 @@ void McuTarget::printPackageProblems() const { for (auto package : packages()) { package->updateStatus(); - if (!package->validStatus()) + if (!package->isValidStatus()) printMessage(tr("Error creating kit for target %1, package %2: %3") .arg(McuKitManager::kitName(this), package->label(), diff --git a/src/plugins/mcusupport/test/packagemock.h b/src/plugins/mcusupport/test/packagemock.h index 7f8e98d40f5..2e41ef6550b 100644 --- a/src/plugins/mcusupport/test/packagemock.h +++ b/src/plugins/mcusupport/test/packagemock.h @@ -39,17 +39,15 @@ public: MOCK_METHOD(Utils::FilePath, path, (), (const)); MOCK_METHOD(QString, label, (), (const)); MOCK_METHOD(Utils::FilePath, defaultPath, (), (const)); - MOCK_METHOD(QString, detectionPath, (), (const)); + MOCK_METHOD(Utils::FilePath, detectionPath, (), (const)); MOCK_METHOD(QString, statusText, (), (const)); MOCK_METHOD(void, updateStatus, ()); MOCK_METHOD(Status, status, (), (const)); - MOCK_METHOD(bool, validStatus, (), (const)); + MOCK_METHOD(bool, isValidStatus, (), (const)); MOCK_METHOD(const QString &, environmentVariableName, (), (const)); - MOCK_METHOD(void, setAddToPath, (bool) ); - MOCK_METHOD(bool, addToPath, (), (const)); + MOCK_METHOD(bool, isAddToSystemPath, (), (const)); MOCK_METHOD(bool, writeToSettings, (), (const)); - MOCK_METHOD(void, setRelativePathModifier, (const QString &) ); MOCK_METHOD(void, setVersions, (const QStringList &) ); MOCK_METHOD(QWidget *, widget, ()); diff --git a/src/plugins/mcusupport/test/unittest.cpp b/src/plugins/mcusupport/test/unittest.cpp index 30a6fa8a532..62b8fd9c278 100644 --- a/src/plugins/mcusupport/test/unittest.cpp +++ b/src/plugins/mcusupport/test/unittest.cpp @@ -47,7 +47,7 @@ using Utils::FilePath; void McuSupportTest::initTestCase() { EXPECT_CALL(freeRtosPackage, environmentVariableName()).WillRepeatedly(ReturnRef(freeRtosEnvVar)); - EXPECT_CALL(freeRtosPackage, validStatus()).WillRepeatedly(Return(true)); + EXPECT_CALL(freeRtosPackage, isValidStatus()).WillRepeatedly(Return(true)); EXPECT_CALL(freeRtosPackage, path()) .WillRepeatedly(Return(FilePath::fromString(defaultfreeRtosPath))); } From e714b04242570c6943a22355f1392d3d95b119eb Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Tue, 22 Feb 2022 14:16:12 +0100 Subject: [PATCH 05/45] QmlDesigner: Fix shift in component type TextField Change-Id: I5dc4f7b0887405082456b511b57598e3e6e38ec0 Reviewed-by: Thomas Hartmann Reviewed-by: --- .../propertyEditorQmlSources/imports/StudioTheme/Values.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml index a4541f165ab..29d0edb14db 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml @@ -86,7 +86,7 @@ QtObject { property real contextMenuHorizontalPadding: Math.round(6 * values.scaleFactor) property real inputHorizontalPadding: Math.round(6 * values.scaleFactor) - property real typeLabelVerticalShift: Math.round(5 * values.scaleFactor) + property real typeLabelVerticalShift: Math.round(6 * values.scaleFactor) property real scrollBarThickness: 10 From 4cc94375d8fe19520a11c48bbb2c492f33fe1318 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 12:51:31 +0100 Subject: [PATCH 06/45] QmlDesigner: Rename custom className property to classNamePrivateInternal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This property is used for the class name, but "className" could be also used by the actual application. Task-number: QDS-6309 Change-Id: I752fafbcae434a8b2b96646e2473b6fedd93a160 Reviewed-by: Henning Gründl Reviewed-by: Qt CI Bot --- .../QtQuick/ItemPane.qml | 2 +- .../HelperWidgets/ComponentSection.qml | 4 +-- .../propertyeditorqmlbackend.cpp | 26 +++++++++++++------ .../propertyeditor/propertyeditorview.cpp | 2 +- .../qmldesigner/qmldesignerconstants.h | 2 ++ 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml index a55280a0401..da7baf018b1 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml @@ -99,7 +99,7 @@ PropertyEditorPane { anchors.right: parent.right StudioControls.TabButton { - text: backendValues.className.value + text: backendValues.__classNamePrivateInternal.value } StudioControls.TabButton { text: qsTr("Layout") diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ComponentSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ComponentSection.qml index 5d9a121a913..2dae032f37c 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ComponentSection.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ComponentSection.qml @@ -56,13 +56,13 @@ Section { anchors.fill: parent anchors.leftMargin: StudioTheme.Values.inputHorizontalPadding anchors.topMargin: StudioTheme.Values.typeLabelVerticalShift - text: backendValues.className.value + text: backendValues.__classNamePrivateInternal.value } ToolTipArea { anchors.fill: parent onDoubleClicked: { - typeLineEdit.text = backendValues.className.value + typeLineEdit.text = backendValues.__classNamePrivateInternal.value typeLineEdit.visible = !typeLineEdit.visible typeLineEdit.forceActiveFocus() } diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index b9c2ce67684..5d6e16670e4 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -421,14 +421,19 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q context()->setContextProperty(QLatin1String("modelNodeBackend"), &m_backendModelNode); // className - auto valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value(QLatin1String("className")))); + auto valueObject = qobject_cast(variantToQObject( + m_backendValuesPropertyMap.value(Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY))); if (!valueObject) valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap); - valueObject->setName("className"); + valueObject->setName(Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY); valueObject->setModelNode(qmlObjectNode.modelNode()); valueObject->setValue(m_backendModelNode.simplifiedTypeName()); - QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged); - m_backendValuesPropertyMap.insert(QLatin1String("className"), QVariant::fromValue(valueObject)); + QObject::connect(valueObject, + &PropertyEditorValue::valueChanged, + &backendValuesPropertyMap(), + &DesignerPropertyMap::valueChanged); + m_backendValuesPropertyMap.insert(Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY, + QVariant::fromValue(valueObject)); // id valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value(QLatin1String("id")))); @@ -506,14 +511,19 @@ void PropertyEditorQmlBackend::initialSetup(const TypeName &typeName, const QUrl foreach (const PropertyName &propertyName, metaInfo.propertyNames()) setupPropertyEditorValue(propertyName, propertyEditor, QString::fromUtf8(metaInfo.propertyTypeName(propertyName))); - auto valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value(QLatin1String("className")))); + auto valueObject = qobject_cast(variantToQObject( + m_backendValuesPropertyMap.value(Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY))); if (!valueObject) valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap); - valueObject->setName("className"); + valueObject->setName(Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY); valueObject->setValue(typeName); - QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged); - m_backendValuesPropertyMap.insert(QLatin1String("className"), QVariant::fromValue(valueObject)); + QObject::connect(valueObject, + &PropertyEditorValue::valueChanged, + &backendValuesPropertyMap(), + &DesignerPropertyMap::valueChanged); + m_backendValuesPropertyMap.insert(Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY, + QVariant::fromValue(valueObject)); // id valueObject = qobject_cast(variantToQObject(m_backendValuesPropertyMap.value(QLatin1String("id")))); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp index 3bdfb903c84..fb5d0c6861e 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.cpp @@ -144,7 +144,7 @@ void PropertyEditorView::changeValue(const QString &name) if (locked()) return; - if (propertyName == "className") + if (propertyName == Constants::PROPERTY_EDITOR_CLASSNAME_PROPERTY) return; if (noValidSelection()) diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h index 1bfdbb8ddbf..03c2f42cca3 100644 --- a/src/plugins/qmldesigner/qmldesignerconstants.h +++ b/src/plugins/qmldesigner/qmldesignerconstants.h @@ -107,6 +107,8 @@ const char EVENT_TIMELINE_TIME[] = "Timeline"; const char EVENT_TRANSITIONEDITOR_TIME[] = "Transition Editor"; const char EVENT_CURVEDITOR_TIME[] = "Curve Editor"; +const char PROPERTY_EDITOR_CLASSNAME_PROPERTY[] = "__classNamePrivateInternal"; + namespace Internal { enum { debug = 0 }; } From 78f77f4ef416a55901f377dc7cf530b4838f9f48 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 14:19:08 +0100 Subject: [PATCH 07/45] QmlDesigner: Do not mark document as dirty if zoom changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I85824f695a77d107dfa1f6c8d7d3a8dbeb6bae43 Reviewed-by: Reviewed-by: Henning Gründl --- src/plugins/qmldesigner/designercore/model/rewriterview.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 19f37907b23..ff9f7b196b7 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -464,7 +464,8 @@ void RewriterView::auxiliaryDataChanged(const ModelNode &node, const PropertyNam return; if (node.isRootNode()) { - if (name == "width" || name == "height" || name == "autoSize" || name == "formeditorColor") + if (name == "width" || name == "height" || name == "autoSize" || name == "formeditorColor" + || name == "formeditorZoom") return; } From a998790c74b85069d7e57518876c67af178c4d9d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 14:19:35 +0100 Subject: [PATCH 08/45] QmlDesigner: Center on item on initialize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ib68c2b1a651497f9092d390b1a5b3a59c85d21ce Reviewed-by: Reviewed-by: Henning Gründl --- .../qmldesigner/components/formeditor/formeditorwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index 9f6a88c5962..aa99d7fcf12 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -357,6 +357,7 @@ void FormEditorWidget::initialize() defaultZoom = m_formEditorView->rootModelNode().auxiliaryData("formeditorZoom").toDouble(); } m_graphicsView->setZoomFactor(defaultZoom); + m_graphicsView->centerOn(m_formEditorView->scene()->rootFormEditorItem()); m_zoomAction->setZoomFactor(defaultZoom); updateActions(); } From 456a94924439831b19b5d8a6713374d55d706504 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 16:54:42 +0100 Subject: [PATCH 09/45] QmlDesigner: Add comment to all .ui.qml files in wizards Add comment to the beginning of .ui.qml files that explains that .ui.qml files are declarative. Task-number: QDS-5964 Change-Id: I040443b42a0e2907452d5b6d9d056746d3b75ff3 Reviewed-by: Leena Miettinen --- .../studio_templates/files/custombutton/file.qml.tpl | 7 +++++++ .../studio_templates/files/customcheckbox/file.qml.tpl | 7 +++++++ .../studio_templates/files/customdial/file.qml.tpl | 7 +++++++ .../studio_templates/files/customslider/file.qml.tpl | 7 +++++++ .../studio_templates/files/customspinbox/file.qml.tpl | 7 +++++++ .../studio_templates/files/customswitch/file.qml.tpl | 7 +++++++ .../studio_templates/files/flowitem/file.qml.tpl | 7 +++++++ .../studio_templates/files/flowview/file.qml.tpl | 7 +++++++ .../files/qtquickviews/GridView.ui.qml.tpl | 7 +++++++ .../files/qtquickviews/ListDelegate.ui.qml.tpl | 7 +++++++ .../files/qtquickviews/ListView.ui.qml.tpl | 7 +++++++ .../projects/application-3d/Screen01.ui.qml.tpl | 7 +++++++ .../projects/application-mcu/Screen01.ui.qml.tpl | 7 +++++++ .../projects/application/Screen01.ui.qml.tpl | 7 +++++++ .../projects/desktop-launcher/Screen01.ui.qml.tpl | 7 +++++++ .../projects/mobile-scroll/Screen01.ui.qml.tpl | 7 +++++++ .../projects/mobile-stack/Screen01.ui.qml.tpl | 7 +++++++ .../projects/mobile-stack/Screen02.ui.qml.tpl | 7 +++++++ .../projects/mobile-swipe/Screen01.ui.qml.tpl | 7 +++++++ .../projects/mobile-swipe/Screen02.ui.qml.tpl | 7 +++++++ 20 files changed, 140 insertions(+) diff --git a/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl index e1a30300696..526fa68e60b 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 import QtQuick.Controls 2.12 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl index 28dcc8c7993..77c9cab7786 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.12 import QtQuick.Controls 2.12 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl index c4b60bd1145..9c69beeea29 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.12 import QtQuick.Controls 2.12 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl index f166ec5fd3e..ee195787344 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.12 import QtQuick.Controls 2.12 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl index 1067762387f..f3bf1218019 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.12 import QtQuick.Controls 2.12 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl index 98d0e3b9f82..28a5d1191f6 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 import QtQuick.Controls 2.12 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl index aa4ff234c9a..f56eddde9d9 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 @if %{UseQtQuickControls2} import QtQuick.Controls 2.15 diff --git a/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl index 4ff09e0de31..07de025d541 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 @if %{UseImport} import %{ApplicationImport} diff --git a/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/GridView.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/GridView.ui.qml.tpl index 0f484b8ddbc..513543f0597 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/GridView.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/GridView.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 GridView { diff --git a/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListDelegate.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListDelegate.ui.qml.tpl index 42ef999948a..4a8ea4bc4ac 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListDelegate.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListDelegate.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 Item { diff --git a/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListView.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListView.ui.qml.tpl index 61358e38872..6ce5dccccc5 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListView.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/qtquickviews/ListView.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 ListView { diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl index 730906111be..1da5c8844ba 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import QtQuick3D %{QtQuick3DVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/Screen01.ui.qml.tpl index 0d8148e73e3..600031122e8 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 import Constants 1.0 diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/application/Screen01.ui.qml.tpl index 04bef01ff1e..1527710b087 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/application/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/application/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/Screen01.ui.qml.tpl index 04bef01ff1e..1527710b087 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/Screen01.ui.qml.tpl index 189ca84cc97..97f9fdd87c9 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen01.ui.qml.tpl index baadb452b69..40c91d79f37 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen02.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen02.ui.qml.tpl index ee2006559bc..100fef9bb99 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen02.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/Screen02.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen01.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen01.ui.qml.tpl index 757dad13e80..3816fb7a001 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen01.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen01.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen02.ui.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen02.ui.qml.tpl index 50aee8af120..9e741b11627 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen02.ui.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/Screen02.ui.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick %{QtQuickVersion} import QtQuick.Controls %{QtQuickVersion} import %{ImportModuleName} %{ImportModuleVersion} From d913f5d886f07a37ee845dc11bab9bbf8979c601 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Feb 2022 13:56:34 +0100 Subject: [PATCH 10/45] QmlDesigner: Add comment to .ui.qml files Add comment to the beginning of .ui.qml files that explains that .ui.qml files are declarative. Task-number: QDS-5964 Change-Id: Ie49bae33fb18ee42d4ab20986b72c2deadd5b734 Reviewed-by: Leena Miettinen --- .../studio_templates/files/qtuiquickfile/file.qml.tpl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickfile/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickfile/file.qml.tpl index f77f7d99c99..47ca3af2995 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickfile/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickfile/file.qml.tpl @@ -1,3 +1,10 @@ +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ + import QtQuick 2.15 @if %{UseQtQuickControls2} import QtQuick.Controls 2.15 From 872a93447b33149b83397b7bedca4a92d5449773 Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Tue, 22 Feb 2022 17:41:20 +0100 Subject: [PATCH 11/45] QmlDesigner: Update import version wizard qml.tpl Change-Id: Ie1cdc6bd18cec1f6e0d1492033f43c23717d68a9 Reviewed-by: Thomas Hartmann --- .../studio_templates/files/custombutton/file.qml.tpl | 2 +- .../studio_templates/files/customcheckbox/file.qml.tpl | 4 ++-- .../studio_templates/files/customdial/file.qml.tpl | 4 ++-- .../studio_templates/files/customslider/file.qml.tpl | 4 ++-- .../studio_templates/files/customspinbox/file.qml.tpl | 4 ++-- .../studio_templates/files/customswitch/file.qml.tpl | 2 +- .../qmldesigner/studio_templates/files/pane/file.qml.tpl | 4 ++-- .../studio_templates/files/stackedlayout/file.qml.tpl | 4 ++-- .../qmldesigner/studio_templates/files/swipeview/file.qml.tpl | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl index 526fa68e60b..80749182e65 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/custombutton/file.qml.tpl @@ -6,7 +6,7 @@ Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on */ import QtQuick 2.15 -import QtQuick.Controls 2.12 +import QtQuick.Controls 2.15 Button { id: control diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl index 77c9cab7786..e295083958c 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customcheckbox/file.qml.tpl @@ -5,8 +5,8 @@ this file manually, you might introduce QML code that is not supported by Qt Des Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. */ -import QtQuick 2.12 -import QtQuick.Controls 2.12 +import QtQuick 2.15 +import QtQuick.Controls 2.15 CheckBox { id: control diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl index 9c69beeea29..7faa6c38be8 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customdial/file.qml.tpl @@ -5,8 +5,8 @@ this file manually, you might introduce QML code that is not supported by Qt Des Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. */ -import QtQuick 2.12 -import QtQuick.Controls 2.12 +import QtQuick 2.15 +import QtQuick.Controls 2.15 Dial { id: control diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl index ee195787344..d742e03b5d5 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customslider/file.qml.tpl @@ -5,8 +5,8 @@ this file manually, you might introduce QML code that is not supported by Qt Des Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. */ -import QtQuick 2.12 -import QtQuick.Controls 2.12 +import QtQuick 2.15 +import QtQuick.Controls 2.15 Slider { id: control diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl index f3bf1218019..5031b5bd596 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customspinbox/file.qml.tpl @@ -5,8 +5,8 @@ this file manually, you might introduce QML code that is not supported by Qt Des Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. */ -import QtQuick 2.12 -import QtQuick.Controls 2.12 +import QtQuick 2.15 +import QtQuick.Controls 2.15 SpinBox { id: control diff --git a/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl index 28a5d1191f6..69e09a6205f 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/customswitch/file.qml.tpl @@ -6,7 +6,7 @@ Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on */ import QtQuick 2.15 -import QtQuick.Controls 2.12 +import QtQuick.Controls 2.15 Switch { id: control diff --git a/share/qtcreator/qmldesigner/studio_templates/files/pane/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/pane/file.qml.tpl index 96f78daf9fc..55d0f2b37e9 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/pane/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/pane/file.qml.tpl @@ -1,6 +1,6 @@ import QtQuick 2.15 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.15 +import QtQuick.Controls 2.15 import %{ApplicationImport} Pane { diff --git a/share/qtcreator/qmldesigner/studio_templates/files/stackedlayout/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/stackedlayout/file.qml.tpl index ec23bbe684a..d4b196965f3 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/stackedlayout/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/stackedlayout/file.qml.tpl @@ -1,6 +1,6 @@ import QtQuick 2.15 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.15 +import QtQuick.Controls 2.15 import %{ApplicationImport} Item { diff --git a/share/qtcreator/qmldesigner/studio_templates/files/swipeview/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/swipeview/file.qml.tpl index 45319ec391f..8da593bd703 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/swipeview/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/swipeview/file.qml.tpl @@ -1,6 +1,6 @@ import QtQuick 2.15 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.15 +import QtQuick.Controls 2.15 import %{ApplicationImport} Item { From c1c0dab2a9f5eded6fbec9e5adebf27a0bed6fbd Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 11:10:15 +0100 Subject: [PATCH 12/45] Move dynamiclicensecheck.h to QmlDesigner Change-Id: Ic49a18a6ed164d3878e69d157edd83773c93959c Reviewed-by: hjk Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann Reviewed-by: --- src/libs/utils/CMakeLists.txt | 1 - src/plugins/qmldesigner/CMakeLists.txt | 1 + .../qmldesigner}/dynamiclicensecheck.h | 2 +- src/plugins/studiowelcome/studiowelcomeplugin.cpp | 10 +++++----- 4 files changed, 7 insertions(+), 7 deletions(-) rename src/{libs/utils => plugins/qmldesigner}/dynamiclicensecheck.h (98%) diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt index 49e2ab648d2..780f3e2017a 100644 --- a/src/libs/utils/CMakeLists.txt +++ b/src/libs/utils/CMakeLists.txt @@ -34,7 +34,6 @@ 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/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 742b6f055c0..bee619026ad 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -32,6 +32,7 @@ add_qtc_plugin(QmlDesigner cmakegeneratordialogtreemodel.cpp cmakegeneratordialogtreemodel.h cmakeprojectconverter.cpp cmakeprojectconverter.h cmakeprojectconverterdialog.cpp cmakeprojectconverterdialog.h + dynamiclicensecheck.h generateresource.cpp generateresource.h generatecmakelists.cpp generatecmakelists.h generatecmakelistsconstants.h diff --git a/src/libs/utils/dynamiclicensecheck.h b/src/plugins/qmldesigner/dynamiclicensecheck.h similarity index 98% rename from src/libs/utils/dynamiclicensecheck.h rename to src/plugins/qmldesigner/dynamiclicensecheck.h index 634c6b28d11..8cc7982895c 100644 --- a/src/libs/utils/dynamiclicensecheck.h +++ b/src/plugins/qmldesigner/dynamiclicensecheck.h @@ -34,7 +34,7 @@ #include -namespace Utils { +namespace QmlDesigner { enum FoundLicense { community, diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index 72f6afcdb57..8e38dccc6b5 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -46,8 +46,9 @@ #include -#include #include +#include +#include #include #include @@ -56,7 +57,6 @@ #include #include #include -#include #include #include @@ -300,9 +300,9 @@ private: void ProjectModel::setupVersion() { - Utils::FoundLicense license = Utils::checkLicense(); - m_communityVersion = license == Utils::FoundLicense::community; - m_enterpriseVersion = license == Utils::FoundLicense::enterprise; + QmlDesigner::FoundLicense license = QmlDesigner::checkLicense(); + m_communityVersion = license == QmlDesigner::FoundLicense::community; + m_enterpriseVersion = license == QmlDesigner::FoundLicense::enterprise; } ProjectModel::ProjectModel(QObject *parent) From dfd9d4804e3514b5e7776c0b7fe97587bcecb20c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 16:33:53 +0100 Subject: [PATCH 13/45] QmlDesigner: Track if QDS was opened from QtC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QDS-6315 Change-Id: I4109e9c98ff5c27b4096b1af32ae945aec10c123 Reviewed-by: Henning Gründl --- src/plugins/qmldesigner/qmldesignerplugin.cpp | 5 ++++- src/plugins/qmlprojectmanager/qmlproject.cpp | 5 +++++ src/plugins/qmlprojectmanager/qmlproject.h | 1 + src/plugins/qmlprojectmanager/qmlprojectconstants.h | 2 ++ src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 2 ++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 3748a2164e0..fafbce3809c 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -312,8 +312,11 @@ bool QmlDesignerPlugin::delayedInitialize() d->viewManager.registerFormEditorTool(std::make_unique()); d->viewManager.registerFormEditorTool(std::make_unique()); - if (QmlProjectManager::QmlProject::isQtDesignStudio()) + if (QmlProjectManager::QmlProject::isQtDesignStudio()) { emitUsageStatistics("StandaloneMode"); + if (QmlProjectManager::QmlProject::isQtDesignStudioStartedFromQtC()) + emitUsageStatistics("QDSlaunchedFromQtC"); + } return true; } diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index e96dadb970b..9191106ed4b 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -517,6 +517,11 @@ bool QmlProject::isQtDesignStudio() return settings->value(qdsStandaloneEntry, false).toBool(); } +bool QmlProject::isQtDesignStudioStartedFromQtC() +{ + return qEnvironmentVariableIsSet(Constants::enviromentLaunchedQDS); +} + ProjectExplorer::DeploymentKnowledge QmlProject::deploymentKnowledge() const { return DeploymentKnowledge::Perfect; diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index a351d394c7d..fed2002912a 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -147,6 +147,7 @@ public: ProjectExplorer::Tasks projectIssues(const ProjectExplorer::Kit *k) const final; static bool isQtDesignStudio(); + static bool isQtDesignStudioStartedFromQtC(); bool isEditModePreferred() const override; diff --git a/src/plugins/qmlprojectmanager/qmlprojectconstants.h b/src/plugins/qmlprojectmanager/qmlprojectconstants.h index 184469f2430..3ba2b101462 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectconstants.h +++ b/src/plugins/qmlprojectmanager/qmlprojectconstants.h @@ -41,5 +41,7 @@ const char customQt6Project[] = "CustomQt6Project"; const char mainFilePath[] = "MainFilePath"; const char customImportPaths[] = "CustomImportPaths"; const char canonicalProjectDir[] ="CanonicalProjectDir"; + +const char enviromentLaunchedQDS[] = "QTC_LAUNCHED_QDS"; } // namespace Constants } // namespace QmlProjectManager diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index 2922c55aea7..17cce6402f8 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -25,6 +25,7 @@ #include "qmlprojectplugin.h" #include "qmlproject.h" +#include "qmlprojectconstants.h" #include "qmlprojectrunconfiguration.h" #include @@ -105,6 +106,7 @@ void QmlProjectPlugin::openQDS(const Utils::FilePath &fileName) { const Utils::FilePath &qdsPath = QmlProjectPlugin::qdsInstallationEntry(); bool qdsStarted = false; + qputenv(Constants::enviromentLaunchedQDS, "true"); //-a and -client arguments help to append project to open design studio application if (Utils::HostOsInfo::isMacHost()) qdsStarted = Utils::QtcProcess::startDetached( From 12f690b8a957e135376f8e60eb6a6127fad600cf Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 17:14:10 +0100 Subject: [PATCH 14/45] QmlDesigner: Remove DesignerActionManagerView::instancePropertyChanged This can be pontentially very expensive and the notifier should not be required. Change-Id: Idf1096fb69efb08196b192596353bf544783d23c Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- .../components/componentcore/designeractionmanagerview.cpp | 6 ------ .../components/componentcore/designeractionmanagerview.h | 2 -- 2 files changed, 8 deletions(-) diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp index 026596b876d..65da49ed6b5 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp @@ -141,12 +141,6 @@ void DesignerActionManagerView::bindingPropertiesChanged(const QList > &) -{ - if (hasSingleSelectedModelNode()) - setupContext(SelectionContext::UpdateMode::Properties); -} - void DesignerActionManagerView::customNotification(const AbstractView * /*view*/, const QString &identifier, const QList & /* nodeList */, diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h index f7777bcac1d..5920658857f 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h @@ -64,8 +64,6 @@ public: void variantPropertiesChanged(const QList& propertyList, PropertyChangeFlags propertyChangeFlag) override; void bindingPropertiesChanged(const QList& propertyList, PropertyChangeFlags propertyChangeFlag) override; - void instancePropertyChanged(const QList > &propertyList) override; - DesignerActionManager &designerActionManager(); const DesignerActionManager &designerActionManager() const; void emitSelectionChanged(); From 7dd05f8937e484344a5525b2e62cdf5283c0a639 Mon Sep 17 00:00:00 2001 From: Tapani Mattila Date: Mon, 21 Feb 2022 21:10:51 +0200 Subject: [PATCH 15/45] CMake project converter: Automatically open new project after creating it Task-number: QDS-6249 Change-Id: I5ba1a396c7812a6aa736751fd0e7d7155d2de2d8 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- .../qmldesigner/cmakeprojectconverter.cpp | 40 +++++++++++++------ .../qmldesigner/cmakeprojectconverter.h | 11 ++--- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.cpp b/src/plugins/qmldesigner/cmakeprojectconverter.cpp index 52448835771..87c87317085 100644 --- a/src/plugins/qmldesigner/cmakeprojectconverter.cpp +++ b/src/plugins/qmldesigner/cmakeprojectconverter.cpp @@ -29,7 +29,9 @@ #include #include +#include +#include #include #include @@ -100,10 +102,16 @@ bool CmakeProjectConverter::convertProject(const QmlProjectManager::QmlProject * bool retVal = prepareAndExecute(); - if (retVal) - QMessageBox::information(nullptr, SUCCESS_TITLE, SUCCESS_TEXT); - else - QMessageBox::critical(nullptr, ERROR_TITLE, ERROR_TEXT.arg(m_errorText)); + if (retVal) { + QMessageBox::information(Core::ICore::dialogParent(), SUCCESS_TITLE, SUCCESS_TEXT); + ProjectExplorer::ProjectExplorerPlugin::OpenProjectResult result + = ProjectExplorer::ProjectExplorerPlugin::openProject(newProjectFile()); + if (!result) + ProjectExplorer::ProjectExplorerPlugin::showOpenProjectError(result); + } + else { + QMessageBox::critical(Core::ICore::dialogParent(), ERROR_TITLE, ERROR_TEXT.arg(m_errorText)); + } return retVal; } @@ -298,31 +306,36 @@ bool CmakeProjectConverter::createPreparedProject() return true; } -const FilePath CmakeProjectConverter::contentDir() +const FilePath CmakeProjectConverter::contentDir() const { return m_newProjectDir.pathAppended(DIRNAME_CONTENT); } -const FilePath CmakeProjectConverter::sourceDir() +const FilePath CmakeProjectConverter::sourceDir() const { return m_newProjectDir.pathAppended(DIRNAME_CPP); } -const FilePath CmakeProjectConverter::importDir() +const FilePath CmakeProjectConverter::importDir() const { return m_newProjectDir.pathAppended(DIRNAME_IMPORT); } -const FilePath CmakeProjectConverter::assetDir() +const FilePath CmakeProjectConverter::assetDir() const { return contentDir().pathAppended(DIRNAME_ASSET); } -const FilePath CmakeProjectConverter::assetImportDir() +const FilePath CmakeProjectConverter::assetImportDir() const { return m_newProjectDir.pathAppended(DIRNAME_ASSETIMPORT); } +const FilePath CmakeProjectConverter::newProjectFile() const +{ + return m_newProjectDir.pathAppended(m_project->projectFilePath().fileName()); +} + const FilePath CmakeProjectConverter::projectMainFile() const { auto *target = m_project->activeTarget(); @@ -370,17 +383,20 @@ bool CmakeProjectConverter::modifyProjectFile() QString projectFileName = m_project->projectFilePath().fileName(); FilePath projectFilePath = m_newProjectDir.pathAppended(projectFileName); QFile projectFile(projectFilePath.toString()); - projectFile.open(QIODevice::ReadWrite); + projectFile.open(QIODevice::ReadOnly); if (!projectFile.isOpen()) return false; - QString projectFileContent = QString::fromUtf8(projectFile.readAll()); + projectFile.close(); + const QRegularExpression mainFilePattern("^\\s*mainFile:\\s*\".*\"", QRegularExpression::MultilineOption); const QString mainFileString(" mainFile: \"content/App.qml\""); projectFileContent.replace(mainFilePattern, mainFileString); - projectFile.reset(); + projectFile.open(QIODevice::WriteOnly|QIODevice::Truncate); + if (!projectFile.isOpen()) + return false; projectFile.write(projectFileContent.toUtf8()); projectFile.close(); diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.h b/src/plugins/qmldesigner/cmakeprojectconverter.h index 4b21d65ac8b..3356311aa22 100644 --- a/src/plugins/qmldesigner/cmakeprojectconverter.h +++ b/src/plugins/qmldesigner/cmakeprojectconverter.h @@ -68,11 +68,12 @@ private: const Utils::FilePath &original, const Utils::FilePath &target); bool createPreparedProject(); - const Utils::FilePath contentDir(); - const Utils::FilePath sourceDir(); - const Utils::FilePath importDir(); - const Utils::FilePath assetDir(); - const Utils::FilePath assetImportDir(); + const Utils::FilePath contentDir() const; + const Utils::FilePath sourceDir() const; + const Utils::FilePath importDir() const; + const Utils::FilePath assetDir() const; + const Utils::FilePath assetImportDir() const; + const Utils::FilePath newProjectFile() const; const QString environmentVariable(const QString &key) const; const Utils::FilePath projectMainFile() const; From d8b5d2b7a552547d0c5d4d1ba904fbde76a319a2 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Feb 2022 17:29:28 +0100 Subject: [PATCH 16/45] StudioWelcome: Download examples to home on macOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QDS-6305 Change-Id: I7e80ec6a8d5d79b75412fee975efaedd92e048d0 Reviewed-by: Henning Gründl Reviewed-by: --- src/plugins/studiowelcome/studiowelcomeplugin.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index 8e38dccc6b5..ab4cf65f19c 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -660,8 +660,11 @@ void StudioWelcomePlugin::resumeRemoveSplashTimer() Utils::FilePath StudioWelcomePlugin::defaultExamplesPath() { - return Utils::FilePath::fromString( - QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)) + QStandardPaths::StandardLocation location = Utils::HostOsInfo::isMacHost() + ? QStandardPaths::HomeLocation + : QStandardPaths::DocumentsLocation; + + return Utils::FilePath::fromString(QStandardPaths::writableLocation(location)) .pathAppended("QtDesignStudio"); } From c43ba1ae329937db62c4824311fe017b68b6033f Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Fri, 29 Oct 2021 18:19:54 +0300 Subject: [PATCH 17/45] Monitor Android devices in non-polling method Use ADB's track-devices command to watch for device events which would replace the current polling method with a timer. For AVDs, a QFileSystemWatcher is used to watch for changes in the AVDs home folder which would allow updating the AVDs only when a change is done like edition, deletion, start, stop, even from outside Qt Creator. This method would also make device updates faster, instead of unexpected waits due to timer use. Task-number: QTCREATORBUG-23991 Change-Id: I08a92252c99c02bc111e597d671f2350817458c7 Reviewed-by: Alessandro Portale --- src/plugins/android/androidconfigurations.cpp | 43 +-- src/plugins/android/androidconfigurations.h | 6 +- src/plugins/android/androiddevice.cpp | 304 ++++++++++++------ src/plugins/android/androiddevice.h | 24 +- 4 files changed, 222 insertions(+), 155 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 9de48da0ee5..7400020bbb9 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2022 The Qt Company Ltd. ** Copyright (C) 2016 BogDan Vatra ** Contact: https://www.qt.io/licensing/ ** @@ -752,48 +753,6 @@ QString AndroidConfig::getAvdName(const QString &serialnumber) return QString::fromLatin1(name).trimmed(); } -static SdkToolResult emulatorNameAdbCommand(const QString &serialNumber) -{ - QStringList args = AndroidDeviceInfo::adbSelector(serialNumber); - args.append({"emu", "avd", "name"}); - return AndroidManager::runAdbCommand(args); -} - -QString AndroidConfig::getRunningAvdsSerialNumber(const QString &name) const -{ - for (const AndroidDeviceInfo &dev : connectedDevices()) { - if (!dev.serialNumber.startsWith("emulator")) - continue; - SdkToolResult result = emulatorNameAdbCommand(dev.serialNumber); - const QString stdOut = result.stdOut(); - if (stdOut.isEmpty()) - continue; // Not an avd - const QStringList outputLines = stdOut.split('\n'); - if (outputLines.size() > 1 && outputLines.first() == name) - return dev.serialNumber; - } - - return {}; -} - -QStringList AndroidConfig::getRunningAvdsFromDevices(const QVector &devs) -{ - QStringList runningDevs; - for (const AndroidDeviceInfo &dev : devs) { - if (!dev.serialNumber.startsWith("emulator")) - continue; - SdkToolResult result = emulatorNameAdbCommand(dev.serialNumber); - const QString stdOut = result.stdOut(); - if (stdOut.isEmpty()) - continue; // Not an avd - const QStringList outputLines = stdOut.split('\n'); - if (outputLines.size() > 1) - runningDevs.append(outputLines.first()); - } - - return runningDevs; -} - AndroidConfig::OpenGl AndroidConfig::getOpenGLEnabled(const QString &emulator) const { QDir dir = QDir::home(); diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 7492ae0f2a3..5338845d0d2 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2022 The Qt Company Ltd. ** Copyright (C) 2016 BogDan Vatra ** Contact: https://www.qt.io/licensing/ ** @@ -176,15 +177,12 @@ public: static Utils::FilePath getJdkPath(); static QStringList getAbis(const QString &device); - - QString getRunningAvdsSerialNumber(const QString &name) const; - static QStringList getRunningAvdsFromDevices(const QVector &devs); + static int getSDKVersion(const QString &device); private: static QString getDeviceProperty(const QString &device, const QString &property); Utils::FilePath openJDKBinPath() const; - static int getSDKVersion(const QString &device); static QString getAvdName(const QString &serialnumber); void parseDependenciesJson(); diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index a14b985ad74..b7927d0aa8c 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Copyright (C) 2016 BogDan Vatra ** Contact: https://www.qt.io/licensing/ ** @@ -52,6 +52,9 @@ #include #include #include +#include + +#include using namespace ProjectExplorer; @@ -59,9 +62,6 @@ namespace { static Q_LOGGING_CATEGORY(androidDeviceLog, "qtc.android.androiddevice", QtWarningMsg) } -// interval for updating the list of connected Android devices and emulators -constexpr int deviceUpdaterMsInterval = 30000; - namespace Android { namespace Internal { @@ -328,7 +328,7 @@ QString AndroidDevice::serialNumber() const if (machineType() == Hardware) return serialNumber; - return AndroidConfigurations::currentConfig().getRunningAvdsSerialNumber(avdName()); + return AndroidDeviceManager::instance()->getRunningAvdsSerialNumber(avdName()); } QString AndroidDevice::avdName() const @@ -419,36 +419,28 @@ QUrl AndroidDevice::toolControlChannel(const ControlChannelHint &) const return url; } -void AndroidDeviceManager::updateDevicesList() +void AndroidDeviceManager::updateAvdsList() { - // If a non-Android Kit is currently active, skip the device list update - const Target *startupTarget = SessionManager::startupTarget(); - if (!startupTarget) - return; - - const Kit *kit = startupTarget->kit(); - if (!kit) - return; - - if (DeviceTypeKitAspect::deviceTypeId(kit) != Constants::ANDROID_DEVICE_TYPE) - return; - - updateDevicesListOnce(); -} - -void AndroidDeviceManager::updateDevicesListOnce() -{ - if (!m_avdsFutureWatcher.isRunning() && m_androidConfig.adbToolPath().exists()) { + if (!m_avdsFutureWatcher.isRunning() && m_androidConfig.adbToolPath().exists()) m_avdsFutureWatcher.setFuture(m_avdManager.avdList()); - m_devicesFutureWatcher.setFuture(Utils::runAsync([this]() { - return m_androidConfig.connectedDevices(); - })); - } } -void AndroidDeviceManager::updateDeviceState(const ProjectExplorer::IDevice::Ptr &device) +IDevice::DeviceState AndroidDeviceManager::getDeviceState(const QString &serial, + IDevice::MachineType type) const { - const AndroidDevice *dev = static_cast(device.data()); + const QStringList args = AndroidDeviceInfo::adbSelector(serial) << "shell" << "echo 1"; + const SdkToolResult result = AndroidManager::runAdbCommand(args); + if (result.success()) + return IDevice::DeviceReadyToUse; + else if (type == IDevice::Emulator || result.stdErr().contains("unauthorized")) + return IDevice::DeviceConnected; + + return IDevice::DeviceDisconnected; +} + +void AndroidDeviceManager::updateDeviceState(const ProjectExplorer::IDevice::ConstPtr &device) +{ + const AndroidDevice *dev = static_cast(device.data()); const QString serial = dev->serialNumber(); DeviceManager *const devMgr = DeviceManager::instance(); const Utils::Id id = dev->id(); @@ -457,15 +449,7 @@ void AndroidDeviceManager::updateDeviceState(const ProjectExplorer::IDevice::Ptr return; } - const QStringList args = AndroidDeviceInfo::adbSelector(serial) << "shell" << "echo" << "1"; - const SdkToolResult result = AndroidManager::runAdbCommand(args); - const int success = result.success(); - if (success) - devMgr->setDeviceState(id, IDevice::DeviceReadyToUse); - else if (dev->machineType() == IDevice::Emulator || result.stdErr().contains("unauthorized")) - devMgr->setDeviceState(id, IDevice::DeviceConnected); - else - devMgr->setDeviceState(id, IDevice::DeviceDisconnected); + devMgr->setDeviceState(id, getDeviceState(serial, dev->machineType())); } void AndroidDeviceManager::startAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent) @@ -523,6 +507,13 @@ void AndroidDeviceManager::handleAvdRemoved() } } +QString AndroidDeviceManager::emulatorName(const QString &serialNumber) const +{ + QStringList args = AndroidDeviceInfo::adbSelector(serialNumber); + args.append({"emu", "avd", "name"}); + return AndroidManager::runAdbCommand(args).stdOut(); +} + void AndroidDeviceManager::setEmulatorArguments(QWidget *parent) { const QString helpUrl = @@ -546,73 +537,121 @@ void AndroidDeviceManager::setEmulatorArguments(QWidget *parent) m_androidConfig.setEmulatorArgs(Utils::ProcessArgs::splitArgs(dialog.textValue())); } -void AndroidDeviceManager::setupDevicesWatcher() +QString AndroidDeviceManager::getRunningAvdsSerialNumber(const QString &name) const { - if (!m_devicesUpdaterTimer.isActive()) { - // The call to avdmanager is always slower than the call to adb devices, - // so connecting the slot to the slower call should be enough. - connect(&m_avdsFutureWatcher, &QFutureWatcherBase::finished, - this, &AndroidDeviceManager::devicesListUpdated); - connect(&m_devicesUpdaterTimer, &QTimer::timeout, this, [this]() { - updateDevicesList(); - }); - m_devicesUpdaterTimer.start(deviceUpdaterMsInterval); + for (const AndroidDeviceInfo &dev : m_androidConfig.connectedDevices()) { + if (!dev.serialNumber.startsWith("emulator")) + continue; + const QString stdOut = emulatorName(dev.serialNumber); + if (stdOut.isEmpty()) + continue; // Not an avd + const QStringList outputLines = stdOut.split('\n'); + if (outputLines.size() > 1 && outputLines.first() == name) + return dev.serialNumber; } - updateDevicesListOnce(); + + return {}; } -void AndroidDeviceManager::devicesListUpdated() +void AndroidDeviceManager::setupDevicesWatcher() { - QVector connectedDevicesInfos; - connectedDevicesInfos = m_devicesFutureWatcher.result(); - - // For checking the state of avds, since running avds are assigned a serial number of - // the form emulator-xxxx, thus we have to manually check for the names. - const QStringList runningAvds = m_androidConfig.getRunningAvdsFromDevices(connectedDevicesInfos); - - AndroidDeviceInfoList devices = m_avdsFutureWatcher.result(); - const QSet startedAvds = Utils::transform(connectedDevicesInfos, - &AndroidDeviceInfo::avdname); - for (const AndroidDeviceInfo &dev : devices) - if (!startedAvds.contains(dev.avdname)) - connectedDevicesInfos << dev; - - DeviceManager *const devMgr = DeviceManager::instance(); - - QVector existingDevs; - QVector connectedDevs; - - for (int i = 0; i < devMgr->deviceCount(); ++i) { - const IDevice::ConstPtr dev = devMgr->deviceAt(i); - if (dev->id().toString().startsWith(Constants::ANDROID_DEVICE_ID)) { - existingDevs.append(dev); - } + if (!m_androidConfig.adbToolPath().exists()) { + qCDebug(androidDeviceLog) << "Cannot start ADB device watcher" + << "because adb path does not exist."; + return; } - for (auto item : connectedDevicesInfos) { + if (!m_adbDeviceWatcherProcess) + m_adbDeviceWatcherProcess.reset(new Utils::QtcProcess(this)); + + if (m_adbDeviceWatcherProcess->isRunning()) { + qCDebug(androidDeviceLog) << "ADB device watcher is already running."; + return; + } + + connect(m_adbDeviceWatcherProcess.get(), &Utils::QtcProcess::finished, this, + []() { qCDebug(androidDeviceLog) << "ADB device watcher finished."; }); + + connect(m_adbDeviceWatcherProcess.get(), &Utils::QtcProcess::errorOccurred, this, + [this](QProcess::ProcessError error) { + qCDebug(androidDeviceLog) << "ADB device watcher encountered an error:" + << m_adbDeviceWatcherProcess->errorString(); + if (!m_adbDeviceWatcherProcess->isRunning()) { + qCDebug(androidDeviceLog) << "Restarting the ADB device watcher now."; + QTimer::singleShot(0, m_adbDeviceWatcherProcess.get(), &Utils::QtcProcess::start); + } + }); + + m_adbDeviceWatcherProcess->setStdErrLineCallback([](const QString &error) { + qCDebug(androidDeviceLog) << "ADB device watcher error" << error; }); + m_adbDeviceWatcherProcess->setStdOutLineCallback([this](const QString &output) { + HandleDevicesListChange(output); + }); + + const Utils::CommandLine command = Utils::CommandLine(m_androidConfig.adbToolPath(), + {"track-devices"}); + m_adbDeviceWatcherProcess->setCommand(command); + m_adbDeviceWatcherProcess->setEnvironment(AndroidConfigurations::toolsEnvironment(m_androidConfig)); + m_adbDeviceWatcherProcess->start(); + + // Setup AVD filesystem watcher to listen for changes when an avd is created/deleted, + // or started/stopped + QString avdEnvVar = qEnvironmentVariable("ANDROID_AVD_HOME"); + if (avdEnvVar.isEmpty()) { + avdEnvVar = qEnvironmentVariable("ANDROID_SDK_HOME"); + if (avdEnvVar.isEmpty()) + avdEnvVar = qEnvironmentVariable("HOME"); + avdEnvVar.append("/.android/avd"); + } + const Utils::FilePath avdPath = Utils::FilePath::fromUserInput(avdEnvVar); + m_avdFileSystemWatcher.addPath(avdPath.toString()); + connect(&m_avdsFutureWatcher, &QFutureWatcherBase::finished, + this, &AndroidDeviceManager::HandleAvdsListChange); + connect(&m_avdFileSystemWatcher, &QFileSystemWatcher::directoryChanged, this, [this]() { + // If the avd list upate command is running no need to call it again. + if (!m_avdsFutureWatcher.isRunning()) + updateAvdsList(); + }); + // Call initial update + updateAvdsList(); +} + +void AndroidDeviceManager::HandleAvdsListChange() +{ + DeviceManager *const devMgr = DeviceManager::instance(); + + QVector existingAvds; + for (int i = 0; i < devMgr->deviceCount(); ++i) { + const IDevice::ConstPtr dev = devMgr->deviceAt(i); + const bool isEmulator = dev->machineType() == IDevice::Emulator; + if (isEmulator && dev->type() == Constants::ANDROID_DEVICE_TYPE) + existingAvds.append(dev); + } + + QVector connectedDevs; + for (auto item : m_avdsFutureWatcher.result()) { const Utils::Id deviceId = AndroidDevice::idFromDeviceInfo(item); const QString displayName = AndroidDevice::displayNameFromInfo(item); IDevice::ConstPtr dev = devMgr->find(deviceId); if (!dev.isNull()) { - if (dev->displayName() == displayName) { - IDevice::DeviceState newState; - // If an AVD is not already running set its state to Connected instead of - // ReadyToUse. - if (dev->machineType() == IDevice::Emulator && !runningAvds.contains(displayName)) - newState = IDevice::DeviceConnected; - else - newState = item.state; - if (dev->deviceState() != newState) { + const auto androidDev = static_cast(dev.data()); + // DeviceManager doens't seem to hav a way to directly update the name, if the name + // of the device has changed, remove it and register it again with the new name. + // Also account for the case of an AVD registered through old QC which might have + // invalid data by checking the sdcard size value. + if (dev->displayName() != displayName || androidDev->sdcardSize() == tr("Unknown")) { + devMgr->removeDevice(dev->id()); + } else { + // Find the state of the AVD retrieved from the AVD watcher + const QString serial = getRunningAvdsSerialNumber(item.avdname); + const IDevice::DeviceState state = getDeviceState(serial, IDevice::Emulator); + if (dev->deviceState() != state) { + devMgr->setDeviceState(dev->id(), state); qCDebug(androidDeviceLog, "Device id \"%s\" changed its state.", dev->id().toString().toUtf8().data()); - devMgr->setDeviceState(dev->id(), newState); } connectedDevs.append(dev); continue; - } else { - // DeviceManager doens't seem to hav a way to directly update the name, if the name - // of the device has changed, remove it and register it again with the new name. - devMgr->removeDevice(dev->id()); } } @@ -625,17 +664,79 @@ void AndroidDeviceManager::devicesListUpdated() qCDebug(androidDeviceLog, "Registering new Android device id \"%s\".", newDev->id().toString().toUtf8().data()); const IDevice::ConstPtr constNewDev = IDevice::ConstPtr(newDev); - devMgr->addDevice(constNewDev); + devMgr->addDevice(IDevice::ConstPtr(constNewDev)); connectedDevs.append(constNewDev); - } - // Set devices no longer connected to disconnected state. - for (const IDevice::ConstPtr &dev : existingDevs) { - if (dev->id() != Constants::ANDROID_DEVICE_ID && !connectedDevs.contains(dev) - && dev->deviceState() != IDevice::DeviceDisconnected) { - qCDebug(androidDeviceLog, "Device id \"%s\" is no longer connected.", - dev->id().toString().toUtf8().data()); - devMgr->setDeviceState(dev->id(), IDevice::DeviceDisconnected); + // Set devices no longer connected to disconnected state. + for (const IDevice::ConstPtr &dev : existingAvds) { + if (!connectedDevs.contains(dev)) { + qCDebug(androidDeviceLog, "Removing AVD id \"%s\" because it no longer exists.", + dev->id().toString().toUtf8().data()); + devMgr->removeDevice(dev->id()); + } + } + } +} + +void AndroidDeviceManager::HandleDevicesListChange(const QString &serialNumber) +{ + DeviceManager *const devMgr = DeviceManager::instance(); + const QStringList serialBits = serialNumber.split('\t'); + if (serialBits.size() < 2) + return; + + // Sample output of adb track-devices, the first 4 digits are for state type + // and sometimes 4 zeros are reported as part for the serial number. + // 00546db0e8d7 authorizing + // 00546db0e8d7 device + // 0000001711201JEC207789 offline + // emulator-5554 device + QString dirtySerial = serialBits.first().trimmed(); + if (dirtySerial.startsWith("0000")) + dirtySerial = dirtySerial.mid(4); + if (dirtySerial.startsWith("00")) + dirtySerial = dirtySerial.mid(4); + const bool isEmulator = dirtySerial.startsWith("emulator"); + + const QString &serial = dirtySerial; + const QString stateStr = serialBits.at(1).trimmed(); + + IDevice::DeviceState state; + if (stateStr == "device") + state = IDevice::DeviceReadyToUse; + else if (stateStr == "offline") + state = IDevice::DeviceDisconnected; + else + state = IDevice::DeviceConnected; + + if (isEmulator) { + const QString avdName = emulatorName(serial); + const Utils::Id avdId = Utils::Id(Constants::ANDROID_DEVICE_ID).withSuffix(':' + avdName); + devMgr->setDeviceState(avdId, state); + } else { + const Utils::Id id = Utils::Id(Constants::ANDROID_DEVICE_ID).withSuffix(':' + serial); + const QString displayName = AndroidConfigurations::currentConfig().getProductModel(serial); + if (IDevice::ConstPtr dev = devMgr->find(id)) { + // DeviceManager doens't seem to have a way to directly update the name, if the name + // of the device has changed, remove it and register it again with the new name. + if (dev->displayName() == displayName) + devMgr->setDeviceState(id, state); + else + devMgr->removeDevice(id); + } else { + AndroidDevice *newDev = new AndroidDevice(); + newDev->setupId(IDevice::AutoDetected, id); + newDev->setDisplayName(displayName); + newDev->setMachineType(IDevice::Hardware); + newDev->setDeviceState(state); + + newDev->setExtraData(Constants::AndroidSerialNumber, serial); + newDev->setExtraData(Constants::AndroidCpuAbi, m_androidConfig.getAbis(serial)); + newDev->setExtraData(Constants::AndroidSdk, m_androidConfig.getSDKVersion(serial)); + + qCDebug(androidDeviceLog, "Registering new Android device id \"%s\".", + newDev->id().toString().toUtf8().data()); + devMgr->addDevice(IDevice::ConstPtr(newDev)); } } } @@ -652,9 +753,10 @@ AndroidDeviceManager::AndroidDeviceManager(QObject *parent) m_avdManager(m_androidConfig) { connect(qApp, &QCoreApplication::aboutToQuit, this, [this]() { - m_devicesUpdaterTimer.stop(); + m_adbDeviceWatcherProcess->terminate(); + m_adbDeviceWatcherProcess->waitForFinished(); + m_adbDeviceWatcherProcess.reset(); m_avdsFutureWatcher.waitForFinished(); - m_devicesFutureWatcher.waitForFinished(); m_removeAvdFutureWatcher.waitForFinished(); }); diff --git a/src/plugins/android/androiddevice.h b/src/plugins/android/androiddevice.h index 3d08f09315c..8a8abe70ada 100644 --- a/src/plugins/android/androiddevice.h +++ b/src/plugins/android/androiddevice.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Copyright (C) 2016 BogDan Vatra ** Contact: https://www.qt.io/licensing/ ** @@ -33,8 +33,10 @@ #include #include +#include + #include -#include +#include namespace Android { namespace Internal { @@ -70,6 +72,7 @@ public: QString androidTargetName() const; QString sdcardSize() const; QString openGlStatusString() const; + // TODO: remove not used AndroidConfig::OpenGl openGlStatus() const; protected: @@ -98,24 +101,29 @@ class AndroidDeviceManager : public QObject public: static AndroidDeviceManager *instance(); void setupDevicesWatcher(); - void updateDevicesList(); - void updateDevicesListOnce(); - void updateDeviceState(const ProjectExplorer::IDevice::Ptr &device); + void updateAvdsList(); + IDevice::DeviceState getDeviceState(const QString &serial, IDevice::MachineType type) const; + void updateDeviceState(const ProjectExplorer::IDevice::ConstPtr &device); void startAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent = nullptr); void eraseAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent = nullptr); void setEmulatorArguments(QWidget *parent = nullptr); + QString getRunningAvdsSerialNumber(const QString &name) const; + private: AndroidDeviceManager(QObject *parent = nullptr); - void devicesListUpdated(); + void HandleDevicesListChange(const QString &serialNumber); + void HandleAvdsListChange(); void handleAvdRemoved(); + QString emulatorName(const QString &serialNumber) const; + QFutureWatcher m_avdsFutureWatcher; - QFutureWatcher> m_devicesFutureWatcher; QFutureWatcher> m_removeAvdFutureWatcher; - QTimer m_devicesUpdaterTimer; + QFileSystemWatcher m_avdFileSystemWatcher; + std::unique_ptr m_adbDeviceWatcherProcess; AndroidConfig &m_androidConfig; AndroidAvdManager m_avdManager; }; From b0a7fe31c02c962eb943907f27d6acbb52d04239 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 22 Feb 2022 16:37:13 +0100 Subject: [PATCH 18/45] Doc: Update Options > Environment > System screenshot - Mention "Auto-save files after refactoring" in Opening Files. - Include the screenshot in Specifying Environment Settings. Task-number: QTCREATORBUG-26610 Change-Id: I05eaf85244ba1f1acf870bbcd37ba81f616b17a4 Reviewed-by: Christian Kandeler Reviewed-by: Eike Ziller --- .../qtcreator-options-environment-system.png | Bin 10861 -> 12580 bytes .../creator-only/creator-clang-codemodel.qdoc | 8 -------- ...creator-projects-settings-environment.qdoc | 2 ++ .../creator-open-documents-view.qdoc | 2 ++ 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-options-environment-system.png b/doc/qtcreator/images/qtcreator-options-environment-system.png index bc7ccc8ee8cc98282df0f71708f5e7609bd035f0..9d6cb599c1228d550a1caa08001ce998e561ecfd 100644 GIT binary patch literal 12580 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 k0v>q;)nT)wAN^b%7 literal 10861 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 MboFyt=akR{0PnH{&j0`b diff --git a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc index 3211d7d950a..d6f5709c372 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc @@ -157,14 +157,6 @@ re-scanning is incremental, so nothing is lost by closing and re-starting \QC. - Because clangd considers only the on-disk state of included header files - when parsing a source file, you need to save changes in header files to - have them considered elsewhere for completion, diagnostics, and so on. - Partly for this reason, files that are changed by refactoring actions are - saved automatically. To disable this feature, select \uicontrol Tools > - \uicontrol Options > \uicontrol Environment > \uicontrol System > - \uicontrol {Auto-save files after refactoring}. - The document outline in the \l{Viewing Defined Types and Symbols} {Outline} view is backed by clangd's document symbol support, which makes the results more reliable than before. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc index 6a4dc9bf922..c47b9144e40 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc @@ -45,6 +45,8 @@ \uicontrol Environment > \uicontrol System, and then select \uicontrol Change in the \uicontrol Environment field. + \image qtcreator-options-environment-system.png "Environment options System tab" + In addition, you can specify custom environment variables in the \uicontrol {Project Settings} > \uicontrol Environment settings. They are added to all build environments. The final build environment diff --git a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc index ff0fef58ddd..ad53a9912c3 100644 --- a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc @@ -63,6 +63,8 @@ \li Select the \uicontrol {Auto-save modified files} check box to automatically save changed files at the intervals specified in the \uicontrol Interval field. + \li Select the \uicontrol {Auto-save files after refactoring} check + box to automatically save \l{Refactoring}{refactored files}. \li Select the \uicontrol {Auto-suspend unmodified files} check box to automatically free the resources of open files after prolonged inactivity. The files are still listed in the From 3efec2b887483cc4668805a0da6752f4692985f7 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 22 Feb 2022 15:43:21 +0100 Subject: [PATCH 19/45] Tests: Add build files for qml-ast2dot Change-Id: I5d439be4442ab5c41935534b93ebc9d6868cb880 Reviewed-by: Christian Kandeler Reviewed-by: Eike Ziller --- tests/CMakeLists.txt | 2 +- tests/tests.qbs | 1 + tests/tools/qml-ast2dot/CMakeLists.txt | 13 +++++++++++++ tests/tools/qml-ast2dot/qml-ast2dot.qbs | 21 +++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 tests/tools/qml-ast2dot/CMakeLists.txt create mode 100644 tests/tools/qml-ast2dot/qml-ast2dot.qbs diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 71bf9613a5d..3e961231ca5 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,4 @@ add_subdirectory(auto) add_subdirectory(manual) -# add_subdirectory(tools) +add_subdirectory(tools/qml-ast2dot) add_subdirectory(unit) diff --git a/tests/tests.qbs b/tests/tests.qbs index adabf7a3982..fc634c93d08 100644 --- a/tests/tests.qbs +++ b/tests/tests.qbs @@ -5,6 +5,7 @@ Project { references: [ "auto/auto.qbs", "manual/manual.qbs", + "tools/qml-ast2dot/qml-ast2dot.qbs", "unit/unit.qbs", ] } diff --git a/tests/tools/qml-ast2dot/CMakeLists.txt b/tests/tools/qml-ast2dot/CMakeLists.txt new file mode 100644 index 00000000000..5e4a852243d --- /dev/null +++ b/tests/tools/qml-ast2dot/CMakeLists.txt @@ -0,0 +1,13 @@ +add_qtc_executable(qml_ast2dot + BUILD_DEFAULT OFF + DEPENDS Qt5::Core Qt5::Gui QmlJS + SOURCES main.cpp +) + +extend_qtc_executable(qml_ast2dot + PROPERTIES + OUTPUT_NAME "qml-ast2dot" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" +) diff --git a/tests/tools/qml-ast2dot/qml-ast2dot.qbs b/tests/tools/qml-ast2dot/qml-ast2dot.qbs new file mode 100644 index 00000000000..2fbf3676c99 --- /dev/null +++ b/tests/tools/qml-ast2dot/qml-ast2dot.qbs @@ -0,0 +1,21 @@ +import qbs.FileInfo + +CppApplication { + Depends { name: "QmlJS" } + Depends { name: "Qt.gui" } + + cpp.cxxLanguageVersion: "c++17" + consoleApplication: true + targetName: "qml-ast2dot" + builtByDefault: false + + files: [ + "main.cpp" + ] + + destinationDirectory: FileInfo.joinPaths( + FileInfo.path(project.buildDirectory + '/' + + FileInfo.relativePath(project.ide_source_tree, + sourceDirectory)), + "qml-ast2dot") +} From 477ebd3b610a127ed3e914508455677c832f17f4 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 23 Feb 2022 09:47:42 +0100 Subject: [PATCH 20/45] Android: Fix crash on exit m_adbDeviceWatcherProcess can be 0 if Android is not set up. Amends: c43ba1ae329937db62c4824311fe017b68b6033f Change-Id: I90aef197c098f279a6bd3adb0485df74b8be1961 Reviewed-by: Eike Ziller --- src/plugins/android/androiddevice.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index b7927d0aa8c..f6e036b1d68 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -753,9 +753,11 @@ AndroidDeviceManager::AndroidDeviceManager(QObject *parent) m_avdManager(m_androidConfig) { connect(qApp, &QCoreApplication::aboutToQuit, this, [this]() { - m_adbDeviceWatcherProcess->terminate(); - m_adbDeviceWatcherProcess->waitForFinished(); - m_adbDeviceWatcherProcess.reset(); + if (m_adbDeviceWatcherProcess) { + m_adbDeviceWatcherProcess->terminate(); + m_adbDeviceWatcherProcess->waitForFinished(); + m_adbDeviceWatcherProcess.reset(); + } m_avdsFutureWatcher.waitForFinished(); m_removeAvdFutureWatcher.waitForFinished(); }); From 21f1c1a5e441d35e9e3515ce9ad47c1cfa017e15 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 23 Feb 2022 09:10:53 +0100 Subject: [PATCH 21/45] Update qlitehtml to latest master Change-Id: I22fe7e28a0d2ba4848585ec62e1ac3ec904aaff9 Reviewed-by: Eike Ziller Reviewed-by: Qt CI Bot --- src/libs/qlitehtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/qlitehtml b/src/libs/qlitehtml index 62a1650652f..37c295f4320 160000 --- a/src/libs/qlitehtml +++ b/src/libs/qlitehtml @@ -1 +1 @@ -Subproject commit 62a1650652fe5aa45f3e79e4b1a26f3bf92c6d4b +Subproject commit 37c295f4320840b646e84e1cbda8aa07eafc353a From 527074c7bdde231f7475d8c03ec2783f3445b895 Mon Sep 17 00:00:00 2001 From: Mats Honkamaa Date: Tue, 22 Feb 2022 15:50:54 +0200 Subject: [PATCH 22/45] Doc: Update welcome screen documentation Updated screen shots and examples instructions. Task-number: QDS-6214 Change-Id: I0d35dd5efa034dc5e5d3ec7746a61a688ac88d5a Reviewed-by: Leena Miettinen Reviewed-by: Mahmoud Badri --- .../images/studio-examples-download.png | Bin 98357 -> 186158 bytes .../images/studio-welcome-mode.png | Bin 46266 -> 104184 bytes .../src/qtdesignstudio-examples.qdoc | 20 ++++++++---------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/doc/qtdesignstudio/images/studio-examples-download.png b/doc/qtdesignstudio/images/studio-examples-download.png index 7902b4ce7c0b50decb72dd194edf877a54c7df01..c03679db6b6a482bb75f4f5dafdee316ae84064a 100644 GIT binary patch literal 186158 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

W;nGoPC~3TI3$d3xou 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Ⓢ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 B1f!J6ZPR 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≻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ν`Xg_u2z~UU>Vi)Y?|U*=zOd*`Xg4B(|Al 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

vv5kd3vl$bo!V{l!`LCnmow8 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

6Z` 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πVNW$5$;q^!QT+b9!z? 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 KelF{r5}E+0YIZ~b diff --git a/doc/qtdesignstudio/images/studio-welcome-mode.png b/doc/qtdesignstudio/images/studio-welcome-mode.png index 1518b6706cda524fb7b10724be4a810739de4974..a9be0b021c7f0cad5c25cdfa93cf369117a979b7 100644 GIT binary patch literal 104184 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

?a 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%0D2bO1d#m%WqSWy%!w)*4qPhIQIZkX=! z!EC=qy<5cjDNG+c>W`kWtaZL&KXPPFinM(f|GccK393^(4P< zHGMWs(`Qy^&T6hPjk~gLdn@PXm`vWf2#0yE7%NmVZYku#17vq8E&-IB1cF+3$@JNRCQyu<&(f>QU&E8nm87jW? zjr%!!E^|e%>xXYW1(Ra~j^vzqQFK7tJMQV(fRsL!=@So@erl=T_50HArJ0+S|6-22 zd>h(I$hO=(zd$W|PHkFK^5X1S)&0@6Z}z)uYI<@mzwZC(u{YbrNS5^Os z?ELR$2rE4|;eOAV-FJV2%&W7LU#tCy(%7qi`cnC!UBc#aw$-0r{CX&Q_^|AAW8IPLypujJ$4oylZK6`A2@W1n~yS}stw@)q2cpQ;F zYo%yrPqAO`)*QzJi!1+3i}+Nvd(HHK__X2+jb|pc?DX3ta<(a&`%Z>P!|`vCMYg*Q zKL4Bfw*K6Fv#cA3HcQTQcW3%=>$Zf=q(whJ-f@}z>(shH>-$e)=e}F9C3N4thU)>L zN0V+$BEidTSsORtewQ9j0o!{r4E!Ub8h_ledpxiw)H!{eZ1OtjM2ZCXP$}c=YvN4m7P&-*X2Ez`iK2KRq20g zhl%8eS@&T1qkHDv7mMF#8}ajR&r0##{c!iZsbQ)2?RTbromGF%PFFzGK0-RtQ6cx_ zM(^(1x7Dpy=ARZlx9iW!ZCZctEDDfbcd4lE$fd{A*WIg)j+&}^ z``i4FeL80PZ`P+Dm6w}$duP?pQ@qFJo_4K@dn=izs(fa}-Iu2MkND#1KkL1G)w;uZ zzy9sgk6wQ+`!D))MLPThpPz2`gUO1O-xhzf(_j0i;Qfzh_SbW4zpn`hnXyCbOw6}s z+YWED*A*3A7JGC5$MdDT&#CYA?%dCOAp5Fo*o$?=k3M_Lt>b%W##CXle5bj$(KpwR zuP&GVxo)Fb9m-$vsqEI7`h!RLm-eSt=4tgBI`2@~s1tlmF~E2)W54Jo!>vyqdaeJZ z`sbnhChZl<71ti0eLz88NLJ@-xEJMh?Z*Qbx0W1i?+p6xq--l~g3 zj$yqj!}*#Mjb~0R&;C1e*_j2U=e;I{Yu4OOdU0?K*V+bk^J$lN)MkoCy1RW~tSI=m zp1Gpw;&G#U-bIt2o;}#be)N~ihkbkxO!q=NA$z77^_{^}Y;%gY^gUCwOT?Hw+=67o^ z&YiSXvSJ^3F&< zGl~Cj>9N)~QmhX)I&a^j;T7{rbAGX>f@IP6r1u=wH=mWPK6rcn^nJH9WkZ)TfB2!y zzyEyy{I^v;J@mhVl#ql|3S6yVPhzYOP-}mRx7OC1t$p@E8Sf9M=_^es4 z;>YfNlRFMP_%olmVq36Y&7Xp_rnO(@otOXN@71bNd;NeLWBzxB&0>r;vmUQ`?JCLM z9&zRU@|n3@pt%p`2V19nbOLofd*;7gwC73T&K=vPMdZeQJj?nnW#QQylW$&K8Og{Re|nDt7h9mA~{|xnrA^dg5D!>ayhI4-qoljm^&& zlz#W>UU$AMlp*fnSIc)gZ<9Z~QJZseW!1K&^QS%vU~MkjyXvHs&7oN*<@dZU4L$ZS z@Y*TKRl#~sm_9`Pba~#=ru2Wuw7{^~$Uh&yZa(fGblF~Pn&_P#5uP4*2mcXN|P?uJm@z!kvp2nSU3~ z&r@yw=3B|Q|7d#nl-im?`+q@yny*_{o~&;zoW)XM@^8W0l}}Au^WWXy@$tpi*V?=N zmQB6FJWsR!!@KKORo}}^c$0K8=hCvUz}a$7LPb*T_KMaU|IEz`e6}^!aZ_IVIuYN0 z3+85uPPIIr7vo*=>C?l9vEoJ(7u}r3n18x^)~ipCs-{kP7Bl!j>PP`Q*+?k^s7(b%irBsTf?@@v*C07LJ{BF7u}6l zY1`TCldFIJvU~UMZ!abPtke&Vdg}m4^#R+2F=H=ZIvexDI z)^IvA=R|nzPPJ_5>6zS7^W7Y?Qml>2U2^3$E?oIe5R9uXz9Ul5VS_V56VVg-JF% z{Dpx>v|mh%b6$3CmZ{yLi8{rs7?aNa_V zHch&7SaKOpqr1e-D?xRf7k(bP@WDV|yXvoh&XYcwXQ|4Wf@kJ7D>;cAcYe0E@TGa( zu{WB{wr4UCDeUMOrAP0#yqaXazq0r$bH<@ot^=PVKQ7qw;oGi4=S6J1VcQHArV2Cq zTWL3cp0fGoqdnf2=V~yVue-8v`_!NO-}NNqRJLq4G5#L$A%3FKgR6UP8aAw#{-DK` zw@z+#-HL@y-Y?aaj=x-6GpFfc`~B+-ANH|>MlG}D#o6EkrRzD5@&0)180mYgv(qo< z>U1dv|5@KPlrC@QuuGrC($!eMFXch}%enXWSV%Rb8-J@PyBcgHn!&u^c6AohgN<+1 z=Kc@)Ty&ekyX*T_$=Wy0XLma*PYp8Jd2jz+P1i0p27WeYgl%!rhK@I)f>tj4@^hgi zV_27k-0?g0N8eT*NWSH3@zF7);PrO_#^rLC-Z;7OOfX(}wZr-S>Py@Bwk(*JuAg%5 zmgPe}v9E?!>wK>~TXN~u^xNzoPX=c*#fF~W{$>68BFl#%eJ{SwTgdb>xbOCr$M09Y zDq)oC)VrsDdcV!xrT-4ds7=h2|CF!8y(vUyRjr0)NM=RBn@*iV&quEcvTq*za3{HM zzm_m)w9!D~*A4@TIr40v38-5aJZz+c4nL|*UAtq`huW-9f7ws2eE;c`>()n?!jCWC zb<*Ng=Ann-qFblVkGr$C=Gl|hmh|_<_v7a%PkDbZ^U+KGN2lH_`H_8{->*1q{bQkR z|1wk8uCOuxd-L$`{&{=(xac9TGR!|6iV2s`Aie-RULC>$OiVTy}SF$+MI@ zYp1N))3amdx=n8a9$tBzeZq`v{G{5~|he;am6f0MD>QF=4LeBPX2ci7Iy?GGz1u#{zYCdpusFZL>@jT8qItnKWea~7nG=D`5FpQC zL00;qOeTR-lmhZJPc!2O6#jwcgQzn@pvXd<*n+HRK%N>(FaXaUowWf?NFDyE2%0Ye zuiA{7Y|;GE@V3v}=-Y{vv(03tJ~6y|eAChUhc$|%jW6w9Ykq2)nzHoY8IwxC*dKoJ z_?5o%e9TCToT z|K@tu2U`>R*Ph(F#f-mV62Hbry{+Ck(Ua}Bo|B&V>h06$P1(}Lbwx?DYm9E&Jh#l+v~P>bh5NeQDY?#oYev zi@RFPai6PnmuwBYD{85A^YSx>xZ;NaMIpb;FZnWWIRBgNw&DZRllHGYpY3MYvtDd| zphN!YT`PXw3(?yy*7tR*?(_Uhy{>=TH(cYXh<~d+ZOxiDvAQ3u7g#;mdgo^F{oB)X zH5n?_ihrp3@**)Osq3Eonq29^qDQaZa(;Mq{b$%;kGFeU@>wdpCW_5ntI5FMuzY*{ zs`B3q6<;^<-CX{=tKoZPp*lkx_usUO#~A$=TY}1&ear`5UtKN!@<$nL`tCN@15XQg zUD3(APOm6i9Da^Du-SR*8G*ObmumM+jpCLp)KpC}{nWfG>(sO_4Oe%kX4ML2u2^fA z8ffbpocUj?`r4af?e9?~+s}HfUsZlT)Nj+LlT&n-{0O?zxBp@CDZll5bNI95!?wy_ zyAU4s_sS|w+pLM6T_qMb=cTUqnzq{P=c#DZIWxm_vDF#Zd&21H$4yddgy7~#SODA)m$y3IQ>zoz-Etut`Q!m~%n~n8LR=J2#y>-d_dOo6-D zzB1ZOown$ov#Ct_;q;J-9lx$-dA~h#YPIPc|F3CG4d3T7%dt4-nl>%pY8iNLen=bF zxrAWd!^|SN4MoRS?EASqF8EqYMp^$AzEJT8o^q?prB*QbS4phOS-JP}O%I6x`vbxE zI+uDb@wy+#y=GPKz6Dv1U)gO|-P`=7#r%uVlKWFW&Af6?x-X=W_i0?wYF3-xb*nA~ zhn58u#)hUXmN~!j<@~PCX)la@cM30iv}>21@YRykssARQ@(f#I_^D5_pQ&@NLe&pB+e?6xTODW8@(3ckL;S|PP&#h;L$hgaQU+~WEnWdGJ< z4E~#gSO1HQTKjpm%#2Svv(7x#NO1Tz>D1YPr)`T1V~?zuS8#Q<^izYht=?{5mkWrV z583zH$W(FiuW#%8zD`MZ`>GXi=UvGDBvJp><<(g)ma^G=OM+HSoA zm)|4@eh)CUZ~7(lHLiPIio{+9fA8uwH(zDnpTlJ|o3&!rgH>BxSf`eLjlXJFr``A9 z>#{yk?OM}UC)0TKSMm#lmPz=AEU@ET6&bxtPq=q|=xKdct52^(=J@6oZ{=uv<}bbK zW7*tvw{n%n%N1QKUp-wDm*RRlpFL~7)AjQ~ugYgjtZkHyZCGCN!RpeF|tuv5W?&uBa-gDdi1b)pC@vVFwq&(R@voq_`vLd}X z+ww|^8Tzv>Bp+rEzrVTf%Ch%@AFf>LoLVD$}m~^}W49Zq;nIql_>7E^fIp(R!8sgTV4l(*75( z_&mB=H$B_+oPT8D^j%g{$_`xSSn#s=c1SJv+1xzxoaaKT~>jvG$g8>sqc4OZFNr)j4R!S`pQ^ zU$bHPrHx_dJcHjm)yh3s$+B4E;j7aOa$jd&6#uXyPfBF|mu#kaRU#hw2NwU)Su62j zi%Zumh6=6yF)LI`U#n@?GWP$P^z&1Ldu7@eRvS^R;LbOJv4Xo8{lDE@S+jB~!#uGr zP!X)a(eT}tVcx9|^Ntn24!xcKD#h$-jn-dA|E;RmjE;GhzG*qOB{qu9_=VraCGX<0 z^N*DX@Rf!JEp-d*pI%Fi>*qH& zdF4yRs7tCEnE~EUuc|G{2&#Ac8)Qxa&t0^#|MP3^3aO`MB2)QG%9KLSO|4>;ay_)Uiht$C(=Oft8cT?wTqh?mOnn;aZkilU1NPr*XlH> zr~hV$u>aS#-hXQOwdIE<|H@plqRCm1F}PG{tCIGsxUk^%>pVsdy>Pkzt-?OT&+-o`mG#lpgRq$&5>&g_; zaL){W@?=GbY>0N}y1lW1Jy{p@U4v~e#?RHevOA_rF>4mI(*sTU<+mgktVneJoBPV|V#wc~`&Jzn7d0&Z z=bPEfnkg0*IM3f{Z%_NSy!qEoFWDZovvRAJ=B{-&@2%Q;`l@?(VCjObzEdyGzEx>* zf7Yh9eMM`%z04PPm1gk$UFviAviOH9GI6;o3)5aqde!p%THNdXADIHz9{72+#_jca zTanh#SNUP5p8MWDA~efSX?~c?T;W&ctEYWgSbJ<%+xn|r%bR=Uvty|-^zZ7+I9KQRfhF*jV0#n z7fr0;W|RZ3@M%`yXt+M-ScUXg15pm92V2Vy1j~QoI{0&c`GH`$AP!K^PJjiixeZxt zhP19sfuo__i~(h7lLEoDTj&ay9xR;Me&Nhv&_c60^4OQF5wS)Lq!HFRC;%^lLR&Qk zTI7bhRtwXE0_X}3I2-dLd6(!R0<$Wi9U@RV!SD?+P6KH~?#7@8G`R5q3jhId z)(yyJ*b}$6YN2GqtqmRR&;ZVQ4(`c023Rxgk+ZE@po&W}@9wUNzZL4vw%&T8zvIaE zPAmr4a5O1!G%eVs3r%|hERF&!;8X(fBAg2n1gnLmQiw{3GZ`SpfTbGPK?@T>rh>Um zp!I|xGa)JiyqV>e?QS)=ZhTIZ<$1e;PYK@vX3$zmMw=pemuiNsiGuv?pPfO={EE~m%nKr`@;U!`>jfTEIiB~ zf7{2$=gyrw7asqKW9Vmdyx$C3DFVsGpbZxH?Eiha+;9K)&($~L%*{)^r@Ohh{JFK) zx_}!TnxMD=&GK(;u==|`dH(;eS*yOjy72fq-`%=@_x;!Yxja!><+$gX;PyTS8-}>W zziuvge4cIYzD~yN;M5MP>p`oS;?O8-@^|l>Afs;h zeEu7&KkJ!6y|-vt>vH9^-0bUHZ?7+UeQRy@_Pp3#Wv}ln&7Q9J zU+Q0v{HOE#WE3s^lJ?o}X8yoX(YxyNdfU#Q>?{-G8XXiS=sqdhxwq=8k*TR_{qJvY zvvYD}WMyp=54HUK{CxM09X<060=I?k{d%e5!sIO0uU8wQ!An~~MVIPN$JhP5 zf1c$okCns(-mmO?z82ro3swB$ZW=cqi7$qO$sjjZBudml$ zd4kz&wr@dSf}Cc@rhDV+}R~IEZcSJo=E+_5I%n@Cp%Z2(er;Nl(wY(o~&xg@RxCYdb^yQ{q7%sbhfDe z&iLBQ$ygEZzW1r+?tjb<^{64tDyWOwrm70phwaw1u%)Kk37N-XK)Em6I zxNx_f_T&b|zwE+`<#{~kO!%qXE7S0=L0vg$^?aQZR`zCwXE+XIZ*I7LdqzY;!HP$0 zNg7k%7@j<@5-c@A#COsh&t1IxJzbS5Hm#kNc|eyzj^*T&w{Ly_efn8bUS9r5dh*(} zy0KcHl7%Dvn5t5CE?&I2=X;BjA}B$E7s5(3w;NV4*kqNyPj=E-biZL`knc>RR+f)y zzO!7cIK{-oE(T33@x8RTsI)YcVIDj*PBpl1=w*4KqpRz=r|(XEilB|qW#w|kN$w7d zYFhrnV-ge^3>Cf1aVh^BQ>MsD#+#SFi<#8rSrwS_BKG_|TlYR0%d|5Rk^bF(c7RL2 z3)7ixl$M2*m6f%8IT1WbLoeEIQDp~ccNr)(`>)>dKl$5xfjc4G{|+91s$Oj*9jE=j zgLZQchPk?I8FZ~ZDs+_6({OstFBR_upn6TxHV>8>tIKG!!6P7P_?^nC4(^T(0 zO^5LT;|GNmN1r};pm5mIe`ShmSci!7rxVFdHJg;Q&CJYLm>4S<_FPLbF0LyMG7c>KZRqB#8X9PL1OExx3`0(YBoqyX&CH>lUi)gMg$$asCJ zdz1Nniy48M>ojldEc|Y6DR)l3Tz<-QnY+8(wI9e<#s__@J36ab&zrCEe`VRPr#)w0 z?P_{%zIS=O+2gm5%=LLPw*9Ira=p0k>~7GwE2w41@u0QE)n~rl+#|0~_ynhXkzKjj z$!J+mPtS=Z94Qj_Zfs2URP^1%SfBpYY8l%Z()BYgWqwFxN1s<@r zw;exrjE$XrvJu;o`7RxOR}2&at%KIg(NT1?F|rp;w3)Qa^87&%d~|OTX{9pT8WIZ@p&HUdvkl5A%K>pOtQ+Nhn;iC&mV!O4n}KQ^UpWQm-(p0l;T-W`70Vtvt@udmbFvgEz{jL46$@8Wi zxXbUiWWwc1lYjiUd1?PQaN!Qx&2d@!LzB}XkGf^^=gZG5?Fx{Y$=*N3P$9^*&EZ`I>}^ZzeXdD5MwZMSB^gd6_~!{g)YzP(($ z;#FwWucycJ{pZ`Q<$u80pCZ=%Y5SVHo(%ebg6fVgH)o&pIc{&Q`1Cp3T3Ws)@%!uv z4p3ZI^Y6*cW5!PuHXE(V?!IRyV-e0*Q5>wrJ@1(H>2GGAZyZuz8akCV{QvIn$6J?w zw7fcXr~WdXY5OPMefC8C>7zw&zU&pxTi;VH^j)p^@2$hakMGC$o&2k^u4<;1<+I1f z{XZpr@82035ExkSG3rs*W`53yIE$(lUQiQ~!G>Ypy#{wREA_ohM)zeOS{>DSuCl4Y73S+)*4o=9B*&b&Y0{MQvj5-b ziAQ&c#aM+ZR8{|8)VycQvv-ake@<=HSJ#_x*Rg!YRRv6^JMp$JJ~EBJVejVn)Kwk^Cn|~2eN~_kMskP02>i2TB z(1Fz}Pekp>ss8(mJxPB0^nLptua9X`{dS<|_|w#UVdnG|O!vMl*1jK7?=`Jq#h(+& z{72L#pUwa6qrTvW*?y~Z-K!q<_g=NLeBjey$p3d#nDtS=f8MY2ha@1~eLMCKb7Jnk z^qID?Q?vKro4d>PH_qGpyQS5=#r@lBdxb2AD+}z}YJW>eP28X2nBW24paAI~`I|PC zf9-j@=B{6T+}-Jcq5lk1zcAfgZQb;^X!Vgrmp+|pGTJFR?fR7~)8^jXIQ{GGvn^e# zUbpkDcyI9S#HH}7k7j8dRXft9b@b7uFE6{FXwH&#TH(W|FEiC z-p+gfrzdB3?)Lw8r~KB=M2ER1P2n188oCf!DdSKLxv=31!{0 zv+y|AtE^Qa{d>G(rhYZ3d3LVj^v|n5&%2+wd(Gm((KjD%%>K1$)3#lEK2-gw|10*6 z0n{V_HE`n(yv}txGvlD4_>F(JZa)cs8Ql4G;-9Iue?w1BnIE+N^71a=+L&h>ZIfz>*7+lyY`T(LhyC*`Eyw@uNVp;x!}%O(Xf#?`&rTPS^A zBj2dtu;;@!(->?jyVRb7BKAzRSxFi5gWPjj9Q;}g`6udKuU2YaEWX0nKc_3a{89VA zrBzQ}_uulrZ}}j~(f48Z#?N0EZ8EpL+LJu_QJlT5V5j!yvcG%9LAe=}W^2D>=O-s! zEAwk^b2%+nZ_1np>YO#OAIP5U8dmm0raoRp>&|x9rU<{^_r$I|$&1-MIqUEa<)4qr zw?EFg5`W9uY~z+!k0-CV8Iph9slnXe|3LRm`N=VH^L`pQSw(w3+g|TR~;3Wdv&g{ zI_t)+f@_@{lU%t)J2C5-{#lQ+B8GIS9){W_B9Vq?LWG8=lS<7SJN{$J(v3yr6Kv| zcwFK0#H~x-t*H6AX!76bZ1oq61~~Sk}kZkump8srCDu)*orS- z4qx=}4N7r9}wLe8Zel{m+YLuE#`2PCol@A}@ z-W_@LeEu=dtaV4;$$LNJTp{{2wSLE+2S;14+*z~f(&~1;m&_GsW*!gUyHaersEW6%U|h)M!q=12MYm2>W&J*XkJbE7hI>Ce-gVXbNvhNR&~C5K`8IXp z<xA_eo?f3fch|}3+_rmSTI41j|LT24hh@|LYh`?!R7=F%bMsHVK7C)1>A_a!oklr- zX885-G#Vei)tmVE*oM-?8x}@u=15%Ir;}dY*1&fL)FRtgJ-asN&coT8&1IjgPzid+ zd%rmO;l$Mwxl;ny6c_)mt@`t?JNdtD%$~nH?(#e}E&rY4d!xko?UA|5XZOW_nZH~k ze&^*%=Rddp2l?Oizg_T-){>0t-=e_;d z+FQ2`v}4~a{JAo8=gDwsHLL!+kN5xmb}d@}+@0!upZ|P)@pSjpbUG)6QAdw|C_Ex>UHlxBFzyl*jnt)&`G~bFG=O=ZeacZ%z6zSL*1+ zrHQse$3Lf8wQjO$^{MvWWf|G@88mQnaG&$+!bj`Bo4zzZ7x^fJ0d&gLb*?X$&+q^9 zWi#W_%8IJe_ZNe|-8g=Id+_vin~tB;TgTVu_k?j~nB%sVqt7Pn&*7V%uc^RaXZYfY zyugB;&h_^8Nq4KiO|oSLIb?~2$u!ZsHWQvcI$Dx&aYl^MwyEcyU5b2SIQy7NK)R>- z=JW`*O?TRgnAkV`t(mFksPkRJ&%s39WWrOugoq6_H%s{L6fl?`_fYH+}yV;VPRaqA0C(A-vSz2%5^Kzygu<@={uj@|8mY7 zOuH~SQ~X4cT7T*_|4kQa6>g`is8{f)ml)i(pP~9C&8o^s_RfqlGafredu^-x%`ZjH zeBw%|v@lq+vxG0H3N$*p##DXTy!(H?yuG>P`}$KZJI@RMNq;a05?oqelrQ?*Yf8`c z3y=OZ`Bidm(Cw}_;l=i+R)d}599FV9F=xN#oevM^Fz_#%t9`hNNxkL5T-j#-Gqds> zxmHJ9KHFaOhkestTZwOtI@dL}z0dH=FtIk6^3;*xe4nC1=d3s%bz`gRvksOg-PmRH z);Y4SQRltGwDrb^8xP2xGX@PFWT%?Felev!_`I#x-{&VRr_Z!d1P?rIoyQS3-7mJI z^zE9o*w<^luj|FGTob)rFLt-5e0gxS=eE$pa#!Y+y;Q2^ejvv1{`cChOt}AEeaNe3)@+?& zWviDQ$!5pPJDQgjvHL!A^L@gn(mCs&&O+wVuNZ7+`@zZ}E+-;-JAdKc-p@<`V&yR71u!E$=8&cwYgY`1+m(BqvN9*#m}`CcVEfBA=Zm7R(c zeUqfLJ{cCJ^zE+G;XhQGZ0T5B!7ToP&Ht&}q=n^6W^gGw@Xd8)s&vQkGreNC$5crlHS$NEqOkLRBYXQm~dchTSnRg?!o zjTTV4UVV8ivy93y;jXn;U!Q?H!vpt@HTg=JCyo>x+x? zGy43kOzqj@w@QZcot3{Wsw*c?m$BV@;?%cya@(Bvqr=Oy#TQPUJo~`GtC#LwJ#=m6 zp6N5U8lOKkQM-U4kMYAkalr|nQ>}znOm>_#A=7!@sTKWK!W2)4AMTxTUV2N1c?zF? z7RT-B4zZtKFBX`vIW^*IGCTj17WYCW_6^E^BKO_X(J%J=r|#&uPWkXun*-aKp=-(@ z2SJ&3ynm7V@`Y}}r;SBnM&k0>;qlVu_SWU~?EMVt>lMV`3xwYfFi-u=E&Qv!lBLaC zN8!$0d!HBLuU-j1dL;bljp&;vl20DUCA@x?|Mrn`!8gVH#D@z0XX0esJ^G z2e)=GZ)d2u&wZD5!<-n2uuTkec<&2C-Ma!a_Fe`7KKR^hfu`@hL0^2t5)ixbqd zo49V@-#dSPO=S0rdzj*Dow#AG!Hhp!i}|;ea&MaW#<=0lg-bWjUpm?U{)P9MrWwup zpj2mjrrtrFH6&){wXVjply^lzX2vZ~y}VNOp78!Vt5apQe!ltTdw;yecB!-{`k5Ce zTD5O*cDj+s_(nm0+I;KNw`Xc@N#JNGLvjDSm~Dpyq!TyvMo-w9Jz;A0gafJxTIRsFKeIMpo%qK`e_FnPbV&buPxceM&0zSNSMdurR#LfIEF>TKs*Q=gqO65phA=cd>@nSJcX zFEyt>P0f3ooA^38@9|OPl#GX`9$3yOdgF8B+A*I-!Dj!mR1f3H@4`0KC++pQv9~93 zZ_mvGx(spJ;*tU4M~YNAjxRDixrIIDNUX{6d^!Ctk&|zZe^aoW`6b_dp3SbE?5FQ{ z%jTTjQl7v$_of}wGTXUs?4Z*a?GJ#akJ%j=_K1a?-?wF6?MvI<7khh7#JlMyr{yP? z$qTPrxN@f8-9s}nQx9!3e0oFpK=P+KGldQmPd1phb3(4;nYrE){tq(qo~EWfJ-Joo zbnJ^5_TX*2H!pOYo4#N!=kzxd-b{P5XZaJ|7n8P6-lO@}IAcrk^>|($9;>o9S2hNx zCq4P7zyFVuxJBa~hKhKGMHz`Yikg!$Pj8rUf>X6vWkTfXbnoR33dPfnqZqvmGknsg zP3Kp?)AsVok#8afvK2gbp!yipMv;Rw?o!+&`Y)bdA@?EUnOli>^0KX*xBHHjE}8sc z?oRFL@6|RGs+Sz!Tr$1=(~ozPEao+|ytlEe*>qv*0)^gOf2VpC29Gi&b{pkoDbH)4 zmRxsETIOqe<-)?rY`!zZP3zwMsLXad`=|EK9@8g=8$SqcR4`|V>+bH^`Z>`vO;`Q# zI~fTk?Oi`B{9f?H)$4mMShKamXL7>%qR-FVc5M3lHuBvy9dW+HGT7;J5ty+dCsSt9{FgqTj3sTty`>-iSh(-VjI=zT;w0W4b;Etu zktZHlPWC;~=Ek#nAIk@yN?yS|Y`YeJHOP^A@YV2*_n~q%p1k$}bTKxVaeeUfb9;Z!`ev9Wu&lTlfi#;9n-YMte3@5gI4oF>HFkMd;2rXISWrp z^lNI?Cmk}L!YFt7+LX5rk1a0lOevVVdhXtW9}MpmC&r0|<(16SHf)=z-Dq`lg^j0A zzs?h@$-YYjZ5VHIYOZ%G^C6_F9_!_R)6ux}JvF&-nw)O0n`$W#G@IUi9c6aBt zXF_T|R;T;kzRWap$Pmjs{W0M}B&ZOFi~-niG+dYanw>A4bhp~uVEuBz)$NKW7o|*` z5iKtql+rro;1;!>^h0W;!7`aL=|ZPA3rt{`Ykd4rtBsmlL7(2qdsCzd zSHgJHQ$M+{@0E>D7(G=WVAvms8ss(0Vh{ zs;cbmtNS~RBR5YEVX$Plm)`CE++}0!-kE(Wu9GLk8Jx})%fFDYO@8xLf2RYBieoAc z$~|Mgdq!#PO()bOGhfgqGh{8}=Zw8Q9FsPB2=qUgso0x;W{a^}&+$#>Qzy)x^TlWB z33X$k`^uIxH|?KvV{S_A?0qKQn=12@^Um*6Q8}Tyd+MYm8_%ftS4+P1EVuReaqiaC zr%$}K_Fl+o;j#ALwU+(vxygyo4{rIcR{vAR&R^nG(TA58H&5^R$WX+v=X{Eal<}OW zlE*%oEHC!_(RU?m=3!}@skhHZS&7~&FZff^cVW-`3pEYhku9dj_wGGAivcu>44MpL z2Q`uR?*8`X_S)%ZdPI7zFXoSBN^?uOWo7If+`Z4FQE+a^(Jh8*Y7fn4-aI8Iut-_a zy3=#ojR^WgyUx_0Z;tm*OD*;j8Z49nhHW~o)$ ze=Tt9)oXjF>gK(D|J{>GQJQ7S!`DA6UO(Ou^Gq!2R!p5AmAZwu~Z;yz!^CU}^ zTOZP>uzTWg<6=1Wvr~5*P4f3Yc>4qw)ya~!poCyD&|CmzdG-x-kcS*(8_UE!&~*m zha#3d*J9ysVn4_Xx)Fd`V9)dw{P!kIWVUJN`(zZdQgUzhj^*Dq{PXWSI@j2=Pg-Te z)~Tp`<8V#Kwuzkl6^Gq9+xvxhq*WyzYAYF@+2Ip5iMOryk+hlgL9@Nxd+sLmx9#mU zl9aVPqOe}@Ndeo;FH#qa4oaVT@|z=M-;&?+UA$*yo3(ja0u8j>ZazU_1Q-r|H+Jp1-5xSsV_={ugRsaOHJ4uSzhG(6br!Xxp< zwjr+-Mh z+6w2#y8rwyw5Vn%PrA9Op>Ce@@93V*Ob44E*m|!Ok3Bmfb<<*>`cE(CaE5pZPSsfS zdDjbdq2dy&#A$P+7d|>3tfPq<*scGX+jwMbN)9OGE5)WXhOGH2|Hk*wiwZSc>6cI6 zTHmM^S$SF7CS}U?fL+VYd#{}1HGCn{ti%89+gGWqANO}O@~>R4oUfQK^TKk@nm;vvFTw%%1oJ7oiEZROCk?$F0pA^sbF|R>ay2mwrN+(1#CFtPAfXEVln=!6v?aX zKdCV6)QT+`VGN5;mn9@$vXpXM584+-78mdvLO z2ix{a-m|EPs6TwK=WA*6-jjU2^?Zi1Czee4JKy!gnZESQs%hD0W>-ct%x!+Kbwa|j zTk{q96INv$^Zaluu(NfJUQBIz)9Fc>E|OY~i>8PxE@4tYiF+B-3g*4PzR6$7Kk%TA z*~asWtig;mhOJLG1)kZ%ZsPX8@yIovuXSx+mWMZGE)Bo@O>Fn8>jfO=+ngt)KK?b0 zW8TuoH)qdVddu;HLdDu<_vIx%OXZzcrFeKmpH*0vrDSR~P4voDd-0W9gE=QZ{Uh;d z{{*fY$z^u!4;(?4J~)10VBv2v-%@^`k?rv-`x!3t>zGf@e^Q?;A?EYCS6}jAgOu^HO$Z z_RcQseW_Yr&fkBp_SYB1vg^wqhOREJjCgx|!{=kR64%vLRF*AWy4%k1{Wiww%@4M& z`9Akpzv5y^wSAW-ZkuH}XNQtjsNZ`vJ(s9VtrpKL&vhN*S`XNqJ}6Yo4f$|FF5s8@ z9v;U@R-ii??r|?jKOcAO#myZTPAB>Lziy55&93@dWSli`_H60Mtb@{P<5CS~=9uli zS=@Zr@xwgxiE9!r>0DN*(2>ntI`g>asb@!ucb}gzxx`T4N%w4chx_Rk&MkR?x||1_ zA1Dey${EKGF@~j&Qk;Ee*qr^b-|*BK!=qpR|M2V$G~2o)C+g#p%*S5wnsaUlxGufy zrRFQ0f9ukQk549DI(c+ys#s#gWr1UVCBCl-TA2_du%}P8OZ3pf&7RF?5|;hXC@T?D zw`-I=xWsVxS@sm;)~uTmtt!r19g8o|1li2O-v}xf8CcfOHqN}$vT0GL$_b{aU}!&8_Yu5$&|7Bf3*Mrr>n%M^}#+u3yqScUG`T zWzNYZO_Ms4yVakF_n+67ns2_&V*7@a9>o(yCncPF&MUv}_Uh5^JenjS&ayt4GoAI* zix{=uh3TxW8=F2`YC8Jx?ybIBqNy6GmATGo&b_znms%b;eh}c`kYnKo-T2_#UBvAn zQKM6TXUCk4Z71ZSXH4}^iYc=*+*oMI+GeU^^vOHuv)a+8KD^%bp|fqgr&`>W*lgmt zo^82b?@1kRNn<Bps)L90q)({a`T3j^AxG0#1 zX_}C8+lJgI2N=@|IYapK2g{}-1EUi_Chan=Qm{|1`` zq!;vGYrFii1nkU-hDRKIWPipV4q-De&3t2_IQRakcX=gNFC%Yp+AGf&UoxqGYL`%J zjV-u-a8>{naSR7vKU?xbILUc&D&xc?SBIpCoS=%BBA1$=ikcb^pDAWGW*Sy%8gA>m z`K}*3y5f=XkwVos9vkP+Q~j3SWs(!g(7Rsdph!;=SNf$UwLnGIMGr16YKWL<=JZ5f z=~7F_-{vE;941;htl%^FxBhZ#q3A)!Qw<6m#hTa;zAmsZDbukwYFRniSmoiF11e=E z&u_X%ByNn*)YN2UWv#5NOg`Rs_T0H`CVLkwP-tA>8=BtO*jQt?|LgpTYXeSlt1MD! z)qzwWu)I@Rtn{a;_UEcAbDHFAt4{B{6yUlbPS{H+;LUo`ADOQIqB1AAiLIM<)U9Lk zrJEmJsUyN?oFAOSl)^e7G^kw)@)| z*{edr!p6qNp7Vp)njL*~R8(A)CeDageVRMh@A@=j9WAX--@oU7z3qA0XX+vkHA!7D zRZ!{{uwh{WHI@YS2TW*gX%A@E-!XJU)lUOjVDlqcd|;qKpWrlOm|L^ z#Xo}N=T)eL8}#UYc=)M(Q}wqJ<<$Fed+(?&{_*5E*D=6s&WzOO5( z)i|Rk{Vua+;AAhe)22thocQmfHaX_6-l_q*D3@EUW`7IkHvNS}i z)k*QP#X=6jJq-;Evu(G?ur;p@5%E&ZR7&JQOMNFKom9PbM7msc7Dhw}`&@X;i?GQ%HKWT#%k|-2meoV**T7M zDn(Aucj<=F$>jO{?&%pxnqC&-8nV`vP zOSzeqCTH+4&eoNFq5axEMj^RV)ueHXp4g8rwjPnM(s~k)w7)Jo`HN4OM@I9Dl;ihr ziM*00U)Z16eg8q*eAcb}XU}J^Nc*wk$-*~(ejH(08ujkz1fE3BHiOE0YZ{eZ<8tiT z!VM4I4wsWSD}U}`rSZaOfjxdo6;Y3`aCE-;!4X!Wt#(kkZQA_#>#x5)d8KdJF6+-5 zw4e9~-BbITU!uJ1>%oHumvvchYTM)T8N}GK*+RY~^i~er^{^sU%(t>cTTG_`H~yC>q2qR&AA zwtS9e>z0F(PS5!gzrA><7}8#O$u&iC7wf^-JS@h|%rh95JkpydD}PVxpz;KnO(%A_oiy=*VCPq-3 zlOxW&earke*YgE5C;j^IV?*1e6Z4nk^=5O3U7vkc_SjN4uNfxwR@z=CH z{zdNU;l1}C9BjUO=Z?q6DK!uG-nrve-5K{&ls{2cqEUBvaqFV2?U7H5j$N$f1`Em5uo8=Nj! z`uQ7`y=}eSE_N(vM-ccDw7Jq*9CKS{=r8JB5O|M`ees?b$EGeh*L(0|+UE9;GnAK> z#LK!~*M4bOHGf6U`wNP4aevu)RN}X`w;y-tulqRf(4~Ki7BT*L!x-{Mq3lD#vQv{4 zzb*QFa$V2C%$~&N_KlJ`eTAx^T=cL*GRVGd|1`-1i$5>Ev2o#=4`y6)jaxRVq~;VC zdr2Qu)^peTN8Gy3L!Pi$7&iE1hwBCQdP1d8r zxAP(y=emBl7GGcSi5cWm29CJ&_NOmjo9xN((YGq*nEcT9Vte;Yixm7KChi=l-d6|KFjXFav7WB0N;z9BW@D5T)EF`C zXu>COvWZ(RzNfwZpT4q-xWEkotF=B12b&=+bX(>vj>@q|6Xb6_2;4W%HBvxut5EQHFtf4uf@uK(M%gV#te{44Hol^6wPnzb%+}#!>mDUOC_0 zrU#`KE^mL7H1;ffa=G=OPwj%jeJ$y?m}kCiIR1F1yMyBY<42E9G}>0ltW=#ci{&%h zlH;*{etkRZ`YRL!ZH%nCxeqEcXHI%$cllhjsV|fJGxK>Ia({0=F97u<6e?sDD!P?+ z&i(iWT=Oeb#I`(S-s8Tb=OOb6v%_utQU}FOeKqW?{l)+2g66Y^z=ab(3hiGYxKC%* z{{qqYcj5wOg_lGcBfLI;le}8L!vFt5<=MB5!Rg?HWSvr5$cYI8$GH<)S#7F$(*@pm#ndYA9gI9JZ)|4?y9^^OA31x z%AT#-dS6HPVxW(hYOhY@hp*q9)&1sL{JFhMRoJ<;H~-2L{eM+&FKxPU;ZFI!o27rA zeBAr`dHO2NMOlGM<^NZFcyeEzKc{lPLC5tC{`=}qeKMVY-gi>A+xeeKzaI*#_rJgY z=i-rqiNObxJHI}*zq9B2jg`Uf<@puc4OXmNHc_ZuTt906c{%esJUMqVU3{>wdB)-y%(i<^ zuKvqj#Vc!5;xXSb?pVRz=oexv>kkWFIGPnE(61+Abfi(IRw4TQvf_EA>M7@#gIJg6 zwfF?&nf7td_KixI^fjrlIo?x6=##pjO|P4?n1}3wRDRn=hX*aTS+p zm(4r_A#h*2l<{D+%+bxYo>M+uod5M|^|Q9XV;dt5#ovz(-d!K3GJTJV{=JH&zwXTY z>MedQ{>RO2^{?k&dsFXy-gKY0ZECge--o{U|Nr~Ve_BlUU&(9xumA7bZ_IgC{abI| zoo%1?x}G+hzoPQji#xA!W_o@Qnl^7|ec|ir_A>TczejKSyQ#N*y=_g@@88v&PV7y` zuZgU;EnfcbQ)B+W?HL!l;{UCy4cS;dZ(e?d=e*so-dC6F|Jn8G?oaONH6KsEfBN37 zxUdk?5taFS=l7T5_ph~Vq{M#MB)+d>-fOehH`{~nv1N)x?>VK@e?7m*r&L_c&Zxg$ zo!w=3L6;-0-Fex5?lkw{61zx_BzLyW$veKhyB651eWm-!&7{g{E|#EHY4d~9s)N-v ze{Zb6z1{TFW%Z+3kG&s#Iq!FW|G(PKStqag{`&aq?cUE{Y##4^vhk%MS6TAa$O~_5 zxAOms5jmPGvgd#Gm-nkmI$wtV_uL=y=lhC(^G#W~wiWhf9hw&HzrJp=x*_Mir9WCT6Tv6+LxtdI$Lr&wXK<5>#(q7OGArF>*34bI(^SM{R(scclW+VE8h;E zvO+p;YWmuL-_OkyJ-YO@{#BV-@<+GVTF=&=@cXrTUGcwHI%MZw{S3_3G6v>+*MZ>i^uoYHAr&EPVEFadTv^^l#srak2FYeiI@enk?NP za^>x8;S+foi+(;hwM(XRsR`TJTfx!0XP>!}pjr{~#=YLQ>eq&S+jcEGCQ~kNyZ2x0 z#GWnpuJrzY6>|6T@~`6GYb~u~PamGz3L4L1W@!4(^zcGu(X?sD1v+PT1!$d|FMP1# zSfh!xagLYf)hS$0Z#q?q%{|x%DcUMUe2?BReV+C1%JqNy45sDF)u(=2_liBdOixo< zcHvY`)<;+T{q3`wAH@E%^3ExA(JK2m|NH7PpU}-YEcqwn`?XGqi!EE8x@4*O(H9xM z&6Pzd4_&*>W!G2yxW9LEcK20i!m(jcsL;FIIty!?J_vyY{r*ea(W*2UH z>N-1r+b*_#lZ$I~=da7P((wL%s_#{My}s|GnA`{0Q?=h>_0Iv?Nvzxdz5 zkA7AknL+WT02)!+_1r?6$MAIj`6*gA7_Iz#1k61TOeyd0ce|CsCAw4SE6YBWKn35W z7a=1Q>$y4ZRbMRo`#M7A>k-}S@8(6#Qc4RFEdCyHRVGftdztEkmUFfR%k%#4DR}&1 zmQUiH+tu3hw?%!J_V@FX|L^{8RSHj>b+uvf$^VbeH1Br5Z#uXCs)F{dP4Qau!rs*A zI%Ui|?Km}P#v(OtuUe&Kd&R~+h@50j6`&vQcXyu}N{>$B8zj|%vl5gj>%ByAG zU<|I?_w&L1^Tj=fV>kUQd@sK{{QvPq6?T$l#lO~XpKrJB&+3}f{QG6C%gdf$kN%hG zEPVF2__npbzs~Qjm%s7t@;Q6GD>ijizqgww{pfpk@G*<;&6biS-GH=U^XTLsQXDs&_(qLg^I9R>#@friwn6{2BXF`Ij zEY&q;*w0$?@>l3&o_Q8wkK)xro(SxI{DFD*-%`-v%dQ#^VXye=+&d&j40{s~@I|K;g+>FYH{`7ulOWUBZS zmOMOTdD)oxY<5J`f-^HyPQN$L{gHI?&Y}#}^@-CyPk1Bwetp#MyXD#T(Kfoe4gGwe zJC(u7Dz3!brmtbCLau46&eADsxgV%%TO`Kr-Pe8a31?_4Q>9q^tW%<{h7nAlR%TOs zfgo?wbj?HIjNlmx2A1`wl@lhWpEnBXfA0SB?~aL9bzIXm-`!f={K@&qtWKuNWeyX) zJC!;=f=f>uaBuG*Gq~lg-}+$UFDt`n?UdCacRV!JJ&yZN4OIN1r|r6ApWmB!txG-+ zydM4h)RSlL$i%|m)D9YPi<|S{>zj+0Wj63Jfb73sxwPZll)!^UT4(yjS3f)Yn>)zD zCsBNA=%do4w<(QA)75<+aWutG(&hjS8r~AJ`8y>wzQ)R!uZjI&c3OSG0l3v7aP?zgoEtYw#+eFy&?pz1UwsQ+WO+pSiCdPx= z<_AB&G*vpI+|V+Ach6Hdb;B*!1=^!`?cP1v|Lo(BY`jt~e$D5fdoK-YbTCLd!ZAgfjBRDkP-jwWL`{}VdheZ~r=o;Zv&Ks}Rncm{c>^(Vo zdFLPX!lj-ug*>yxKYWU@21P_;!-KsS>?&-`%N+0P2pyFB$7e2KkkH_?u;S^|a2F*( z*FfX+b1^##9=^G`dGX@K%l+nB)&44(=@S+ZV32r-rD&3-re^RmAI1AZK5P!4f%C2J zJ7yKFi#v9?IMPVf-cQ-*ammt)VJ~DR&buMIa)4=Ia(cIg;h ztlU2Tj!YB#LC`3itYz1-XnymVyEQhJht%EYanp~V9sc{vOXoScXJ#1YnBCs9sr>!D zCyyuG=l%5R#6;!a-{0TgobG?gWpnuYxB>}qs`)-gppfaw9|^^!k2i^C6)x+z&FXd~ zWrM0yX{U$vOp}XGye8lL^I-bhRiHG>!NRhhd6}m|a%R!p2tL;HAF|HR%gf7qQa^jD z88-ts=xm=0np!61t(YQz@_ELQJpsKc?hdS%Ue3M#Q9{Sgf1=_QABBU{(}O1cnEnB7 zWb(6vi|@=h2P-K3m;$XCmj-hPYi^6t^9k@S>U>;!POQJgYO=`*k*s6fAwN^HSiEEo zo0yyfmoOajL`m)IF>!Y4mN58#2`swY_B|8l>@=A6oX7HHDFT1U= zY&ZYuT9wnaEVpYdZr4g2PnIyf(Jpm#!3~*HeG6x-kOdF8*>J>hyGJJ$xZDZg^HzHJ zdS{OP){>t2ChezRmh8QCLWiTqb(u%>vG8YHf4EMFJlC1mcP_#CgF;2D+lM`S_j(?@ zF5HmE>-j`wWjX&r<-N~N*sw3ro|~$D_MWZHi8B?B*A8cTRi(Lpjgol$t!&QiJr&=t z3*U|R{x)Ogt?FMd?p?n0+vnVy;8}OeYx3?dGW^T+>GyNdFXtuA6*gBmRGmCy?YXhFq%F zlGyv?Oq@}gzUJ!bEpOG*c5__N6XVc-;HGAUv{Bc@ymj4n~Ws> z_`>&rLix+4oSojK8f1OKK-WMXR0M#=KXup3JudpQLuTs)@pFs+EInk=so|)4UYzp_ z58Lv`uO%#t_G$S)uy4F_cO$D}Or(*!jB}c0{Yp1*B4TKGU@Lxb@(%8f4ZN?PzO6`@ zI?uNA!OZ7tlxsh5{YsnkQ)tOMrV5S*Py_AtlfL86*|;hbmFigfFL||cCMB-%ic=6( zmzG`M9MWZS@CiG|)>O9L!A~cBG`4iIjW=yOD7OF1bS_X@VQBi^#B%;g#WO<#-{v(N z?n($v4_tncJTHIgn@W6he@}=SboOW@h zO^h-qd>J_6s`)kG!ke-BQ068SVRB?p;d4R0n?F_i}ryzrJAQgj5x= z=RW@UBXG$jSjTJ1$zsiQ_D8RB9qkPIDX~&%{%QWy!Y6NUWlYYS^UdM()aBe;C-;6W zJ(;q?XPr$i%gTewYfWZOVY*SO5m6H@=k`q0MFqCMzy>&2j_5i2)2Xm~HK zaP*lr;mWS9j&Ce{ygWT0v8>wYbl5{H`9@QKbG&sVm#VK?bGp#h#~q72>i10Fb6*ye z3mI76|2)@xykzmwZ+z;Gw-P5=SzS^nE;!$KYKD+{4hBHOD7dE7V_PHP?I;FyL~+KJX793opTCQvw->^i&)R^ZI8Y`uhygDOTqigo6T2V zP|k9{HaV_x+1HGjoDl0LKP%iJHPOUZp--9D)OC~3K8tz!T@Ss5JZnPGw^WTWh`?B#J;;N9dB#WRqK8UYg2mf<}d*&bAqkUTVZC zw6A{Jom6>9qf6fD)w>@qw^cZgJk@ZN2p2g!eHn*{rBi65N37B%AAyNhR*Q;XC0*i} zy#B-^ugMyPB8B#c8MGcrI0yT9%B);zT(W(#+C<4SodQNXrK;3tB!Ei!<_C-)CUMCz zfHRc7f2!PMT``YIKORLav}r!fue5mW1`Yd#O3_PBJpOQEzL%K0q$CImav(em2EBGRD5oLaKN=sJ3BX;E;PUkLQ(Tz(c)@JG5EyVlEvP1`Rx| z-#lARl5KK@)Y3&B#@>ZI@zc}-o=p1xv&*N^Xts8z`Im#jZNiryYZvp_zI!6sHk03_ zO3c3DOwEBO9w)av`ymAyhG+odpKR;hzU*Df$ zm#NCc$xHYSG9Tbsxk-3e;nH_Zt+OMp2QPi2nz-B0BigrLPA<-tU3jMG z+*@44q#k6%5XQa9b;a53kbbiy;J{Q+ab`3-W;ld9Z4R&BV*&d&fI zZFr|pk;1R>S2?at0kqJd!Sj322kk%ZWTh>VPKOXbKj68%K)k( z1t6Uca3Kv!%GaBwPd8@++pSOmavCTkZT;THR z!Gj3_?t*JX_Dv`bNYlOd;2_t|Emb9|8X{86>If_0?~h5j<3%*cEx-+ez#iP&gY4_ zdd124e?C8W^r{3>4?)e7NMUVyzJbku!G)JhOr9BEjkkr_TI^C$J`lhBDr?5psL0Q^ zj$J)(A5;7GHdE$ozvjc@1+(t+K#CD|i2qsmo30-UnEKa=C4b?(zdY|By%LwLFDOoy zW?i2Op67u?1p~|bO0Kv-@4;l|K8M_^++~ zU3UMe`_$vx*TilwJNtaSYM0OL0#nJ&;eU2~zp-+^-@m|pb%lXDT2k*NUTf07USnn& zHrwX=>ra1ohfRGE!FW`D?ayC-nQ{*+vM@?+o?f3{@%iK5+xzO2Lywl}R7|nhQ*rUv z+;+b?Rv&+#D}DduS8;(Lctn!{+$3p!pg4zn-ku-7Z-4(^VZF!mgG%!Ly&qp(VKcHY?4xvb<&xVZeidzRt(@Aj*AR2Ao+eas!7>Mh0kzVN7h^u3&02fRM4Sa798 z_WYjhps~MQ`!)uoX;;(<*R9!6UQ;;vN}-0?x&(1S8-}=BMtYF+J~!^e1@`w##cgKW zRZRNBdtGjR^h~vFcQ)s|*?xUqT+Cd}Jb^v`^YZk<%yJV{D}0-aH~kE1)%*H(?^V;? zX{Kl;?fxC_ zPv3kQC8sA32^x<-40~1_xu46bZ)OJ?L)$F2$GQCV_q}2#HVW-|@!j8M#jn&!x9+gN zkF|Xo@!?7GKAZCWpI(Hoe|n5fV@XV3*{N--qTHL(bEau>>qqT*S#k96|95j^qt~Q8 zR&x5l;2(hBtAJ^~s`{7Fau_){7P3m%=&u(pBK3$DNDsEAdnC$NO=RO~#oMit0lmE)! zr{DGD5sEEq#chn7%~;k~bIVzOIotfT|NOdh(uN6TOPHXVO=r zE?*{R8D6>l-I-sP4z#_Uow-Q!Y*gW|dzXKCx7YppH=TL8zFhSGpXa>XeNC9-bl0!g zS5kBS{A}~w-;a}W|K7|$mMmw(A;+Ncn5p3iKLg8p-=^@85SD|l?G*iI7*wCzQlfi0 z&DLEqdRN8O?X&mA?yU&g<0WWackE60=H@eR6*XNyY0KB_%X{0k{Wy!+m4zEs6L)T& zUi0(qv)=6K`(tN4Ii7uMwo2Zio=D@OCf!-VS#JI_O?R8DOpNiJrc(9C`t~;UXh{6FbAH z9SjN|nHdf`^MVF*njbJW80j&1{9$nTz|#~S6T@>5G~#gL8RMxP9)BR=ob^GW0<>g- zVM-yR!y|T3^#NJTgop~*P!%Hi!Ri!-)R=}N{YUsG`~bBcKnqvkE_nTBafZ_eP<^+l zvcX7C$R2F?bz2tw^#a0kl?4QBQa&@J#;DXmf;XCDo{pwCxDK0emU&9y#2<`8_6!1h z-YHc4J+yls#^8Wr1;c_KZU(TLbiq9x>(ndm-MhEs!D~*3?QNjZ0~7@Ud;UGV8SD3f z0aU8MlGwb%YO}z#IZAkdYG6>!f(Q=hhti-58(l*-G`Kc^N>{2}P^hr{K&$Db9Tg$E1=vrj#qI9&WFh&jXLSK5|$1s4Q?-?PGcL!O2T| zTzNr5(dnn2O>9-z{cNo|jlntxcv*Zi%UC-hTt(c@D)HvRd2ZQUHf!=(jGCKK({ z!}XI)%IA4)>JD9h^z*#y-xr*y`@UK~-v5!*G)>=6Gg3^SCRNW;Fj2OSI_B`p@lpN3 z{eSM{r6T)!d`9Qkuq zXQywl>}g94e79@0zux+jLRR8?F0R(UKFvQ=(cZZvMlw8b+t+71r!KDirtZLBlk4yM zw(+{N#97W8OV);l?>kjd*A%{O?XOeQCD{%Nr_>fce0Vkglgl~p1G8T4zk1JpTfq6O z<%=&%`ULH9&1!jIDjjku{rT&%{jWSe%sS6Ei{JC&vD4-6=l!<2eb7(hmgLjzueHne zi(Tm2a_W3s`QBI0Ir~`r!#+KJ%bsrM`DojxIV-n_{=f65bl0(})K8c8=e?V^)Oe1T z?US?3Q`POel9kUoe^|qsuP`fviQ(XDnVUA&SqB%Mu736+qt}!(r!(eAS?E#rgU%&M z2bGt)Ej;Cap(gYOw}?%AQTR%gb+3hA*vyPMkul$SwbwrD`m|6h@s)y2*VPVY+gWGK zd=P6}{_c?e1;n>1HC9m)A>8JxLV@7kNXt6?APes0gY z|Ay`0?C-zl8heAvhU$ZdO*k1GK3KV$`5*oF{>xnFe70>nawS;!FYaVrzm)0Q99I9x zZF@aG#O175_9v?Nr#Gk#|Fp^caR0ZOZ}|dy>bLzZTJ`ORlI`VJs-6eS!}X`-|Nm{t z5hu+I8u?!PfEV0^$}W~H{}axBdis;&qWaqQwR>0n`qt{4z3g>muhg=$(Le4kEH+=2 zt+oE|=iA4B{*!rJmG?F>)a zhQ;^v?6;*>DePUiaC(4!>Ctoh*M)_J-``d8=l4xPo#=y)UvN!-^W%3_sPEOQlcU9! zoRoH%xcF@K`}XANd7)vUG5LN|5Zi)Z?zqf4nr(^f+_s_j@ zfgxzp{-pc!Qg1G5)8YucGv{l4%#PUD+Rtas^>=kme`C9A-<9(^74iMObGKC8w-3(` zjrm{wx+!Jj&dmb1^{YSntFN0>Qv3IP?)&E}e77G`3dcP;kT z2F^MYW0v~!sm{NbPo7Gf=g0jkzP#sA<$g0RIpw5x=iANBb1eKlwPxe@2iG5m`to{} zuFtWF_!rm~Fk|nZ2M5m|pXIeW#N*^~Yroi)E7t8Q{rBNjVco6HY(BZ4X^RdyJ?z?V zwI$zm-<9c#-c_}C4;Gtit=3*Y_vTK8iI;qC7W}xeUzGo~-h7LyCok?TooRFVuSMC( zZ~NDWPrm)-NI&-_k!7o#GA~|t=c_Zb%RRPhak!Rt{-k_`&_ffJ?D>3I^HXzBVcq-X zKkIl@UiwY_k@+w6^|$}qRGe>YaEtwR_TZ=Q!9SPTx89up_V(w@zA48h9Py2htb3J} z>U;I<>EmYSy2Q+u1Wl`d_elOEe{pH)(Wj54m$Mm3vF7{LT-$9we@DsVZ)ZQVhlyrJ z^1ij6wTb!U4AJ(!8cV~nJDXzvPuhOpW^eAr4A0Ad7fF78cy0f>(6I1W%YS$86mGsQ z`{yn5<TC0#h=eVUBBKg_PRy|PvM&{Q&o1aT(NFX z;l~%pZeDcy{7-VxjFC$9R*f#r{dPKU`_#0Q3!{=L$le~hzs_Pd*J%Ij?^mu_12>)6X& z`DZIZv!!vfSt7^ToCElY97+Bpr+E z?`_RW3k#Xx7r)_2!P&pb@7*Le>A4-LR)5`}_c!(bG}fh$PpM6RA|`S^=6n9#i&KNU zy}LdorS&%d+*~Mj zB0q@zi>ywm|F7Isb^OV(FEnT|9)1zoyoiT(jlis-1c|E1Itqqmptt3-|}Sn zsjkV@+tz7x^Yfms$iBUmefsvi8)X%b=Ufz2^fWe`R~_*8b%;GU)4V*GFSqJREdj9}uhzWRx7o4LFy6;ZAg!kE z-?{zL%T!xg+EhjMY|KasXnt^2M*IH0+M7pyT$nKB=InF!JBkz51-{bR%pCad*zE27 zZ*Kj)ylBsf3mtD*t@Ca6?OYm>_UiMr{r@igz5RQ-pGOZzzwGyi>)rig*X;dK88!LA zT3PA1Eg!3%Ui0)S_MXs^x?H<%w(Qi8H|^673O}#eRr~nRqazm%JXkXGiAi3L&J+oA zvGjGncE7v!P;~NSrzWRI$MFxhN#0BPfxLn(_He6o%(&~>JlRur} zHr>BBNodcdwO7si-{0L_8Mn<&Wz~npe?$HC)|-}cEIG-2eeQb8@68XVet5Hed;Ch< zuZ2dS9c$Um4>lf_;g;(^?(Oe?KAZW;+b63VA25Ch;<)$i)p7BCrwse=DCpj)S^V$A zo`l2B;6yzr4=w+j)?eH(z4c^>0__#!vJyWP1L$?z>E+!@TyKf0ms0p5$Kr?yu*W zmC<^lFRo_KzdN5)PDOoq^0h1XiGDmM|NYgOrtNE=J$&guNlI()&0ns^ z-^WH|dTa@~q@JGDr_+(6v-hX(y|~ic*uDcQ6-z2+DCe!IpS^eavsb%ff)o#MRX=~R zH~aoGZ>jSEGdBLZlWcu(apxzqnDv_Tmzjn68hqvMyJPn!Oylr%rwW^DczHuv9*jD?PWw0xs7u3D9R;_FtMmC`Z&^VI6+EhZ(NO6q&J zzdLj)2dK^ z>04eJUS{*}Y)<_@RXKmMlx}=m-NTQwm$@8z5b#VcpF zhTYD;pIt(oOJ^n>IxlK^`}CA=P35mo9yRSvUTVPfTyD+&eRl2%9{0HW?(N;C7=LGn zf8w`Ur~CD5FRE0CpAgWVbEDrcRBoR5DU&>9?OR2kZ~d|nRR1`+{%n(by1^OKV?7Hh z+uzUouhV&_zpeb*{Akxz|3Q}S{gu0K&BnaqU*}FqOLMF6vAh?QELgg5(&VM_C2!8{ ze0oyltnhK0;PRY8k>v|_b}cH2e)^R+xdk-h`I=SVXz_uC&08m#twgpTBsacCfl4uafEb9{Fj; z2N$#MsoU`GPWs81<+UGpR4>kYe829?!kOn!tq=Kc^IOs0pVFwpB-qkk^BQHLQeZB6^ubErse)&3k z*XDQEmN{)Kb+@QK`1$G5wKm}&Z?BFD@<};fQ}QY8r?%9t^-CZ8%)Y)?@wI)BfdoM;KuVQh=n`O~gZ>wqQa9w!fZ#k*tx!0dHFZ%zjyJsHl z{asW%&thw?-#6*qdhe@3otI~(zu)c1a^y)SPov(>igWGS<~etZzr;M<+r9d7$HRgz z+;!{gD{9X#pZxeqj`zXc*@d$UCfQksZ~t$)sowhF>U&n6dD|?47KeX5?Q&_wjr?2Z zR%O5beAHKc<(xfxA05)lKB(+3mi8yCuuL`5Te+-a!J{Ya8)f3l4sB99sQgIff|}_0 z%KEEqYpeU`uC6L5^=0cn#!>lvh2t^{zF!ZnPW3nb&h|XLwsL1t^~_U^5ANPF2}_xm zn0kocTu)l=)CK2zRzbh7r*%s|p1k&X7XMk*cm>d4Xw*S%Jb9r zqvLBLZFG_C;Ot-7Pq*eDo1kU>bjR1{ueJQ&|9N%z`trWhvv&L{@tyqOs(h_=%e_4h z43+IIN}nG|vc0_WLEuX5^Y<-x7az9r-uKVo{*1LjyZ#)tpR+5re*L2#;=Q(30w}v~9?Pa@%iY;un2@>cP{sC5i|*MMR-fn5ox8IB`-!ig zByY9-5?iKJdT!VK_1EsMxBh)t$M$^OhZR#o#oxu>NG_dSx4G?1wVN^5J>KN0uE`Vs zh8>-@=$MyB+_CH73Keq=J{C{1v#b3(J!q*x`QMp$H*Z;Up|V}?uSuMq{@tp-{XY-3 zU2!_9V-pcr{qe!Er`%~iC(hOu-|qc9fBDQ+8#H3?Et2;Oy|+KU@XhIuR%wqFw5!ur zoMn>y{c(RE>-%Mjr6xbG-pZcJc5pHK+24ELow-!exAei=4dOPJE*aGyzA9}$bydqs z?ek%8=dDy-o~2n4a>n|1{`FY9EiWmm1^+qZG?F^!5hJ5v8&lb>Wo=X~}TUd$|0d&5P4Jdc*akSo$Tu{#$7+{ypOE^Viqvj1(Ij_dWDKH!0@gu5?E8 z+N(Qn-(D_}eG$|}Q*W9czyV%^#AjMzzF&Wm>B{g&>glig^m`JdieoNqZZ~>eUK z$PYDF*G~zL-MmV1i=d6$i9gEU_3G?q6&W6$r&Ij$qV?6=r$kQtpKx}6#=*zEakVf1 zT`YH+<<=1@_<3cv--nEU#%0n{ab0ih=LR1%es?qAj%ogx9+jz2`&jyqsq`Mndta}t znEv$S{&4ec?OTLwK0D~MuJ*s5`NsbQM`i8*tG1gDKc4=l^zU-cqS-h9vs_$1J^YUS zE`^>%?TWU#x^lfWMJA6lSk`CvEjsD_`_H4Vy_40~Sni$wW$Nct_kG`=w|-r^^tJxH z2${@`nVM&!%YXjje=OQ-?7XjV!?}>=>sQVNPy6=pedzXj&Cso}A3Sc|kE<-+?CO_N zVNvn_QkM0>&r2WK+Y~0hug=f4D9?+XXPCZGz-HmYXSc#u<*aDrsrmfDcJYIYC7Zur zjf@oJ^@s(14v%%YO2O1z$DZZX=GDsMCG-`(Wzt52n~2KUy^`4i;c zzNvO*onV#Z=8c(>E1y|^abw{9DZlBbxK2gNiq8CXc6&DH#h*0b<($3g%a6Is&vMDV zTxF8}f9@{k{MVYFi@TvwXs_UBCe6i(+KYUBPsKdwxrB4tj`&fn|a z{K~rga{n~d0F&s0$t#_iq}7iIKV84OCOdoOr4r^z?t0hx*WNF9bmsc9hbc8Li)#1O zAC{YO@H5}!ypGN`>By)pOBW@1Z`|T&`jxxy-fFG+vS;#i>Q@H^J4XoYS!eCrq)`3# z>E``!Ep|QUP2MZ^@Nab?oI&;bxx4Fix(rLxQ!~BI<17DMnfPGhyT!(3lNU~1{r^|| z9L?h!1#BcedqZ!l&1CVPu;3&vQ7>n<9DGeD3ozdrQCnkDIwT=f|!ajgz;>?5+Rx*yZwDwu8+NECu)cJD3R` zd&C@+Wb8qc`eIVZao!zcbJM%*?qSkCM|8~`8N9->N{_JbQ%X(zP%@mK5zo$O`_anFZr+j+;9h-eBC$~PB zsIDVed@A3*Hsb5~gR#~AG5hx9Up-~ZH#=ii$lL3$ubO|8{(bQ#m)z7(FK4cLz5JwX zXx)>Vt7n_LADu}Jj=WeNE^n(On=HLGz_c_y_3KjM-*tC4zQ3}y%UD`1%UA2Qd1ds| z$*+vr`QHA#@_})u;pg(ZH5Ko#%{*+q{eRh$KWk^V-|uaEQ2Mm;!;xh3nChzkKNfLZ zE;gw<_Ud#0{5kPcZ%r^rsm#{5*;W7eNWS&=`9Hp22w%Nz_N)w}6ASD@x1Zqu{B3Ug zzqKo@HYzz^;`24({qB9_^;2_CyMkvA@~iviTK;|AC0dEGjgHQHVp$c z#jtFRotIo03pqbJCawNu(q>?hd`SCp_vF7PJ6>&?u%tyI_HsokPohKCNA1mN(|Ucc zaq{p7%-l3##}NtM>vv|gz7~%+D7`i(GMH;}Nv|otPGrTgADPDKetI&pDn~-1PCUE4 zyT|+IOJO0WCC`=|z3ifXv|W?usqQo-9XrL4w0GZ5PCNd@f3D?b9dkEN&(Hh!2L5#J z+?dt<-2a}?EfWp_f8og!R)lYoTCVg!Bl(ls`B}!*Sr=a<1RlO;ajIiSi-*16rRTiH_x+ma{8HBVRJ+kH@|s# zDp0*=woPr3-;N_C-j_5=|3nncJ~uCDf`~%Si-^;~?y4#-8dCN~OD`Q)e{ptxpDurI zwuP!o`s^2TVs;(5kr4SfU}j8dN>WWrd~kN9RQ&W9lhR|_tc7(ldOIT@HLJFDpPSOM ze7etU%j6=*q6rNbZ^Rg@C>n;P%jI?`@^$(4T$SoMVPvha^6)ExW7P{aD=$>;x-uy| zeV>t{Zp4WT=k7%pr+Ka^lo9XKQZl^ws7_`3I@fQG;_OF`xv!F*)qiQnttE#tjpHQ6 z*DqqZHKV1ap!kuB@k7?-z4Ps|k1hG5qT7G5;IxX{>a#B=EAsaFUs*#%ar~ z3Xy&Lzt&l-Dp-A=-Aiz8xY^}``OBsDDX(Vqc6D6&c-gtC+-Fw`S1Jlkd+O~Jn-dhX zp{LP=|KMi9Jq4g4{XO3V_Dt>DbxlD)-%;}W&F1OfZrWdMf8JVhF-g+=>E?Rv^7B_7 zc5({Ur}OPfjGGvJzkjlVt-?p}x)spM1&%3&x3~6qU!Gd~>E)T8g8G>OD*Pv7H#~mz zclGRJrF+fVc^YF>KYIWF5O8$o)tO973|0P}6aDj~a<$m>BdDoeIMI@9<6Y4*+758A4aAJ1F2 zJGijwvyQElkJ88TT@Q|)`S5t89Ui$W?DBo|{#es=UQkB-*IOYnHVsQAdtNFpidOlelTU*=pXD7^sEL4Hd4_ZZh zII%oy@#BfxC!^7)0Eu*)m*bh(>$;J!Bm^cvkNU`exI`1Bm`>7 z@WUq*uY1nU*tX%+y*?cjmOjy_>ZYr;I(>+mz9?#X*Sz2U<%e0{+K68-Q1jcj+HWq??T2-s&6Nxc z`nw-UdZmd;wryN+#>Cw?a)IG&oy}d_L^j=a|FFj1$y%iCmRd#IcAM>!SXkEAvYwy7 zG+W63Hg{02@SbDU!k{UP_=Co3(#2N!?JXD04jS)yYH2gK@?2B8$MbV#Nv9;Ee=>iP zVLkuweZy6+)AMy8t7ziVg>1U_Y;%>Kz1bo7<+V@8@9sF}_Frc+`)-*lD&evb-08tP zo}~ORn{&_jc{CsE`cT$Q-*h5&pZFc0bufGRqXkcUjg3wodKEo$$?XZRbl#mco8#cl z5yyV#lWffLi(7^EpDo_Ei_@q$`N1V0lo;^QH+V4jkc0Tq^ ze9!Zu`JnSsKuK)wgUA={lb^o}TiTe$y8iDx!|fY=?#y$2yKRcX?cHyf4pz_Wdh|o9 ze8L0MyR$)qAG@zHTI~#yRjD{vzr}j*gQ;hiTU)g}6jt?J1S&JY>3gk~MbwrFIVWOx zU%!=#h+4PhRFO^;zg7OGOFv$}UlH2>Smuga{icj>X*0K4SZL1wND|dRd_C zd%q@VQfPC;I#aQORjuoqbuSyKnDOy4bDr*vcaMx%^}~v8=+vxpytj zNmX{e*H-;xWt<%%?@`mrsJikpdWk+*<+CPn@N6RmL z_-k^vHn-yC# zC*ZSO&;82F({eMFejKX*DI2?ENx&<^svv<7E6WZ|9(`@p&*(cj%Yz`S~ZMkICz0vcD-@eM# zQooZ>{|T?}NpK8K?hTt+=x+|L``;)o%l( zPO0`jPtaL4tAEj)6g%_N{mG~H=ufbK&3d~gHKsj1 z`?ulR{C1<+mli(OeY-z5onL1T*St{EisoL6T}OMCC%&C_?fBMLQ?CTH6_;e+Q1zJo zCGD%{+&Rmyu1(xn%>F#z&NKYDQN1GHn%nQbZP$#s^?Lr%^G#3RH-BzxU1#6tx-?_v z+4*bNv%OI`xOueyAdDHVp7q-1iDSRKHUVVFUM4id#&bGu9-=Z8y}{l90yMFmpRet$RRj^lp!{h8iI<)x64 zVQ%~fnQ4u0SkC`^zxC>3cX9jI=e&~7v7Vo^-SVr(@%C)1;&A_uZ=)yQdbjrD%oUfD z=4&4;uFUBEbM>FHg#~Z7{_%GQcWw^L6?^^m^xSi-=Z|j9xG~$Ec)QB-cx+;kz7*_Er#o&LCO z>n~l~X_NJj6h@Wa(7Et!`N`1gMzQS9v$u1DoMu;fmvua_T(3}iW!k}sY`3%Gx>?UZ zT^Jh|!@fN6YtNZS?iG{Pf1R%!YxBDBPxLD##@n3p4xgQMzU|FwtCRP7@(b@h+5K{N z(IvHQso!^Zd%rnhIk#2`T3S8NUSzq2wdwi~iwo;~a@Nc1Wqpu}tGXs-^LpFFZEFK$ z%-Rf}*O;ll(MT_?{d6t)*p`S7F><%8mTx&b`|ZA7kT7H+9wCsC#fG3tKPhBaoJlQ-G3H*x2(!^ z4{r8%)hl9D*Gs&6Z{g9V=btW|n=gCgzVbJIBcJ+7U!U~$uD|u>_^!M>`NxRT4qw#9O;X}v$u#quTZk2@^qKZxCak~Q-|FTdKF zS+#cM2aApR_#mZ0TGMld`5SI7+v|3*By>%V+UbpXyOX}Utq#-H6|Xjdi373 zz*B`)FT~6*Zn@60`|a%atG@U&U0ug`i^;Z`^Sfwa9y60BCl@Es1D(nG zXBSS3h;gsh&AfR0C12C?gayme#cY=AvdQvlq<-{%^yPwX-lCTeBxk-%-~4isbnQtc zUJHo}Cjx)RsrxRAR<6)J+t#Cgb3#V0{oLk*hiBz3x~X=s*sx|rvtrpAe)faKS{1I~ zDkt~!vs`2E({?X(HJ9J|7Z=_8G~txGjQvC7Ys+s=V~SlhW$~Jebt@cJA1X`^ym2t{ z=GketecqR~x5}koon*E=D_o-J-p9X^Y>^vlw!BHm*!t8=Iod)#_Q1~{KlHc~&+=_b z+S}+lzwUJ*w^h)GS^j_e&R_d^e2aX_(T}~!#=ClolQ#;hzkYJ@mSdPs+@`(e^A{d? zo;5*Ky+19dy~6PRY`s&*_4-pkmr8o=om}&Ij?CS(3dPlhe9!y2W~VG|_3Z0f*vA%- zd+_+nmZtAL`~O^@+kNJE+4trA#f5YGz4CweTzmMXVOinlnSJf%1qP4yEPmB-thm_1x9M-f9kW)m z)vvQn!yQ3|LfdnRpZ%HGL0)4jvqDQ?8|3t|DMLp zUE`eFR+3-&IBWI!Jk=HJ*k>2k=(O`bf1_2Sqg5H>b2#Duo|6aHux)GB+WO*gN$o-D zEMwV@6{)@^xmFpGw!RyFs;zB%P;M&RdE%!D=ec#Wy49X;lfUp!a?#r*tlusl-qQcT z*4r#4STXau+RcYKVtnc+GIu|?`OnX)!s~?vqr- zzOn_vKIwmS?jD{sd-=lK7dwUj7tedYqLT z&2&G;O)|Q9LglvGs#uG?r7NEY$WH!oax(YqX?3wTo=@a;{9v{HfoAaM*wYbladCcr zeQt|Ce)O_dTC~h^&2#qGyE@ONStzO0U5}sA{qH=( zO#znmb6NCP@5~hXB<1Pp`LMtOoXHp*J}^Mm1bVWrUvjj`UBWoc$HnDHhoCZeX9{Aq zVQlmVpOn;8O_8o`TW++VbrrY{8c&=u5k&#@jhfbe9 zy?LtxX!9#0NXFrVRm2C6*=Ig{`0(&>d-XP6P#@j~B*VZF=gt-9<;B&0_+t(~vh!t? zD=aN7v%db{Uj8iKH|Dqef9ZYStLH!eeP`+QYw}fV{i7!_IF@lTajno{Vin=|y{M@} zJLCYDo<_H~puqO1>8ljFH9D^D`qJbbsrQbXW7^UTSMTWj_up(!rp)wFo9xNq{orra zxy6T5j86abQF}i1^GxGO6Q86wAvyY3{D(h({-m9mVR&{4vS*GtesE((@`4--KLcnr zHv+u%xXa?4HK`10jT&oGvQ%n3|JwZBS) z`+8X{6u$aoNjo|QFf=tSU|>n@Vn6zZwO`4|=+e1!d`;{JT$*Eg(rOGoCv!7)WuAKV zSElufSyR)31qvD*TwF~?N1Kg2S^AX>3_cv@w{LmCXi%sy-!x{;@i)8t!KMZXh_JA- zI?jCLI5VWlJvC?7&YctAd4uCH=DVN>3#+4JfPjby3u{yQy(V`-K|w{aZg55}xa$tq z>*yE|ARxjqZzgA4PR^R?)2F*Aef;)K?edfdkmU=xh6fK%OMu-6a;D_>1uQHq|E?DpZQitEdvJZ0|7)$= z+nySR9gT2M5ScjhD=+Wjkku~tBA);L@yoC*CnKZdX~D8h4|F3pr5tQxP5E%yn9BL$$H8{AMnieQ%Xgrpfa(#Wgv|`1Q<=s`)wY9dfAK2LA z3-a}JY!)rq^5yC2=_wB{Z89>lo!0dH$rGQjf9vc2o<0?IrlRw!LGs4hDa} zC3t-E#*KxgrK-!+g*yNI`O|TCVrF{!^M1Qu9eb>bpMh5APLBJa(-P*SnA>+DNJV5; z(pe|(+c$;6!`U}>BuiG?XHGa0RJ<(r!mqoPoy8ZOjMi}Ip1i(r>QqzRS!D+$tG6Ak zUeIdt%2h!qvU}~(E+wHwH?0KiG@TlkZVlj=KI6c2{e?Hmw%wNLT)cH-qEN@&m>AWv znEOVP6*c~win+2UBnZs(i{4t*H`{vVjfwNmKff@~rqW4FP49Tn+r^p{S59f3yLR>E z+Vro!gC0GU^$=a}=z|-~IRXh3l`M_1qL|?X&a#qsqax|B=9^wGS_@e)w=<`1-nE zU*GE6E}v$#Nk8-D6WK@4l`j0sykwd6eQJ7sour&p)#uZ<7yb^NuO||$-QSvUtS3ARP6145SXoSXxsk-j7E-rS3iCFyDHA^)8z#LDJ!GmOcx66xpU`iijrz7 zYvd%Kn4MLjsull#p07V~WacWZs(&goGv7b3m=vX2+w*1dkC)5mm%YCyEG&Jxs)w)7 zPr!!v#AAV`=H}4)OXA9(3;E?3f?YmbtGipR+pSk|_HMenO2xH<^Z)<7`gro{=eJMn zpTufbtSsD=%NxPWa^B+L?pxKCu}WKnyp#Cte|_{iCc|+rf-5e#{;^becBJ~Mtq~n^ zdp`1aJzX?cS9bfY>RD!$9LLhS%L$}tU+`h&YSpE(&ENZ$R-B#mf0z2Kr=rs( za?bDCVDZZ3``ksXJqov4>gv*8WFD2umyY~D>40Lz>!_U6Il-ZF~NGq4dR{%vLr=#Hg%GS+sKHO^budkyApZFUXp^s?$9Gp2YuH zv*W%}lAbG-PL5VFFIXPu9$u)Hsx}j^tx~H(~nM3t2lJiyQnXA*VTL1V&Z3QI}r8p z@{Z`3#IyHr-C8&Q-n`wrKdpYlz!;On(zN|nr14)1jn4&-d$)ay?q$FH_wAGK(^P8W zYEwS%dYis3{+8_Yh>+5hw>GPeN6)H%ma%KQgM#P1@LGfPzvnia-^vTgkA7odZM1*a z&b41Z9h@4c^t1hh_R=Rg!QS4*&Yq8CSXx(iOn+1VWra;iRkT^NmkhN8?T&eV)HHaExE}H>ZVxkJngsJxqs_o{wDSVA)+??kGSto z)s224JZH*m*{2E{`hTz5{NBqk$m7E$TXVK|Z@4yWiio&!vG)7yRfn#KW-qdx8h>@t z7w_in+bg(MN>6T4(w?Zg^LYOsOYL7b9^bCCoASVOf5nZc7yc~$Djjvoud|ChSJquC z-l<`ypkTE8+rQb@w{M>yHnsN2!r$lDi5+ESQG1gmw`0Hg1uk6`y@S>FY7!nFTRT5| zt4-!T-SVQT4=j(#)?TU3u8+z{2uS*Oz1BYFoWgdCTkf?VH~bI#+4bPSh92Sje+^3Z zTSRailx}>G%kd#rMBu^u{TEzyHgMkl|KND_ar>!kEJt$Iy_U(iWfZTm!GGP`x;sJt zQ?G5B^5a43@?E#fDuU-rAypKb{jvQ*kN;_+|pjNBJjhh+U>vQ$#id5 z{#z7pyK`sjtLd{vOTT<9w?5(Ov*}$>{QJ4T{``0_VQRZo-2MB)39t86{Ji$-+%)Ic z)74!o&N&6_I5lU@>t^5iJGJu;3r~E{5yY~oE`NLI^ZB-G?nyk8p7ZVL-Nx6EpZ6~D zE8}u<`D~i})!y7C=XF&|3}^1B`Z~*#rT@$0mG^Gkz5DptJHw)byNjN3`R`VaZh3Gr zVo!x(W@ezVr~KSkayD%bCjNYJkU1fX``#X3bGF;3l2oT%sW~~T`~H26Dd*pp+vDQm^aFkF%l!NLJibo$-Hn&ZPek@uMqdB5KDQt^ zH`_t2!f*Af-+AJCkp}e#o&4WV>3aUX>}S^nr$;;3*S~*gZfg2m|6auf^9ywvdE25s zc$j{_e`fCT7pbbfm;cS4{oHEVm2agYTC1+;y?bKJaj%0V|HakM=guwnx1Mji*1vqK zzs=>laWB@t5G?gs_jdR0%i$^0W2}FCap>4{`=Hvi*bi*c+bV-PPc5&WC(|?G>sGF2 zFFAXADa~#1an=`V)qE#jZCg+v@;o(kuC6QNk=G|?-o0C@GUv`*RW6OX54EmMR{Rrw zl;yim?AMwfw!>im-tA^LBQGj^yL*L+J^Ijd@vwiEA5dHA` zayosM|NcCD-aSQB`*-A$%Ei0&4p!?;w=ydJwu;;KlL-rl-21{0;jt2XwjZA!l)Z54 z)Dwm)SIy>_SNdc6U1!@<`I1Fv^Y6SksZ}wp@#y#J*Fmx`S8t6fTJZVzPv9Gu}PWZL<4 z;_r_VP43So{Cx7TLcoS$S;K?K_Gz{?VH-m%Pc6N?Y1O)GHTF;S7dyTF89ANJbMf)s zB`SCCyz%{i^h#6chZFhF)2nu6UsgHwKDqFX=gtS6hxu*yY@Qy(@%&10t*mR^D><7> z@69Vzn_nFiu6TB*qO^MTp8GG`ugP-jUUV`F_>l5;`SgA-rj{*oHj%zs`wH)x#k}6T z>)_SYyGIXRd;59iOubCrzx>~vKKQ6seCu4&o|xaE)OyBp?Y{M?v$s#stGG7tc$M6A z)~+dU@9wr?>5rOy!t~{l$L}t8ZsX|cdo=NHZv17j`s+JC+w6T-RdHN)$L->>rISNn z{9C?Pw3E-|Y=*>--+uAlp?&uc$-e!|yIM0>xP$52z4|(>YuD61op{`5>-fog{^?b1 z|F+d|-0L{~X3MXG`(}xRb6-6WC2G4#ZqH9^kLz)_a?S?sj$rXmkPIpM@0;DYKTAb) zp~~Bu`tKW0L^iEduBb{ZS-kR$Z;o-d&z-&1(`R{#1*;Zp;)?V0)0-KwwTjpIgOrq> z!MlUXhdE|Hk+X@sb2Mr1<24i1pZS&^yqxyy%S%N?MU~jeOOk}9E3ArB1Z)`8c0b^3vAdnm%fEI0x$_ZoCzfyed;H)r)8dvT=Mzt_JUly0<=A@L8%7uA z82fviS^xd)-N}|GH-60KTCHtf#aYTR??LkP)Z_Ad<#JZv`WyLc7jGrIe(An_+h;#< zoEY}5Tm1ezPw%Lmo4378obJ}OEFtgMQhByn-`0Ca?fZE8^x5y$Pn*|RsMcKl`sv=v zJ5O3#uCk_|ds4Bu^++v$-07E-_NKOL?W;BW^T|tWW8qcXif@;i`QvTZp7r*Pn)WyK z^n=Oz$sWe#WksRqPk&3E>FN3Uw0`aFe+;%2YBDLUJ*u}qKKps}Znn^5qi?bAD{HK7 zdd?GGA+)DIHq3m&dFPL>j!ap!dHb$kPkkfu4i?9kKUv+hm2;!!PjTz_Q*<}F1>BHd z`)u;{Ux%mq-@RHc|5K!NkILawU3<)He?RV){%x+~?{n5VM#B2E-lqqP&11j1W^#JI z_TG16%ZZ>(tLhR~{C#okNz0TyuiTl<%XK!XJg!`mSz}p|`~B3CEwSmdv>%Why&2W&dz}J@f9(?CbeA>V6bm@6TP5lp4?S_pk47W1+{B z>~z;!PVurcW%_UXoqfHi%JQ`lPWfkVx4p@#{QB(S&qu!5*V9Dj?fQFoHhX*Wiie-} zn%%D}++A~b)fLrqlb?RtnjgPYu<3Zk0?WI*SLB($x}SP_a_IU=mMIKAZ4Ux9=W2yC zxi3wc)VXe*-ljkH|9|>lwc_sX@(J4OJze+z&*$?a`}K^BvO=1Z)-{R=kJUx`3Z#!z8(6Rd^ht8Uz0dvMd4Ap={-+?%)LifX>d(Ae z+0At0>!YTbbO)OBYKzHv{#-g+*|b{j2zL;d|D4?pelNcyxL2CZ3V!nJk}T)CQ><^A zj7~m(c;{lS=gIkRb-m`fv*??xH!%;Y%b!$nao676;V0gI5<26prExYU$KOt=_4un- z=fkJvMi|`|a=iGl`)bqF-KWZq?B>iooIim}=k~k@deW}OX75k$;(o5}Wo$Pw*8haY ztjziIt?mbuuQ4cHsMCJ4sO-iu=Bwg*b8Kf#f3PwjqtW?6oAZ-Hr6&2VS$;3irF`n{ zEKbS0c}?Qg#B#qUO4G#Er`!I1aK?FSy8jcl+lm^$x~ICQguPr@EG~6^uHO0BSI-rK zdKS%`QU50`Yt*xF1g^6!tUz7zf6;PUthlL8TdDHOY!rQlhr%-1lCto zRnE7noptA*gqWP8?zA~`oYYRZclqR>I%!$)LExj6k-C-Iv@FK$&$>^%p z=FR4E)^&4io*Ymq^`7_0z`)=@RmnraOBeaLSoj$dzBQS*o_Zo`bGZA&si>JpQ#LR8 zbMX7)Zxwkgtn)=gSW;75pUjJ?dKZ-ZwlPFsuqo+U>yxISyA5l;eEZht8vq)z8Huv?*cR#)*J^tEvZ~EM=*)}bpfjIDp+~fE?d-i&=FFy6fLoDM|SI8=BLGWy2 zQ+tzs@?F;_Pb6hTrwhoMoR4dO4d68`aQJZH2OC3EyM8ikG>(PUvGIZ92L=WKn;OZ* z3gCf0(C8F+U^BS0{C;iuF?Qp^y>hc(+pWw6jg3LZ@KU?jS)14yBwSBC);M`ILrS97 z!*=p5w*Uc=h6M^544^?k(4r&;Flc}cOu|QPL1z!a$3Ve$ffa(L2_Ot4R@3p5zu)hd zmy(iN-5H|w_rqa+_~2)PUz2&!anOPyu&x6xf_nt5z$3+AzS@Kby+=U9MqnO;!A6$z z8Az&Ig!jxePQP{YrsOM7;{c*)MnseQ8$BBv8zZAj2M-=pKvK^lWOM4B#&l)jC;n}Z zUESTgU6f**%y}XD7#dz0#C>>CCN3(fD!?J}{juQg&0DrS@wn*n7CORw;0L$d>brpf zeaCal;e)+11e%T~mTMgs=4!p8Ey;Ya`u}?4fB?6}E6#2F@uT8c$(9?$ML57i=?6l#Sue7=diAQOr{}X5 z6?<6DKPfw|Tk-LiLFWU(>8J1Qm{>8lfBpK&lQ*wlFK@W_&6^wxkZmA$CS*Ao89#pX zXw_7m*j-n4#P|kFo?XFlFXP5s$EM|fSAqIRcLjI<{;;?|wD?3x;~sf_re??}JkO$K z%h;wesI@=%`;fo>$KUt$|MwSlY?jciV6!}TgY%xo&AToFHmlzE8BTt6{PIV!+XtrJ zjEwxU$*ADkjH=e^lCmwwBXZ9vt7WH7=zVm4=fzWt{dl)r{k-nQ&NA3w*M6x$@qyy1wg5bWZNt(^Gox zwe`49icG)2cWRpXr+^dDE6XP}8)k_f+voo~!d&y;l}Y0CNVY0g*6#b$248|c8#AQ691xcg{K zlX+E{xgbmbo$}{T-kh27^2w7u`S8~S*g^`{3P;+YpS`dKU7+;{zI z=DIe!{^$=^^f#J+RPT6T$Zvo73tP%3<|Xkh6@R2$qeG(1c7>kRtC*8MaprAV8UBWk zqBcq8mv>Zua8U{@DKSYc7ZVd(cK46Vi-XF4OV7yJ*#H0Yr-ozRnH?g>S3K5L7PBeR z*>cX|-?PkVnzIzsG%NN*KUsWP>ZyK(@}0&&VVlEQ9?!~ylFJiqSo@b|p56QGqp;0C z+m*ZcJj?>amTmmM=|F0lltx9>s>B%9d>ymASGgbJ@6QNd%XjdxRri_u?;cbfh*9XA z{{F*(7wxJ&dmjXrnfvB&ia4#cFX@#BEDw<`j8E>I6D{Aeu2Rq%3&-kiUG&X8WcCXxS@s!p7-b?l7U(uiacd=hu zc5+FQ=Fze(X+0hvzHIGGvG2^@8hSM{Agea%iOb1rvo)iArp9?x$Lu-!s?6uBvDb zTX3__&#-^#KGW^1H>R1LPvh-jg2d z6WM#~_$ucQJI*Oh^GZCEuoV4m@#%-!w8nl)?IJZsUJFk?oB z*!Kr3-{eWncMMzRKi^L3s@1+G_ZU5M^XVy>LdTW=R`~gytNYj8aW^$B?QiKZ_C3`f zOg>9IHGX<%*$35Bbe9B_K|B3+ z?c5kKvnX^|)su{T^}J6+YNpQY#IwRzOId2p^GrJ*lRYni7>)X}ruPfJQ8_rGd@jH0AR%~MkSF-9Hp}Z5837brE8O}_!|Nry6 z%e_gHCr{p@a5(MXyYl^u-6DQImj53S80aWA??IFMc5B=34|=s8Yg8P0S5#EYFJs}b z$z*YI(uoyXPxe{g{4q1};jg!T!LA{H{j`)XomdnSF=3Z_Z)t|uF5ipQ8@E_*74cs6 zSv~Xj;cHjb!u5Z-NtR!`_|5C{Ua4~@XLYUAta$Y|B%JT@ics6$qT5q)V}nZ+E4FTt zv;KOi$NnaZ|JCEm-@Tk%{@|s@Pm>)FQydn1Z?&l9m=ac{+<9~5k+hb}C0`$J*t;gL zFPksv;;MH)FG?si&wp_7=wXw2$M;|MXuquSeR`?d=Y$)#a-*)EzxO0P)BV*8>qi+m zTGtM{e=y0vmu!~iu3kT_I@XHMWAP$M)8sV|GQas5?OI=X!zlaj#&apRd48YU6wdeG zxcTGE%RW7+VG^%f53Oi0sybZ39$vdDE7o?0^@2$8amehGDq)ESCM=j$8Scg<7i}E2`j@Xth0OLf zGnYSjxtrbJRxvbex?$7uDMEcB;d`5w|BSo#;Ih>BKUS}ASl9E~7+;xhxwk33YlYXA zOR|;h)1PkV=)2$iMc2*P*G}|&o!Cn&hGVRrf0ut-KKr}nfsSbxC$#vq-BolIp5e+b zCz;;j-=$WmcF*PA!OPorYpPeMZLroAoyh64AnHtt=B!iUnVPd={KX9dyVPpcYF~f3 znzbzBRoxlpyEjdY3{qG37Miy{Fnq=J{edBS%BPXy4S@g>J_U>i%X_lyfsy(dSSY8TU1NPshcU+_6kN_ zj;~%3aBXJPwo_}kw=tWmxK4KdFyni|CF5&1%uf4UyyA6fX{dN^xzFrHE4Mp`9%nRs zKRfxIO#H#cxsAHXA>mJM`o;B@gr^E@P2ZH$rY$|W?nmmG$rG>7bbS5!k zRf|vGPK`+wLClPtInfUBG+Pkrx`cDw_NZ(#^BP&gz^JA3fr#= zN(S1#@e@yJ?EE8R6Smu!|Df@&o$qhG{d8l8MN;{bIBV_f>}ze-m8X6(s!j|H+~aof z${DjMmJuaA$0F2vYFyv;xNAjEn&p3b&J(GWRADpb;A83+ke#MY2^rA#jtJ(5xJ0g}gY|-&`ySD6G z8Sjgy4`$meo%-i^#r|h2(4|71?E&Gr7R zVL!gAuj~!|_JHNBHSgB6O(pI|eRH24cxmppY47@}Yv=pAI|p1Z{&2(0`}Vpd3&*+7 z`Tp({T=hWWer~#h(t^I_*D}2}etVlN!yj=uX7RVb%g#JWU8}G;TrGD(&l#g>6OD~- zww=#>`tEa@edW)&k~;qNPxi%!y?)>>5nt!8lGwlYS>3BQ4cGQcoL;$l`RgffbuO(F zImX&qS({{STrroq&2IJN>5mV-V=&lxQ6j5c_=}uP@WETn)8|Y|I(xI+-EyAa?#uTV zrl*~MBll7GvrnMf`{EC33OgRm;$1U0?D2n|9N{FjWE+iH2Zd|Gced?j44z?V%brlq z&?6~RW}ch$?LqIn2Oo8c@7&=LR7^{HvP8hTC=NLAPaD@{e#WnR>^fl7*iYa<6k|T;r|C`D=_B{dgD-glq&g)j=IcQ1jVG zX!q=*?++F(aQIMA$O00Xv8K#Cx9B^p4|U)QNIgh`fq}tCXm>C-xWx`yq2hVqKeL^Q V@Y)lHSiy@?JYD@<);T3K0RU|5lVbn? literal 46266 zcmeAS@N?(olHy`uVBq!ia0y~yVBXEZz;uIyiGhK^=zY;c28Jz-o-U3d6}R5(t=tn+ zTKoV0{p+hVHmL|~YIwt$$mt!Cr|11`wsano%cg_}MarDwOiH4cSthuy2vF$cSmeOc zsG>Kcfn)6zmjK69(VV+WyRPoKvi0ruy8ka0zg@il`ke1)W}c6HerD#=bDwJL=k?D% zIdk*bnU#Cbzur90es=w@MQX| z`&k?Xz~~5T-%JILCJ-t(0~Qfr3G7a;d%-7T3{~=A1}9jagXy>rM3aC;8bqWi!|?c@ z#<%hRH<#a=#;T_Q(Q&b~&vJL{F+*X9d9lxDtgrkr^G%r~RR6`f8#PU5)u`?NefRyM z(_0O`&kQLz^Z5S9d$H5*RXm@3|Ifws{}O86w*R;JzN|g9?`!z_txtaM|M9o4zT$6( z>3ol(Gxas4)jykTzgE5ax#!=M;==9we;r>le{n&NR+ztCPU~my8#k;=dY?OhoqO?I zpXKrBUJlF0zu)b*Pnnf0e(kK`|H|`1A19u#O}%ZtZ~N=rdG)WmZrgupoxbna-}(M^ z_iL^9{|&Z$8GG*jkN>*+bFZwjzF%?gSj6!+H=l0e)s49P=)aen@wM7tW@hcpYt6Wp zM_8SakFWjubxHB+C(z(3IHUY_#^QfF+;-2oX_$Y1=UZ+4_jSLP*6;gqEc1G9?N9an zv+7@`@Bg%Ser>|<>;KMw`kJ}dD8@J{F6G~*Mag}4_b>_;D?tOgqpbAII`4IN^}?Ue z_&&pO#r5OyHJ7#5|Nr$Rdi(m{SHkN)oW8&R%j5XF8~$cL*87*SCwbb;9*em13HyG9 z)Y$h<_+6q?yfeRDm*emKn;X9Lm5UsoJH1bGm#k^Z!R`md}LS)?ImR{w?-Xy0=}$olyST*USGK{lAtg`Fh6ck~9An?DB1V z*xVP$oAaXl7l-tn2zHs|*@xL|zm@(9Y+`NQkqwRP%wv0(%6#_tc1ps${%QLDPnV|0 z{e9SSIlOmn`N6p2ustiwU%s-oS3X{I$uwH(M!)4k=gpEY8;-9%YB;^WIav*y6*9t) z+axLf&&k^P{{N%$_=(~f3#iqs;blkNb)#f*xwVo zt~>MGlNrWEf0wl7m*6YAi>E7y)9JuR{VflMupG~))O27Y|vy546ZAx&B%GceHoab^jQ2zLwt9s_< zLe)j!yx=I{vR9^9+HJ*mHb`D|#Fx7dz_Kt4W+BlC4J!o>8DqGtmc_H&+uM58!J(+Y zp``cg`TSOx!j2;^UPm_|csu_6dR+)BbC8Y0?Xuh#Gt%$<2(ZkHvAi6;VbhQ8*E-(V z{J7@z{C?E;^?T3zL~4H%eri$nq2qCI|BVM5f<5gzpUuB3{a8{5DV_*iqA0`PA88{7jnRn|p8X?w`Nz@L%h+ z=c&yBRtL^pnq{1Q^ZzO7`F{7D52>H}sOaqOb7PNP`1(gPZMJN>b^6*1VeQx%?O|^F zKeEl6x|w-z&DsC`^_6LTPf9uKJU!zhjq8lTF>~d?3}*9!)zgdL-w!LTczmj+&umZV zN~KL1=6esn%wU~Ad2g6e+W)1-de+RW&Iju7@r|!_Sj+b1q?_1fUa2K|@_fNgqI_cuy>dn8QRyrEM=E1{<0=% zddt0&U%h8U{wja!d~kl#e`XK6$2jo|E&F`Y6Nzb z+bzTW-%2#|dOl9qmM@Zt{QB=wR^Q)Wn^df4?+$On2<`6#p;2*G14- z>ivvv@1mNr=h)5qCqYxCdT1{E-&P0|k%pW4EVuUUOh}ryu1qET z(Ya>RMPCcfG};MqnrVFM%+g|Jc|D`MboxT?DM#msirL0)3kVe#^lhSGfO-lXn*{rY%_QBZl9mlbu0eNcR4QeSM|u8 z+0j~DGK-f5h26?$gVd(E&u3)s&U82PTa&zQ*CV}6|0g}}4%=n6s&D5L=f%@C3ivqF zQzt8*nG^ZBl=qu$M`=r8-kIHx{`H-bwahBd+WC5haM{Ga3*H?M%zyUa`<(TCmK)Yj zZH;>#8bA9-S?7`aK3|SIgGvsU)z)d-4{dxk(Zerv#kas!-)e5HcB%Qb)nRJ>#$#Jw zeS7!m-(htbE0>?buICiLs~1%Xu86^k2Q4p{KO;^t9#rC$iUD^4(Zp?O%4raDU5- zo4c&}WEQI(m-#)ra}Lwybg-McEz*)&7TuX#dPGeu*=cha&puI5>c}uX{wGT1RfQ1m z-O4xrUe|T7$z7c3`0!Z!s?Q#!R=vNXH>=glz7$__@_E2^eQroFu6;J6Q;;Y9-9y2b zYocZ(&d6UVS}$(=GY(XeVQKfkOGcO3*3b4r+eb|u-A&2+zTfjbyZx2bw<(MJSs54@ z7%~dE`hEt_|7X%C3F0yw=K)a-$!s9%fFU!8dN6|#L=~K=0n-i1#~|W;k`UDvX)?wj z1rKHvo&nJe7HMD#BFX?Uc|m61&oGFH!=mJUPaj!AR5iF9ulXngm6(+r*9NiLqvTAu z?qY~mg`0-;ujZ{TfEa$VZ|2RXVDq5@P;-u1JlpH8wBr{@>VjF{&-^_wdPtQpVRpHrL>gH8~McJI`Ok_8}>^Y zvw`#Cg-D*Y_cxaM#ve4#kGpLD==tUCX|MZqvwyo?FzlB$&-?P?BG@bj4Wk`}$NPGl zzbV~Y_3iuDtD6k=y6xP*{;JI8U7|G@4ET%Fw69~h*v^$ zpUt@YD|tJ&DI`@dIBI3M``eZGmt(#hTzZ|cIHoc&@l$Wp=XWB<_q<-Wd!Mf53UE?= zk?^PTsf^dwqZVnez`1>wT=AA!4;K0CbT5*vNK6 z3n@VzrdvUs$Nq zmkB<9Gxx)lw3s>fRv!L$^y9ko4*8Gyt{2}=_&>S3+U-Fy6Da51V$FXgpB^=T)6K7H z%w2w6kux%k)0`Hu9KUnnWusI?mxPRz%$xiv;rkK`|8H*>Z<~-Q-LdB7&!b*$WeREe ztZeE0->-e$!oKxK8 z<;U!9Yo1FipOUP1M)cMK%`djjY5#US`N>vQowM-q?KP{uUQyrr?7$VCzMcQuZsy4r zpZ{>+jrw7?&DV^t+r5{5k-225POQv#jc=W4yS`B7e&A?g-5;jZ8N?N;vg zyZ6Fs-)uZCXLQFRt-SLJ? z^H*5ijJEs}5}JSQ*N$^%JNs^4^Ix^Xuikt|l#l%DDS0Wy)dloh_65-%p4w+Pm#v&f3o@3wDLQ*-pEDz6;-5fnJrg(i%!ubal{x9W}f)wXQIm&&GY)YTB^^*CsmbGS88w{B8 zcbF%KmP|YBx~|~PiTyKt5AFVHmT1Sz0BU$F;Aa0nm3PtYTFV<#EnhS!*P1EG&RzWa z_?JdM!+jg)S$C)N)+{>peCA2RbgRQ*WoKF!yMKE&Cn&Vf^4%RHi?r1<``*U|y>qpV zp6mQ8cvs(((lZ;c+g~+Q=W#ppK@;jP6Q;fTd%B)XVl89Tze~B)MEoK0>fp#T)h+px3Q?R)7rk=3pQrf2`SRomT#hbNONCM?1{duP#hjFz?rUwK?;Ak39TtsrRjG-G%vz;cs&? z_;_WEL1jw9688VCzYV7BHacEf-go6L+p_#@+2eES=AA7%6MAN9p!o5e#n-xIbsxQ+ zA*^2enf;Y&d2^r5eEkcxi|YC;OJobqFa+=)uQ_k~{lN@Ih4&BkJDB%4sP}F#J@a8k z|FSR1=U&WMT`A+a_?Mx1rQNdx^ZuC264q?y$0mv0yP8w@aocWJS>wMm7#pn87*6Li`E!~|#8t1l?YnjwIdKH zyri9nYR=rtIll1c4DQVe%g-N=*_ynrX5Pl9>~nw4dNix?=ZxU<2CM&TpN+QJYH{$x zgG2f1r4kZh;q0?5EmG~$&idQ@wrf}KE>>)xcSLYj)DDZ6MISB8TJt29i=|tXE%Wz# zJvH&N`tRei7oG)Y7o4e5>3X|lxl87yo*9qb^t=nUy?oes>2idSdbnQv&#upg;>+sO z?9#vqmEqL+UEJk1FSPAdRW5B$EO`9vMTgaW$78m>1)uw(=Kl=en!K)JUZL#nyT&W8 z8~^W`m$Tzg^7EMf*Xw3}IGnm-KVSA8wLQ6Y?X~`$|4%yh ze_H4-d*bgLI(j?QuZl{!=EPs!g+JHNZm3zmpX|2Em?Ge0$tg)D;cjxWF zYv;e_37Ky)|7_UXGBHK-@#jy0nP=wLCx!MW$&?+Jy7rLAc#Uv<=;oN8 zTIW}pUk_t|^jxmAANhB7ZCALW?BgD78#Y!3hT~_%85kx^cPei^c=Pbyw@+pyxBY!M zgOTC*9D&Vomb?2t=rS>Ev0Iv0|CDoHwb$RxGs}1xAe{t@YizGv-Cr6$mtp`l02vqr zww>eYWNvs@dgk~0{r_*K&#(RQupQRvkV&3?-tzgJtEN*W7wK z(>VRrQN!ahk7qyQ*5C8tgmV9x*yA>jpStdipI`rOv$p-uzy9@~+UHAF6@KlRe*O@+ z-Q)1vGHt){G0F5fhKYw-7Wdm#-RRZ~UiReOahtzKjs1Uodb9Ta?=SQJeg6MA!gr%*@PTm*>RojyY&p|5-NOX8WJr`~TkiZ&mn}Ti)Vr zt1+ZCe!;KLGG)5%v$M0qf7hI`J^$tJxBq|NZLk0JHr}pQ71E@?b;+SUtBo-E2mMN}%YXmXV>XhO2yL#y*XVhy;*I7Qx zj{m7WFM$cv5?}jz##fvDD`L-mnlVXA_H(BGJjKg3kHVkL`E-ZLcWxuNLDvvga;ECr z*HxjbUq$SmbJsAvJzo%{*X@j;L^UEjtG3FgQe8 zJzE>ST`lr<>gj2^aeIDjx$HOFrt;H|U#w8a9Wi{r`~AMh(gILp1diWXaKMnc#Gtm; zIom8JCV!12s0BB*`1R$JA}_k&Rd0%&V`L)e3Wa{Nv2gd-&J<|NFJq;+^irgIa&W$?x}mfA)&GM5Ue?p1c?BlqL}+u^tSKfgH9FMON_oVOiRe_hY#+8?xV%LUu}Tce9QO3FWO_xgP*X?sz2Q?Tsj@Sn04jaTN! zd}x01L-j(xB&5vUW&Nx~T_i4O#p=&#ywUqrj~a&G^Y1y>wdHR3ozN?OnVv5{tL?Iq zDUQ*0Irchcp-Ir1I=%CH>3j80$?6*YdBS9U{+qYQzjcLY7{DVHR~Cl1Wyg2PN;~}! z?Oob=IOo|Wk>hiA&3~eG^3%;}{yMecsgrHD+)nReYl0q?%f6c`_;FvWs_4F7 zt7M83$}IPPcRl5=_i9FRl=P)@0>^nA>_LN1CKXTOr(OHDVzcMlsS~%>ncwM%FFLT& zw7am*LwZ_o(V2ilc?yYM`&gKxcJ^7Oo`2bAncEN>`+A1)zdV@JLQ*}AZ%qGT^|EO? zuSI`XpQX3_qZ2Ph*ZQAOSAD61PiKJ zySJ~}cC|jDaK7=vqAOul#e7H3vV@z&{qt+P)>56yGH>#v9rL}|PQPlq-r~ln_WqRH zq_y{jj9MF2W531bm+X73Sbp!o3G;jLd$vtoSF9{s{9{M$$>P)y3+ME8J^S`0Pp+E@ zslXg+4sWrZoL6w_Nrvm1>mBixbx+qGZ8w;H_sq2izdC=fOxW<}-KxHg-nXZI4>;`b zx4gtty!N{D!uM65r+Jt^O0Z8@9y9UNRr3pm$Il+WGk-(fDSgE+(_Zh~ZX|Ea03Ond z{B08bwkTJ-UHqHt_EYs2tmf5U|9;GKN0=(}EF=4m9kI`E1b3C*IGH}<%g$ew2`Ug> z3^Oyfzq=c0eS{gxk9|I)+yBzLO`QG=3m*1W-q}%@yjS8mxNy65-Ej5)kH1WvZ=^D; zSe`sBaGrVoy>|OQ58dS|UFx5on>+ik3ADI2mfig3(}xcqgbzk+%?jPR3_9j0`(j3F zcfaMc8S0N7-AL{~3aQk>t@%YVg1uCK1DQuCQna3irjbv>-g zRkuj9OehWB_xs&$eybM?9{1bFW#`@8^z@AJ`8&DW@3OJ6z1#7a@9*8(?{~#@qn13a z3V)s9yLSCrXq6_~7kMpAcDi})tu48?&GyGd&igSX*l%L~wfMc?rf18pUHSERk7P5X zk~mj>M(Vlxd+V$#D`w~I(!5n3d3rJT)@9Se-^_znBYZ29rzOkTR(;v~{hqYx@#;4l z-Afi;TN7~*I>2?V@XV?-y9W)-Nzac5@ISlpv|Xl%15!uqTG1DIUVG&!!}Ig)>*v>g z^L#%8YUsA|Gn@9z5_{bF#G~kpSo)kow=N{l|BUkO2+Wn;d@Wo&J=6~x)Q4p^TZNyv z_3G$zyYD-D`hIRaE_b{9e(lxYGa2`ci&P}74Ip6^uhLVZN^DGJ)?xpVR^?S{Z8pfC3EfrStvH1OFvwY15$Gy;sGW<*Ow5_&}I+U+WjjT0JnfUzN z+}|txYqg%t*t%r>djHSKZ?;~Ki~4**xj*HJJjg{Q-O1Cwhwgu}F)qX7{=DjUD_cLE z4UZ{o)%jF?|99NpYqLI`N}js_GK5(YxSr>}?eEWLd%qpZn(}q~BjJD0NdDP(^Xu7# z67jXrR)(=`@m?m#xEQ!FV_<-``4}Mi5@a(t|1f|A+ODPFniIJ>>4oG=;n`bDzP?)6 zYMWc(S)Fz?{*qh#)p@Mm({*0FeZbAlz+mw#tn^H+b91xeujnt2-2At$Ul#l}dUN65 zS^xU}yMEJ&*cfHFB}wDJrN&H)XEk5=biV38&eGo$do`1L`jxVq+~GMd!2{?IX3Ty& z+9}sGJJXADl@)zsfmPuf}tTfuO*pp=DB~S(NA2if9q{YzBec5 z+GD@cjK6)iV)754+vY6udCNVyi7~fVl`FqakF~sZLsf3wp_yB@C%^ODoflf~XehqT zb-f%YtZv^hl($YTNG?f?kFRfPf9GGNT{-ztn5p%%me2jRlXI?Z>*}9bvaR;-O8Grg zWr`0*@045j;QzEUoBG&SGaH87Yfe8ArX%_3e)PtagL71!wI_wgNyY3mzjotnl+>NW zTRwU6v7SF_eORpI%wA?^$L}#4P8{8=`>j{AJ$8{3JAe8^uJ4N@<$LBua_?Oo9&!KW z)WDD2TCq2#?W+RCS6=n;m~TzZ(rZ>9JC~&2VYl4uR;~77wbnj?XtQ}Fs6zWrmL<*!Jk*YdK4`@EUwY6rRfYhAxH_D0x#NH|6xe?+!9}4GZU?@2A)->F0!ddA*U6&Rt z=GE!k7g{)ZMKa&7i>LY`OLzTyQ*`b3qB|ECHOcnNoQt$Se!OSiT63O_0nK(-u3xX} zv&@~_6v(|c_)X{<$;;F9VmFn%42YH8tjihJ>b5vVZ~0lxGta`_t+!sj+*qdg#oY%- zSH75`UE^5yeikfEt+z^(UZd9ZSIj1OhjG%%+*TItncFKhjq-77uAIsd5i@oA-bU3}}3*Zp8U zdRFgx71V#Xw3RR9E1uO43p_q2Cu?=tnas;cSGM+99zO1AADu7q;F(y3lb7mond|+Q zmzM9W>)W}fD5W7vOkI3MYp&sOncIhVAFDgV*|+nNxQM-c@#&H(No`9Z)R-%4vHr2vKYQA>DwdhpMAP=;$v~D$lAF4m7CwpY5eu&)Qhjr z>NReC|FAIJ+W1uKu2*c;Mq9FEi$4ZUx0-z8j=19Sn0>1*`rj3vtG(Dsw)m6y6Mv^m zmmvNyt$6zP`~Ckt#^)^l|M@JgA6IiivE8J0T~Ei_I}iP~ij}N5ry^AQPDVs?c1XdQ zRTti_pPbA$-!uMGjHIPq+Ls*W;F^l}+k9k;o%A0b`8mURv+{b4FH>UQez9M7%8%AEM~-$W(cd)T`6R{zc4?Xue^RybLKDS>*qgaEZqFn?H?;!z`D2D@8gSqXx3Vu2|M}ZYg+Z1*aiQrgD&5> zz3jT~Gvj4f7Mnld&RV^i9aIx|l~q<${OAl?6S+C<%ZrP>WoKq;^6~oAtzPA8B(r+m zbNTAFjeOS6kMqc{mRD5?odW8tJ}EgdI|;B881BBFVfy{D@WCGk*zF3QP7R+G zdv8-}cl>K;LuXy_nOS0wcfDR$tz;RtE~XRGfYK{H^Qvm$*`PO{-0eOI-b{7-2b%hH zFtRUfntzK93_7gL|%>qtCx9LuY8MWd4^K`3cD!bRbN-52j3+I{# znM%F;Vn*bvI`6{!7HPs&o%Kvls{{N?JVN;0UV)x^d#1^}?-Yhq^(LpV6I_vs z+9|Ec=cFF*k$Byrd(bdE<5a{^ZY(}^!&WHj z#9CRft~C=xHytue|8z=N%_m|*LZjL5AII(gb%<9j{GYY(-l-R}cV9NtW?Z=^E}1Fo z=9}P9qpZIsM^N-WFFdo#+wSj|%l02T{cR=+RAvAB^D~O~xXkT6q285ybwBwj8wI{z zqL_OQMO*la*t+k#@BejayO1TCJ!|(_!|QQz`NvtFq%E3Kb7fOz2a4a;9Wq>f%i@|| z{>@EK7t8;Bu`Tzu(`o&^UoL%_^=w_y8O^6(qc-{XRvwf-6;LzL=2~L@_k3sWk89)0 zo?q(&c@Z2+4`*D?n*RIuZ|8YGzTM8Zf7GFTFRZJTTRiXnzPqst*RR)Ky3F$8zq-$| zm*cHoPs!);sV=+c8UOZmW!k*B^A#`Gd@DWE`svpX&eELQt8Cx@s9)W6L9O?Mi*6jc zEsy^FeqVm~12ex(!qE$VzukVnVsYOk?%GhJv+t~KxiB-XEv7o9m`}@s*|J2xjf3p3*)aBOg z?)kGioM~15w~yRUH!j?+Vm$ZQzu)ieD?dFE_O~fKHAT~1u5!t)RsM4<0zKVN>)wqx zb}?J`V$t5!rCXMy4bph z;`-S@}^rdB^62SBo>} z-})RF7qQl%xAtgJ%A#LlcXpz9x#IYm_i^WyJd4is+kU&D+;21K%Q~|)RqJ}DpR@Wq zQ#EaR`Mz&UJNspd&xrfmK0LkI|KG2d#!)-ui}!u1+V^bjo!-bWpX>2kgJd7Jdfiy| zw)T~5nccUKe~b2Pn)KD?^rW6wH@tgft}NSLh6v?tg=fAk?tHs!&B+;8*DZYi?Ah%6 zzJ05GzeKMovwIdiKYqdS>3{N7?7l8;_phx>%(hCiRo7g(XWrry^L8(ZGt_^P!e{+v zLvo*`+ufZ`oZhU`zhAfg4%3}^!oJvak!&rUNRn-!hWTCeW=C+t@Tk`wQd^!B1XZ%_!X{UQzTRFaR@2!KvJH20-wfAl6KXpoL& zEi?HpXHU02V7R(cd+DBed(9*EtxFIU%{vs9c=ww@naZMDY3nEZS$RHR<9+2qQ+4m< z?*%9&<74evY4^=vXI~57bUSbN-m~1*DvP%+N!fTh_w9_Ud!`1(osUb&kEx7hRx>%Z z<7DgCD5Hr_#lOa0p1FMb-PzOHc5F4@e^mlr$-iPbF7xT^yBfW;DaKV#%gWFEn(#|^ zTNKl#_0H@;@!Hz|)Kpuic{#sZe);OPsaTw1Kf^La4gsvnto$ zR%w4!(o=ANkv$^rM*jZ4KChw{<(gLanO%vlS}1r> z>(7h*QR}WTuU)Bn%Z2lh+Kp@6y3^IZ9x7WcZl*dRH`V&$sb8x%UlP*2&i#7*v`L*M zYqzYmYYnwGSiDY;2gg4(Vz_fBzn)46zhT-D1* zN4s^|HBB?Fv`%~7I;n4~#GJ}!GpEOv&8(Vn)8Sb&zuk?pb>h$GRlnPmdOAlqdXeZ9 zJCi9lzAc*@vFx&w?!}_&Ei2=eOuxIe@5;LKNwtrpC$<%R=YNcnHfPKJQr())cWbw! z>o=L3$GaX(+CFRhngw$vHB1RJsqKHNP%1myJpbNF_4#YQEM(S?^vAu+ zm#4qGv-4D#nfmsp3VW}02m4tr-M&4X^XR6YpxNi**Kc*v|MuN!rbqqT$i*)$HD0ucgL18)Oz3I*(|TOkzH>}-|#+DSKxfyBJAfe>p)SA!J6YU^!B}sSzr3>6ra?- zl~cYvXy)hR;mPQ{7vz0Sb$ZOF7mNF~#9s(ZbIcK*ofF+2w({?~-R~|1=WOZRntn4n zzxH)>=$iUZC)J;ypPyg7Sx_j-U4PRTq0O6qcdE~uVYH=5<_hoB#1oJfC#a$P?A*%a zydv)Dvs0J(&CPoHri;^K;h|mY_Iz7Vv@I+kZKg@)q|zHfjrY3lR;@J+t=aChGb~_d z%`}P}zCg6-}q$ z<;4lE<2}ji{P|XGJQ4SHkB!)^f=^FQ&Jr~;dHs9Gm4KDEiY9nH`L$kTo$9{`uG79| z(+=$_d)X28;2L*s(){aQ_o9xMCDk6)*}sF?C@0@+n$zjEFY?__&TA{#;k>6qHtJ#v zr#?z8l_pcX)^f!=PL1Tx(^BfcTy$?=_H5(4XirX$>Wa^^@Bb0gFT0sK{Q`IC^Pv9* zYaiD;o(gy+zwPz9-M5OfzBtXl?)4;0=KJ&K-_jpX3%LL2h+f-TYAEP#>ojocZzo+W! zD{lQg1yh9&A3mIQxazs}{grlcW-ks3b&185Ty(wV^7^%FeEj@-wg2~VB#_4W1pC6|4#$Jg%_y0*x* z+hlWp{n`-21-zea(>$NAUp^`8v(C&Fj=r(ziENq7lDr@-vD?WlIezoM$V{ninl~XS zbVJzg{`-ff#zmCN=da7G1vR+*>po59xBv6O_WPaB5BckVoU?v!^ZU)_^z-x9{!wau z9dg&V>~`+<=)9dz?^VCQyCrk-r0Z+9-&>VZ^7HBR)h_GKh}w1uwYWv)+}jgrz5n;S z-TC`|rae{uyXTzc^Et(P1Gp~NIBevvJQY+B?r#w)^dji_Yo%$Q-mLCH>m?mCOm|v7 z_sWUX%RXA}8j?39SpOCz7YFS7wCk+iN|q(g;X3QxohN^dDZg6^ngxj3eI;XS(NnLj z1uHdQ$;Q2Cy|vuL;_!PJwYMuB*0<}vjP#0%mvl+3&HehWe1G)w1tkmaWty2Cx^{i% z*_p=fuUB97S-p~FeNO7iC|k$X}RLt_~84uUkhfwMXk^a&uo3B!2LJw z>$D>)gO*L2DAiokdSyoQmUiVn3#aOBhQb>yHJ&zQTO8_aKm-8?p~vbQzpEk%2UF0^PJJ|D1k`NA(gQ{u|59}U;rmbT-IOv+4G>yYX>LHo~!uYWo%xX7dw zz4nMI4w#l%wPvH6eMT&!Y2DnCOP*R@v&?)lHJvry{B$!_TfkY`b!_TgZLvFB`z{r3 zdGK!9^{?w@u}*!Rer`_YY3a46T)uabj~3>xZrk9z_kv_r=eiB5A8#F3KH%*`&(@NF1Lxk-tXlwt1!0TJ;-^++k@|g)lOzIE!aNokeqPVLiMI!z44(> z7wl45zbeS*l+{MoF9Gu{&1+X*^pf3Ea`DfbWMQF~Osl?Ln6>mx_k~}pWG~ihFH@Y= zkJL{z?%SDXx#FAB?yY4jC!ThD^GoWo6K8a%XHk%JZ`_JTxBQ!r`|@@?WIKCdo#)-{ z`S<_bJYN^4Z}RmQyWNMzg9jab4=SsAt6%gHnQgsglbcG0*^kRX&X<3^cp-Xu!l%X0 zw(;avXBlicGVhPbS;t*Qt0rHFaawM%@T=+krB`!ZE>DQlZhqbRZRO(EQ7>Elj?M4A zKYwz({*-H9pDdRu7C=jHcdp2!JoQ`YxBtxzMUg1SO&539|D0a`^OW}bKezY)y)FOm zL;L(cPt@=K|Mz|W<0JfaADXYn*T?4ned%9c^={|$b2gvPnD2e*duxCEJU=g)NtciH zO8|Nr0n{l9nb4-V^9QAfu|NkfJ*8Bf`(9HkK^2EA@eCfI|yQ;kU zruA=$;jQ<2vFhQ6-&a>&Sg(?|wCtsh@Kl8Ej6w@^z^=RMr3w_h*o8M z(MeUU?*GnTKkj{B>+hOk`!M*?m692z&lFU*_Sbz`d@Iz8FGw$7Z_}iN=AsF)iM%F( z(KD(}ye#lyFPm6eV!O`sy%xLge7n2zN>hB3vm!U!6<1wXJ6dAhj-Fp9o^cfIeq%Pl zY41PPNf~^XqE9L8|8Z3RO3zpRosV|k|GVzXo`i!;b0dPJPR(eZ!Vy>TkoC4oS@^F# zSvf&6-o!oOACGp}7t z{Zc%kb=|hxSB|1|`5w=R-g{-8{1#g-jVTRZrkz^m<)E4L4^-6&>j%x67E<>A+xGpr z$5*McYySIj+zUj8^mVa6E_0`q&d%s16T53#bODdjVw~Vd(#)X{Oe)rn~ zc1#bn^bn3%#p|uyXFAIzwVc;#V|v(5OAq~=ZHuKa!(oo)id%V!T&CADgl1l-F}ZfA z^tf!fi|X1imCPX4o9Xjwzb$N+`*oq+?#n~|`ijrb&c^@$b$x45j!{tE&bQlcPik{a zIqxWSY-7qvq1t$%KmV3q$ez6*Ztr@t+*@BB%m3eTOlC>qm5V{YK_hp;yQ6PRp1jEN z#60&@%N6_g$BT!ZP29V8Zyn#If1z2|Ij>usS4D5eIP;w{3hp=CxU<5E)8q8j1Gb$8<-W3|K`YsKZ*as&n=IHqrOl~!b4b?oRs9x^Isz3T+GFYQ z^XdBkzt&$pv&3+ZRc`P93!bmGE<1hk+*jMW$I|y#SWHmTWWTvQtZ&Evf4@!hltZ%a zZ%XafjK6+--pnP7ce8#ESQ+~^M#_Cr@nsgH?3Dhu|zW+~Z$X==7HQH&(QclwYnZm3Bn7Yc&Pg)heHY#;0%eGDT z!=_GY-XgEM{=y;kc@<7oW$MefJh#*|^!zL(|29wPuFb6GobalJwh`0*{5Wnech+&$ z{D9-@v)Atp^9)E|eY0cBGPckimKoR9L@tzBBKxXohvkW53fhfY<<~D^q&DfP&5Q0H zGP%8Tljn*ndakvvqwfbTUl$M*@NoC?9$$yvU|JyQYO4UNm z*Pg4VSx+jOz;%CCNYLEXPR#R5!_4OX-goeV`|cNux=py3?O*mvy6oMZl_r8`U8XhX z{F4>k7rHHMQ^30m^~vt?*)At8``fR5vsi4e^`0Gnzuh*yzx|3exu{ff;9xY|Fi!Gi&yg?wzOgcH4Y9p}g>$ z+Q}bR!{fJZQ`!1yhDB(_R=c40_5Xh_wtUeY|7X#cHN1C2R-8*;KEH04i^M6%UmMEr zmQIhpb*)YQ_l@Hr7T3C8eBetBdg?g0?c71L?T@P8L~y-*csl;yCtvfsOEk@{9$3DA z)ujNbOEYhTg-*Sd`@yUCd=PpItn`GVsPF{QeN&sAT+3d5n^Sy_bL&@)y1%dEvwz9W zZa$VT*VT5V^ySj&ZE5}C7bC5w=xp6-I>GbjrL{o~CDo66&D(FMd(_g&ScgI2~WH@$uQTV5sg%SOKkGt=i?Jo4j~ z%cJWLzdQ+5-BJ4b+RMi`T0Ur6di>|zTAaC)&xH>>Mh{M=1!pXtO*`$l(Yb$V@ps8D zm!8bN|0k_h_!Xb1mr|A4q?BcA7D}d@{Ba7pa_XOH$?mMo0M`A2>8lT~bo9;YKkFD3 zZ(Uf=ELuF_+1f29tG=wf8c=#IGX3m4+i3Z)=}zJXE9YvPOgq#T{6ebjSWt*HM$5;1 z@s)L|T31$GS(kfP=F2hjeSuayz3l(8Z~vzw;`m?Sv4Z|7`V zlRtBnEfEPy9Td;jY7;Dp{2?`JBhncP$^L zHD6)YnbJHZ*zWVp^Dm-2LvFcry3O=(4O(iz`QAdm@1xV9$*-n3IyFng)&Kq4E?*bH zKJ|~vW6d~^-i^tcIdZRW27!J1*^>AU5n-?5cn zuWBuKws%@+uHd3ar2|p--j1v@c(*aR$rIV zcKVCVlK%B;Vhc~rn__}G`}BB*^rYrROUq1mcvRH!8I^iodNoy4s%nkQl7n1Y*LPW- z&_B5PsrUM?;ZI9F{aoKJpI4=|g?;L({a=>q-}Fe&3|;;5f?1V$**>|ioY7k{CQ8jS zdAMh`z}7#%Ua!Air&7&%@0oPaz>*YTDz{d63OGcWOZu-TAA^7Vsps1tz~*s z?Q$K~eLB=9YrV+Q!#OYX8qZUO&YM$~Nfwx}FOid7Vzm0oj~mJTty1%r{CPgF+OItz zdm>+A{Z&5|OVy_es+x0ew2H_5*nR)+IbG-1nhVV49AeY=ersiGfBnT#Zv8zA`j>q? zXEo=xkJwqquxIx+BsQB}%)7oW_V?EHwYnk63x6^AR%aS#YrR>y&}z%M`Mw<2t^e<^@3uXE%Sj`SsvbFO(^SG@0Vn&lReXxj>t*XhQ z`zAkYxh}Z1e(eJ1Ki{_RFZI4u6*jr|*oL@BDeg6*cSJVV{x0JTJ?X*vVtQParY8H! zi(bnY>a01m>lNFV_+I6UhrJh{m%Y0Cl-;i%*Vz5!9i@NqXZxOXTon>nKyD-YaLGs=E*kPyBd)oePYeo{Jmep%6G}{ zUEO9N`g-a%6McU#zD-*e$t+abZB?gPn4#mE!&mj7k$ugTb;jYBE}r|#l49wx(^Ed? zX@x!e%8mVK$z$$><`Ay)lbWYEnrvN?=6K!4RH}WoUG)3f_tjHt@BMvOp1rWjH}#}r zR*}^mZcQ^=_DqG=Qsv9Dg#P4izx(VNYj5cV=N^@u>aLa7N}`vUoQYIl;Ilkvx82-T zT$ifbR-W`+S`!+gu{vx1#`ChFD`UfRoHVEG+)}^&%DPXxc>Tlpf-VK}MQu!K)mvuD zJ*jyDVlvIRZ)fcD*MU|6uP*Z6I`61ezA8cLtmCisZa?N#zuVc|++6kI;-jP8{~zi9 zb6WX)lDA%A@dT%*nOiGsUj@(a+E%=B^)xqKjrT9sUpjt!uZPyw*DDuJYgXCW*vMF( zf65Wm=Fe?tIv4qP*4>@DTi1%LyBrW1GhMaz%f_=m7N;v`nzT)tTjXA{Pj2e1sWVEZ zelawS-sg8r?Ndp0+smz!Ha%6CddqZLQbom$pc)fUu+B?_4ON2s>37VQmX&_qB$Kjv zx_6pZp54D6j~B|Q$ZCCE@py{Y>a6FR#Pp`#)!+Tb=&8ci;5Z?i0` zSyI`0MeXZB{4p~hz{Dm0EKV)=+XNv zI(}=`)Or6`sx0FEw7vfK_KP>mt}uFAdPq9TF4?kHWW_|Tsv|3cI;Hkp@mONC+CF^= z*TIE`d(7hdr%u|s_L%UTu{eQ3AWc>1ztO7bG@dqT zdT;zTnI%gWpI^Ep+0uj4LtWskqt;FB)t^LEVbd{?(MKmfsmZ%1o<4N!UetL5Q;EpM zm!$7~U=s~mZ0YgnPU`g7n7di4oA+)I$-B=#bk@<#D%#THGS5q&q~Zxz1wzg^ zhM={cgNp-9cs>0t^)E?X|8~8ttLIC#Um~i$pVy@+tbHJUw*0%((-7Xfe;qVI;{~-7 zFaC>=QrJ`Y*iG7K&4p)P4nd1=9S!+Z*3SQXY1!IkkG7_2bH<(bFZ$dhwWQ?SE8%D6 zCo{E0-%Z_C_w#hTUc?56PKT%eZpbWImtb~q_iy71KVLAvnz{O-%$H98nnP(@w|FmS zbNtGD*~T$y#o?E?jy+qjBxrZoWuYPgl)Qa5_{wDXR)`t5f7S~n4`tl=%1 zPQ zy;8Tl(cy+1ZIJ=c+$dcpLv&>88(*Dab2NjQe)l z7ESP4G^xww(KChmYx6El;LvW;Hd*JiSS+sQqpPpMO3fmZHICj>SeU<8 zNuNwg_ABEo`-{6+qyyGCd;kB%@$bvbm&uw=mKv#FHhx?4cXjZs*Gqpa_gInXbKUE5 z)~g+wmM7M2TUVpYiMnX&nBjFr_S89Iaa~tuy*iVkYmvvdDe}=>%_66TOuLMZ+E*!t zx-Z{i^7Y>nb^DuJGAFyd=$n6HQuCFw-c@0d@prGRaXhQG=gO>$$)5kEX6rotefQ9+ zQ;v_l1ZOvIYA@Q@x31lL?^E6Ui^Y+qn|5F4KJ92FKXAK4ORb}&@fLy*Hel1?EYX+=m7q2|D&bIXB z&Gh-b*Hkl3?kat)!~QdIZK>q#ov$V}&#V7e`8Mo&@b8!J--o*!&TX)3>W$fEY4mnK zdJKqqzxDK&pK7qg^Y0pGOOOAdFN1|IuXwZWPbZh?g4rr_V;wQx_VlF|DV_K|9^?k4Pd&pDYe^8@lNIQx$<8g zsp;qK`}s^dZ^y$`tJm$i#clgOWYxAWDV!(x|At$-$|pWQH`luCO+op(|5@6(LT4Sb zZe3RVBDsHt<(h?nZ70fT0ZcP`mmbTdrUsD5VFD#UqVsd`z zr#>~U@M9PEysqloqp~D^=QQtWb(^Pu`?<_~uP47}P-Nw`HIdED&8K9w3ikj1``-Tf zoMMwHidK{RL?>>Io_*ccO!%d4r&saEH$pt75}D4uHWo$_?iLFzZ%j>9JKlP>bp7Z0 z;uwvkyDs1QZRxT8tH3gIwd3>IoxMv^?|o=9zfoUWo5Q6NtG(1XHab-)HfZYOQroFw zYrn2N=BAhT7PTx|B9judQE;EsdWEgGRi=DfGJj*C;?!5Mny1{NZj`+E7XI{~{Qn=v z7n-Cj?w`8EX|c?rqu*ad|B9PZD5e{=FxySsP`NH3M)-Xx)USp>mYVb zRnKhE&gkbWb&`KtNtx9-Wk>CveJJQZ&J-I^bm7>>bwwtYfxjO>NV1U;Z_4y}oba<8#;EJzKCO@Z_!KUQbRr z{yli1*mr9{Z=Mv>B4c|E%O!tw?$?>HtGa5azEocAvhHbKSl3yXe=Q%PA}zhA$EL5# zcl0h2xrsi*?OZhB>(l9MD*00{E@heRc6?W8>y@c0PX9F*pNjEHjCy4ECayQQ-}c)K zsclY~9<1eG=N3Jm=OZ8c@VSENikIde#V77~)TOPr`;Aemr1mEF!}_PfXEy{D1-uY? zx#*?9s_+e7eL9vW_AyD%UbA|+%qo4S&P(%BPoWKEyDP9qN?m#%y1#m5RMW<|_)Ja`B z=ls_3-SIUuB45pDSY&zP*`@7iYo@S>oOR4QJk4${->QGPzphM++@zv_mL6i}%cOj| z;2*Qp*;FEOcmG;pYqp)Mns)Q)KFv74?n>^019!{sulrs{|Q<_)#I-pO9ER#ve^jI|^@9ptfe;JpAK2>O4 z_T%CPhTL~zcTDXZ_~R~3?)vv?{XehC&oX{V*B8ynDxP5WQN67DgNi5)gJMU3v&{SR?pl4-iVpA6o*OXhas{`2sOFuNB_SbM~VWr_6MJu-u5PPmRWU;#}iF)o8*bHyeYG$r_U3fwch=(sh{rA z9!cXXj=odb+uaV$n-TS0Ot1FR%HZXejJmQIh`b*S^I_vMFL-Q7e7&4}wcbryGnzwNE^n4Lk zw6P0!Blf4-JHn?n+_|Q=^>@Y{w~Sx&Rv87FXy5$&?&_7&Il@_CmxXM3?+mxhJqwphp&m?ow+5N>H zF&UMYE+o75TAonbyv6fo)D))Es?o z-8b)x+m_EMI`#Ma{rz?l(&l-4{(ie{|79Wn%k}r(zI@qv&L)3h)4tzlmUrbw=kaY~ zxpMoq_S4<{(z$nRKHQYvi8dzpnd8ZVD$zT&XS2^P?z8d|-uyfDd)9uDw_d$5pw({H zb0RjSoSb7>yyf=cJr}s7KCNln(Ck&1p!p@rbIGcE3DX+Bgo}H%Ux-NFope(;U@^v| zbIgC4D;*|NmL5E<_Hkm**E5Q9n{Pjv^3>3KTJx5j&t6w97k)m!{@fn1JBPpnttP7eY$w+BIEc~U)G!pU1+9X|G>41 z?~<|WdF%IkHqYJA^!vhv30|MI)~{B5eV~P7>MdijYq<+HmaXm%%Vo-nQbu1(bZ&n0 zt9$l3s=TQ=pD)F~{r2N=fB5Dpe)^dO&L*la_n$J-T0CEfv((!9=ab2~*S`N1c6zV1 zFy%d$TI=eoKK_}PJfm)hT^719?`9IedWi*E@jb_w-E?ht#Ia4gT^)@ltKD4j?q#)$wH;&+IaK7xLk2?!#5#6JzhYXa7^M{sCV?xGFofHTj+1 zaT#Cdv*%sR4mhb+oc4MwB_?^^{kqG1Z`IQ31uOnbu0Cbw`%ZY-Wt);mDrl~_(<2iS z%Cu_Z!PEKQE)`zQ_1?Sw%A2L>%0E+Ir!A8^Z4?zR${D=OC$M{leU4H*->Ri2=Ixz$ zy86{iJ7IO%Ynza|39HXd7VX=aEL;3GbH&Bf@>Zb8DZPv}ro#CI5mp zRrRbq`u2o!|CW;$&hlECto;?-)A#j<>8&sS1Fu;_%TI9~zr)y9xjyh@;P;6qzH06M zty(d+=NQN8r`{($Tq~nzY`h<_HMOLAEz>T((?zWj5E%y}E4St>5ie4TXQ+JUD5h*QHsD-C3*VF84d2f2x12U5VPX#aqqa23KGE zH?`_d%w*NySC%?Qymc*`oAY}5b?cY#5a)_~IK%p^;qoO5k8Lemx_qIGYDMlM;cMlI zC!L;FoSm1<&&T^#cb5Jg(gaf3fUblXOV%+Yd zhSybjm%b>T?=^ApmRw1f_%5&8S$~4$EH80C6--^)8Fxe2Jyh&^d~f>&8|z=$-Z{Q& z7s#YsPPx@%qp5DG#Ho?YcS$vG`lqVzh}x)h>Y9Qxu@7ft=f7QLEBw^k?cbNl-vqxz zE!LY7X%e{SQm^Q{ui-DiJ#dZfmi)<+EL9 zgyzQ;oR6znZ_67xhjWGNsn=UYZkBGmt@pd+HX_oepWr%vC$q0I<@CGIr3-&ed%U{$ z&eN~AW^cFJvFF}OL^&9%r!8aLXSwlBT(a6KLrK^Ful4Sz=P#LGAS)c8Yw5wBb@|O< zxT&BORd>EwuDE3q5;(cn!?~1y|Klj#o69pfJuJ7?o_>9|5>e|UA2ZyZ%C{<6YSrF1 zac@1kcd0MXxj2Vq%0lyq>gm_5f5W2;lIPrx$6VdfrIY&o&CC_Eg#)I2`gOz;W3h$W z(*<`jS6rOAqVVU5`?=GWOx~Egdgk7PR?3W}-{6jfr1z73mgU*u#g_s!Qcc$O%-by= zq06aZ%l`6-wes&0G#_PJu9#*L;;nXSV*jL5U*36iWEK1NU70+o;nMohcPvYUU(fhd zH64)@K+9w1PHT2s@+K~sZ&iNC)m2xYuq?TkFn3DrE~F~&cu(@XEixg6w@$mMFP?bH zy*ga}Ywqn;H}+h87yP;8Gu*x4Ky|fT!O0u9Fy+dNDIvLrdkdd_og#B3aqmGyO#&KR zjy7k1xn**Zi%I5=Ct7LmgMUSh_Kfxs5JI7fL85ZN5FjEAotLp~hP<~7kj-yt3`GK)m>i%= zEIU9NAbab;dcn+-jtr2EbDKbpV+3!yV@Lt5=VLC&W_N%dW(8)R;9>wB9|_)DH$jx4 zZ|7FXhC_xv=&7RMoqY_ToxPAfgJ9*LEr~M5eLK0H=|t`=5!dalW^U48PMuvhjTdkg*3JtiN^lpdkWurT7$=6=K?cDjjUF_FS!(~-EmkSxACSB;a zU*=`eo!mFIVf%(X54W^>w>_EqoJZ%Vq4RNzXFJ#?XT9UFy}aq(0|tiUZ=Nj>b#`9W z5M>y$qAlu1u$K?>X0GqIu6jQg`E+{C($>&DrESynbix{R1CCDJrW+D3YNl(V+HO8a z=thCx$7B1q>_~jrk;%Pv`_*?l&uZ!G$ZbzyQaa9>G4s@hNZ0LBm!b+;_eS>}TEBfq zZpzNbGm=xD>U>!eSafFZ=4Csd9|&j8)m{BUR`J`nkX8on>WB?jq95ID5c~2?C*om; z>#lD73rr5;R?n6$?ON@WrI9+#>D5frwQpAaJ+(IJ+sthRC;UC1Ue}bK_U`*FyR58a z@nh+>+r1JV2HbqK`#5Wc@9{k*YZlMg_2knw&eAi5o4PtoO8So*I%)clEiKGm=w9cMBZnnXA2ehjri|-8D@N&D9*$FMiyTVR%t>JmwVN#MV3~&Gn0S zZ>o~}F19P3=jfJJU(PMs>%T>Jarb6io9@iFpd`LOTB16ywX0z5=9HJ0R9pLGEYe;W z9hcEwy}+aJ%!QxI|KIdYsHi@rbKrtp6PK4%G6TaE!}N8@dTO(lvOeFH;8(*O=5y25 z;*XMEs3rH~b7yrw`Y-O2+_ksQa$7`qGTW;e*(;LE=9XXM%wkxuT4uBT5ycdTWa}q?dtRmZM=7KV)0=^XK8^M*B32H=JQ&)Cn|*{$Y*-0JNK95ws(bR-rdz& zwRIKC3>A%1ku?D?nHlaro8g_@BFrY`ugR+_$8~1;!>P~0*K2I$S>Lhw*10yhqf(n5 z3DvJ|X+5`dZQ1$U6(xtZ)olrqNm%mn%ESMkv@M=}G7(=WUz|{RljX>XQiFrKNqgBTbXwpgCgW^YJdr+%4>H^pXy6a$0R+TZNrj10$lK$#f4 z5f{XO9X^8dbP~uxCJdm1Js21mAg78kKu&6bmld}T8s4vbJ{L_=5@bHyKD)9@iIW)@ zD1~y)JIxwU9?1ya=-ZIY1}m0879HmS*#N4SLHaB}#h(S}I6=_yjtrply4VbST#*|R%v@u4?6pU;cxOLhZoNd&v_PJx=ARnDCqg^PufN}jE#u)kg1qI9^|EW2lw zNOhQSb%^9{cPH+`GvJXd@R?rHb@Ab*5xw8PPTRXOytF_6?{4cpNzmLnD?>xFTw~bd zs8t7VJu17`AzkzO&fTq+FiB7!{&iUM*2lGX_a0n+=UMc(cW{S1nBl%pYR$CSRlVDz z^IHNwx_%N^wD<0Q-nG)%f3*x{jKR}apg?%m7TVl9Kj669<6HU9|J`4uw8c|7?}Kif zY8$ej7G!PsX!-7S=^6&<%TqEYO4m5Qe`k>fo^1qg-Tvw>U(E9Ub+Vh%trzd&a+Qsc z-MG4B)0&UV?9!Gj{uZ@Sie1-qg&oiF9?*I@CQwPgbKa8-({+29)=c}o@q5F@NB5uI zfA%^~`&!2@17vrGy-B&bWA?6kaelk0^T=ec~R9<=E?uoCrPRrPN z@2XYQ=M{_ltp5FYtnNEYMLyyC=^D}Gv+Ma!*OecKSO7j4b)CEEjUUUlNu}>xyu9Vx z0x$i$YfC5FJ?c;{nQZsvf^+D_rMI`;+hqLRU+r7i+xszJqs+fD^V@uw;LK+U-r^aq zI`dlQox6KyeoaIU?5*L=y{rH3duM-Y^+NN~xl{kGV)LFFx9abuyRq!PS;6Nd-aXm$ zE92JkZ#7fI!)}Hpi=UA(|MBZu`@I{SEQmg_|R1Me;<=QuO?V#9V!ZM2;Fn{ z6?`-0UKM9Mhu%HkuJe9h87Uf)-2;C>Sd-vQWrT4d(rG}nJeG@+G@4I_1=1oTq1K(9_tIK?X z-fCF1SQqk8}e3Q$c?-81`Ny^Inu72^AuHF-OWsy>wrMu~kmMPVq zv8xUinTth#_qyw7YCZLj`#Y`;yRJ|ES!?+9*N(@1mv8*nDQ)!Kz56jF%q-GC2bQds z%DHr-Dx}$T(cTF2sM%AzYPC)ELzT4-WbHZrTizwyAvkYkn9sArX{S%smFL&hN+9O~ z(Y41kuO{5Ij(qkyG4kWF%vIXYJ*(!Dr~1n|rJYhy@?nqHL?C-KGP*Z- z)xk~ITTItU`8=LrQnCMJX~Nb!58iHDtGCeV^B1j+%kJKVl_m@_#k}W(CG6ug_g#JW zx=j9Rfek1t$w=u{l4AT zt_bBW`n~SoE8V>pitfJp0^WIec^cBr!|nMo`ayXgc7@#vn|~bIteKWFv4UADrm``eq1Q&wr(s{4FTtDf*4G^khcF=_YK*L|xG`b4c0-!;Ae^P@Ay z=l8tXboxr+S7Do%?p_wvyY`>v(|zl9Z%sS8 zDSCHR%DLI*@1IQezZM(Ge#tgMzeM`l+_?2?!`3VZ?>aPMyyf!x#@g8RUmr~g_IvsE z?bX^_dH0HVtm^k(6WV*@KKI=RU$4tOoL!gQfA4PTlrLHv1v6caA=$rfrIC)eZ-lIM zW|a-2BUP{~ctPmywXTAhdTW+aqti zolh>h%U{(EYu_NfId{?A8TJ9GH)6~0mOh;to+X^Ewr%^pU)Q#;+VY~Rvp>XY4y*mo!~+1}-3)W%$v zNsxVqxijB8ZMuKg^h|vCj%ivO?<7xM0jtX%%y?a#y?&$Gnp-c|>1=uUI@dhGpYt#L0tN4ZYFTJ*AY zcm3b+@B6n~Z0r{Q7r4n^TY8mHu=1ugZkJMXGHPd3mtX&dTv+h#+`J9eicAGwtlGZvA}~Ute7nkE?j7rQX)we%0j9x$=F%vFf=x6YnnH`e9MG z-X*oDc>Q0$etmhz7$@_h^{mV5{(7soTQ0Y?wN2Ci|Npl2=Yrj*KIQ#?_&h*2IYnfS z-Lr#DJeG+T0!|#PQw}<)vv~L zgV>pAN2hV?@0k$1b*q@O+ucl;d6UFaWH(V3U(N5=eC9R3)4*@>dd=n;2HKk1 zpK@hx+1MI>>KDb^ zx!dpNZom6&V}EVVDVO}F#+%l7VnwQ99TNg~ImaL01V16wLTr}@?W|NH%Z(P`Zi zHu39SyTx?Zv7T$l+{Sg?Z}lYp#m$;K&AWDOo;O|9`&4L1IXvhR!Cw`i@pkUggGradO6GcR_i29GY`J0G{(rx|?|oluqI6lT=A`QM3k5#h?{98> zzwd7^Tc7CnFB`sGhnZpQzS)EHFH#ko9}RsY@@7+hmUZyK{R_<>wpok7bl8 z8@6$Bxc2XOv8dZ)f9kQ2(D3qe=evYHR(VNHEIkvZy?W|ZFPD-tR?qU5+A>K#&^76Q z!Yk!3ovmaO>t&s8@nS)&y)png&%89-e?B3EF{ELM0 zI?LN%87`NT5e+_8q<*p_%J9ADyT-|Twu-qwY1(|TuDspYf8Kp(Z^Nce6 zH^px>(%sZ@K)&KZ;~y73;nY>@UcYf$oO|Zst(ohlyBOWm_&L*M`uw7QcIDc=MVb9m z&!1SabvA$Z-^}-F&Ys8mf>VQ%tkPCby?QEZX|kB0Y;ph6z0Eh*SD0V&NI5DX5tVTA z)RB3iOXe~cvc0*Z9eaQCS&x?e)usC4KR!*7Xzf4RdF^dcCjY@_Ehfc}S0qVtY-t4!ZvR zO`uPV*P2wjp4tM-pEVIyyvKHL*_ONzREIHW>)IfO;Md4eUZoScxUEY zM(V5=)K#1B^xUIoVQ7X;mdNhZD}04XYa0)>J@yRyvNGuVmIJ|8M8ebT)|@CR)OmaQ z_mw8=6mC_SdnfKy!@P6vcu32TSTUamWPjd2hv3>S)5kuyb z{%iMsDBPI8M0x+Vkn-x(h_!3N!n9>Kcf6QUt@ieA`k_UFGq*jK;F#|rE`8Dai`>*j zFDHv{ss0qUMrm8w+bA)+gtaZl<*MIYp8wB8KjPwpW77FCn^HK9qZKEd@Q-`ItvYkA zd93P z?%>bKCZWc*ZcEMb?)|GobIVv~Pg zO`H zrfcK;jbEHg_VturpHhZMzMn(9s*fJ@%*<48ZPt0}{>6P4hiKx$yXo_5za6*#_woLp zv-kf*uC934D!%Xg-uHi>sN4VCd;j;|U_VRMHixM%48NaY|Ih#b1OL zQPX3~BsJIBXWRdKr2nt!j4=1}MU`iaZZF;PSoGcQ_jZ1vN^d=MURv!r%Hml)#o+Pw zjHG3cHK#kLE}pQ{YW0GTdY9~MY-GGUT)T~VuU!wLvCpz!y9{b7Eo2q>iceCE~tdU+?pxOBb7+ZV4tpSPE97n#@fd?~N^ z&AiI+&MnW68(;i!+vk?%>c82Jd^&m7Q>?ot`b|@xUt`pDIzV^H-1%Rwq{w#}PW;B< zWqlW31X!gBUNrRoo+4o-sGXBqGIzVj&jqhlrG8$o|9f5k+M*>#r%kz0zVGwg9bx8| z{QjKY|L62Xce#_#zwWA9a=y7{UCho;`TxJ=-=6fXXP3B_b^l3;H8VacgstqD==n0q z<h+Pqg~v9RK%KxP0Z4iPrCSJYKi^-K{;9pRe!xW?H6qr6Q&J?yl0aZsMWS z%iP>`V|Gk9&n;V9Yg-}v+U~;2!pqBiK?_WFPbo`NKcRkDuIk0Y2t!3BF_qKa)jFTW zF6~P=$iy`*?3rcpGnGr{etNbQ9**^sUyYpSzB}An?bC2n(eP-f+x44%)|!*1Wm>ph zfBECb+5Ec6+XDSuH??oHFx+5!?9m6YSMy$e@-X7rX!Bx0v(d}d9vOwJMVHFn-1qfb zbmrdF44ds|H)!Qex_-v#=*gcl|3C2m-|+OulC(>5{=Hx9J{(}?X+NcMcw5d*p(d}N zM}ksfZ0GWyRymwumsTP6{n(!H%*_67Bia14WAVk%TJyM$lGU?Jt+y+TZZ+>qtBO{V z+kUs~wtxMv%X>78Lgou~FLauj$twcy5>Z8?!o?j=26!ntGSmSQ;@$F#@S z)<#b}`DM=fjXqLU{ZowII{cdO=V4`LfAGg9QzuS2h;n%#GQx#T@F#_Z-~lY7SJZJK{QW3^jiyKJk{a@SK_yl#_z zZY>C~XI?w6`kkfA+_q121t(?M<$k+rf1oB;jw{ za{iR-RLcz$zIkXaZQjcKsd=(Q*O!^+Yt+*EwKUI!?|l^t+CO1@cE^gx^Z&h^?WZ7!1>i=G^m(4xxVa;Fte((2XlOtq)T6nLDSI71vGDbh*28vc;;kDG@!K zuZud3prwP5AgH;-!)ThfgZPdr@Y+HK^!;>h{BZ^mgyyH?Jf6n4EvA!>Sj zU1eGzn^Djlfvt}}WR$xFOmvY_mN{hTV6g0x&Pys z`K8MBpe^Rs|Nng6DEQNIk4Kx~1v@$W$_bMk|K2$ezVDOhwb>5@Os1aRxWI7V!&%wu z9u_9eZ57IVe%Z!Q8!k+28MHjL+M= zTr#;LqN|B1=UUAi$weZIr)V5LBe1m0UGpV!$v$}^PcrvTrAdi0v!{KVzW>kD6VYii z1bx?~%)X!%(z`9Z$YxFUfemtA{fjqnXvl1~`>2<@*xA|n=fSTj%U^8hP+NHF#r=I- zAFMc(x#7Yy`=68T9fK#H-?C-#8LN_XOOU z*U>s7(Y&z~M_^xI^K z)a3g-#j|><;9tY(!jGoMr7JF(+c#A*(|uL_@9p)oH#x1gVEOCz;N+JFJQp?}&i@@%ajlA53#wr1Z{NOm zEOduhxYrE}fWRD_=^Iv;c1$R`=={aIG;`uh0u z!Ns3F-%T+7@MfcqYuck5MVZe(8anHyAJPg$>19+pEwP=?vshNx)_aMq3-{6`o0HRA z>@S^@P`KopndvW-Y@+db*8C+01B{F!&fERYdB&r%df$(u`o~z9JQQ{pzLXG&x8N0v z)je@s zxYOm&lAoeev((;Z*qd*w`S}S{Vf!s#77=6arg?M@Lx;xp=^hsPpykzay_qaKVs?GC z)PFni)U6GP%vNv^xPP-neos$zwX{pn+%Cf)fna;;^XE-+}$xv)y0 z^og*fbHhYKm)bbp6Ge(|eS}X>SmxvPGWz~6u}Xz6`fU#v_dVG%OLyx5QA>O4g3kJ1 z%j><=S41%BvRS&OySLrg>>RaIzWR;f7ye##{jZ?YEY2>OyDcG)x!9SnXNvTGBb#p1 z#?PmJe$rcX?y>vzAh|~7$)*#$m&}ck_0!OQ+kz6ziI@EPJzbcr3K zIlXb0f4_aviQ41++vujz9fr%XQ$4Czm|pT$>-jh3 zg`x8luBCq$w##*;NR; z*88-sb4P?U&)%M+jW><&J~;h`@eTu9Q;LMYJKMTFhgEfVs+>RZKQYWA{bA8QmBShv zZC^JkKKS!8MIv*9#Mk~Ui=TS@zO>X^^Grr=_$^3tv@g=7tw-*C>?_~%-1fcWMg84xHf`A=ykupD7ij;%%zV3L>?+NT z6N>8=ovOaRDAK6sXod5wz)hF^taWS6mi)au|6fVZ?}zhd>M7W!>Ks>^bB9e+uWM;d zK)uhBqmz<(iVis|ocx)&!J}>A_bEdCCzV9*_?+pV{jT6-_8vbE>yrj;8fzmqD$NOw zyOrs@{qR!o;0&Zedral<3tP!ca@|Y|;!+Cd)qFbHvqd>y!|Jb~C)33m8Q$Ydj;!1B z$!p2nXODyZZADAdtvB_an;7SH-di;5Y)hC-pPteUZgIUQ1zh_J9z|T4zR>C7!HIt_ zRvf#vJeH}cSKLu~=k1cyMn>mLVoko*{WvVIrg*$~tIU=2ssd46O>;MLS7tsxH^1Uh z=fsHJYe`Q;(xDW2azMSFe za@=O+rF-vAr5L^xm1;iG+M*M^ttYkgVj9F#Y%G{fZ*9sTNKe@Ix`m*(& zFPFS6INz~z`g>bz>ug|=a{v41xqbRyR+b%)g1GP4tU7bP=Ch&e!Ja6SDU-REBue$V z-`dHw_Haeh3^9czvbxWAUidVjtYohA32$po<1<~|lR@2iXg^ln@mBfE9d9j^+P1j2 zd*4c2y!KnFezoMz`Fpl3u3TSrb@ip96M^~bTzOQKCjIL;Q!(}8m6VmOXNva4%zeqk zHM?JuL-aM<hn_c)(G3vH-Dprq}IInIXzc}Gh$QQRUU7x)%Eyqp!Dxp)tcDd z)A)_Y*|r^zW2yC-ht5^m_*q!SsHm-+nZyq8%s zx0Do%SQ_6s0BRCn_P3XJjU@yzeq*;6zh@7ZGi<3Y1wWR8gJ+czca zQ-0~16fsx`x?a1H()6zK9X*UMOQL(8GCN)8ypsj)U(?YT7*FpX|gZVs%Jqr}q z9hÙwD)EiOkl@@)w)=F@!3Ss@<$=}NHw#!C{9PHp8{I@d;?y~t^u+~n(R=QSpl zEj#Gs>)HJAhXmgeI{u8uW! zpH3)eX6o};IU2EtsZDpA)uqax)TgT_yDM(r6(^5sA71ItZWj-KI&S~3&~3?N&J9k@ zp3Mtq8S*=HZc%rhGAVDd%CUeLIr+@G^(mg%sBdEdBjC?uFX~L-lyj5 zK4hq)EVh3|R{y~GhL)R(Y6JR`0wUD+ME(L*iODrV8L@As

IX=_@qedOp9HVdu8r{@=&`=S$~4dpsds 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 diff --git a/doc/qtdesignstudio/src/qtdesignstudio-examples.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-examples.qdoc index 8a0f9fa3983..f7bd979b442 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-examples.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-examples.qdoc @@ -35,20 +35,18 @@ \image studio-examples-download.png "Examples for download in Welcome mode" To run an example project: + \list 1 - \li Select the example. - \li Select the \inlineimage icons/live_preview.png - (\uicontrol {Show Live Preview}) button to preview the example. + \li Select the example project to open it. \QDS makes all necessary + downloads. + \li Select \inlineimage icons/run_small.png + (\uicontrol {Run}) to run the example. \endlist - Some of the example projects require that you download them before you can run them, to do this: - \list 1 - \li Select an example. - \li Select \uicontrol {Start Download}. - \li Select the folder where the source files will be installed. - \li Select \uicontrol Continue to install the files. - \li Select \uicontrol Open to open the example in \QDS. - \endlist + If there is an update available for an example project that you have + installed, it is indicated by a yellow icon next to the example project name + on the \uicontrol Welcome page. Select the icon to download the latest + version of the example project. \section1 Example Documentation From 4d7c2ae54edc2628252ca1b376c23487c433d8b6 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 23 Feb 2022 10:28:52 +0100 Subject: [PATCH 23/45] Nanotrace: Fix compile on Linux When using older compilers with Qt5.15. Change-Id: Ib3d05efaa22b22af202fec8940f774af0029ca24 Reviewed-by: Knud Dollereder --- src/libs/nanotrace/nanotrace.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/nanotrace/nanotrace.h b/src/libs/nanotrace/nanotrace.h index ea26487e408..e71e6e8c19b 100644 --- a/src/libs/nanotrace/nanotrace.h +++ b/src/libs/nanotrace/nanotrace.h @@ -35,6 +35,7 @@ #include // revert when macos minimum target is >= 10.14 +#include #include #include From 08d1f30d4a9d6fd42c18bef95c6990a749604d2f Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Tue, 22 Feb 2022 21:47:29 +0200 Subject: [PATCH 24/45] QmlDesigner: Clear assets search when adding assets Fixes: QDS-6195 Change-Id: I80c078d3b182bfa76980191bd875d76cb5683854 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- .../components/assetslibrary/assetslibrarywidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp index 0ead75ccea3..21478fd39d3 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp @@ -321,6 +321,8 @@ static QHash allImageFormats() void AssetsLibraryWidget::addResources(const QStringList &files) { + clearSearchFilter(); + DesignDocument *document = QmlDesignerPlugin::instance()->currentDesignDocument(); QTC_ASSERT(document, return); From 7b82b55b73f7c788bf8cb48a30b032a42cf93bcb Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 22 Feb 2022 14:17:31 +0100 Subject: [PATCH 25/45] ClangCodeModel: Don't highlight streaming operator args as outputs ... with clangd. As with operator++ etc, it's immediately obvious to a developer which arguments are modified. Change-Id: Ia2b15d5eef7848b7ed284f8d544f039fe2927292 Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 5 +++-- src/plugins/clangcodemodel/test/clangdtests.cpp | 3 +++ .../test/data/highlighting/highlighting.cpp | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index effe6a1f760..d0a54042df9 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2706,8 +2706,9 @@ static void semanticHighlighter(QFutureInterface &future, const AstNode n = firstChildTree.takeFirst(); const QString detail = n.detail().value_or(QString()); if (detail.startsWith("operator")) { - return !detail.contains('=') && !detail.contains("++") - && !detail.contains("--"); + return !detail.contains('=') + && !detail.contains("++") && !detail.contains("--") + && !detail.contains("<<") && !detail.contains(">>"); } firstChildTree << n.children().value_or(QList()); } diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index d03fcc2c896..6efddf7c20a 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1295,6 +1295,9 @@ void ClangdTestHighlighting::test_data() QTest::newRow("keywords: true") << 920 << 15 << 920 << 19 << QList{C_KEYWORD} << 0; QTest::newRow("keywords: false") << 921 << 15 << 921 << 20 << QList{C_KEYWORD} << 0; QTest::newRow("keywords: nullptr") << 922 << 15 << 922 << 22 << QList{C_KEYWORD} << 0; + QTest::newRow("operator<<") << 934 << 10 << 934 << 14 << QList{C_GLOBAL} << 0; + QTest::newRow("operator>>") << 936 << 10 << 936 << 13 << QList{C_GLOBAL} << 0; + QTest::newRow("operator>>") << 936 << 17 << 936 << 18 << QList{C_LOCAL} << 0; } void ClangdTestHighlighting::test() diff --git a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp index c54dfe13710..40a4ef23b4c 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -921,3 +921,17 @@ void keywords() bool b2 = false; void *p = nullptr; } + +namespace std { +struct Debug {}; +Debug& operator<<(Debug &dbg, int) { return dbg; } +Debug& operator>>(Debug &dbg, int&) { return dbg; } +static Debug cout; +static Debug cin; +} +void outputOperator() +{ + std::cout << 0; + int i; + std::cin >> i; +} From cf902649713ed2fd584e5aca89328c4f99ca0223 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 22 Feb 2022 15:27:47 +0100 Subject: [PATCH 26/45] ClangCodeModel: Fix more false output arguments with clangd For some reason, we never checked the actual matching AST node for const-ness. Change-Id: Icb58ba169d82e1ec02c9ff8d17f0170f0a78f99d Reviewed-by: Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 2 ++ src/plugins/clangcodemodel/test/clangdtests.cpp | 4 ++++ .../test/data/highlighting/highlighting.cpp | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index d0a54042df9..50bd7ee24ab 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2675,6 +2675,8 @@ static void semanticHighlighter(QFutureInterface &future, || path.rbegin()->kind() == "CXXConstruct")) { return false; } + if (path.rbegin()->hasConstType()) + return false; for (auto it = path.rbegin() + 1; it != path.rend(); ++it) { if (it->kind() == "Call" || it->kind() == "CXXConstruct" || it->kind() == "MemberInitializer") { diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index 6efddf7c20a..98e720ba25c 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1298,6 +1298,10 @@ void ClangdTestHighlighting::test_data() QTest::newRow("operator<<") << 934 << 10 << 934 << 14 << QList{C_GLOBAL} << 0; QTest::newRow("operator>>") << 936 << 10 << 936 << 13 << QList{C_GLOBAL} << 0; QTest::newRow("operator>>") << 936 << 17 << 936 << 18 << QList{C_LOCAL} << 0; + QTest::newRow("input arg from passed object") << 945 << 17 << 945 << 18 + << QList{C_FIELD} << 0; + QTest::newRow("output arg") << 945 << 20 << 945 << 23 + << QList{C_LOCAL, C_OUTPUT_ARGUMENT} << 0; } void ClangdTestHighlighting::test() diff --git a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp index 40a4ef23b4c..6230e7f0392 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -935,3 +935,12 @@ void outputOperator() int i; std::cin >> i; } + +template +void transform(const From &from, To &&to, Op op) {} +struct WithVector { std::vector v; }; +void inputsAndOutputsFromObject(const WithVector &s) +{ + std::vector out; + transform(s.v, out, [] {}); +} From 6e366c0823f0ff40273614cd905b58c2729d93ab Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 23 Feb 2022 09:52:39 +0100 Subject: [PATCH 27/45] Doc: Replace "New File or Project" with "New Project" or "New File" We missed the .qdocinc files. Update the screenshot. Task-number: QTCREATORBUG-26610 Change-Id: Ic5a86c94e995a209c2139976ed645b7f71556b37 Reviewed-by: Mats Honkamaa Reviewed-by: Eike Ziller --- .../images/qtcreator-custom-wizard.png | Bin 17411 -> 12621 bytes ...eator-projects-custom-wizards-json.qdocinc | 26 +++++++++--------- .../creator-projects-custom-wizards.qdoc | 6 ++-- ...uick-tutorial-create-empty-project.qdocinc | 4 +-- .../src/qtdesignstudio-components.qdocinc | 4 +-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-custom-wizard.png b/doc/qtcreator/images/qtcreator-custom-wizard.png index 818380aac3594e16e218effc883285a4becb5788..73d3b417b8350eb6032636ef4653420802e2dd2d 100644 GIT binary patch literal 12621 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 Iol`;+0PdBXrT_o{ literal 17411 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 Tw6`Gx0|SGntDnm{r-UW|qvAsY diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc index 62ef588555b..44fe1cc1f56 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -114,7 +114,7 @@ \c {share/qtcreator/templates/wizards/classes/mycpp} \li Use the \uicontrol {Factory.Reset} action to make the wizard appear - in \uicontrol File > \uicontrol {New File or Project} without + in \uicontrol File > \uicontrol {New File} without restarting \QC. \li Open the wizard configuration file, \c {wizard.json} for editing: @@ -122,7 +122,7 @@ \list \li The following settings determine the type of the wizard and - its place in the \uicontrol {New File or Project} dialog: + its place in the \uicontrol {New File} dialog: \code "version": 1, @@ -163,14 +163,14 @@ \li \c category is the category in which to place the wizard in the list. You can use a leading letter to specify the position of the category in the list in the - \uicontrol {New File or Project} dialog. + \uicontrol {New File} dialog. This information is available in the wizard as \c {%\{category\}}. \endlist \li The following settings specify the icon and text that appear in - the \uicontrol {New File or Project} dialog: + the \uicontrol {New File} dialog: \code "trDescription": "Creates a C++ header and a source file for a new class that you can add to a C++ project.", @@ -194,9 +194,8 @@ This information is available in the wizard as \c {%\{trDisplayName\}}. - \li \c trDisplayCategory appears in the - \uicontrol {New File or Project} dialog, under - \uicontrol Projects. + \li \c trDisplayCategory appears in the \uicontrol {New File} + dialog, under \uicontrol {Files and Classes}. This information is available in the wizard as \c {%\{trDisplayCategory\}}. @@ -231,9 +230,9 @@ \c{false}. \li \c enabled is evaluated to determine whether a wizard is - listed in \uicontrol Files > - \uicontrol {New File or Project}, after \c featuresRequired - has been checked. + listed in \uicontrol File > \uicontrol {New Project} or + \uicontrol {New File}, after \c featuresRequired has been + checked. The default value is \c true. @@ -373,7 +372,8 @@ instance of \QC. \li \c Platform contains the platform selected in the \uicontrol File > - \uicontrol {New File or Project} dialog. This value may be empty. + \uicontrol {New Project} or \uicontrol {New File} dialog. This value + may be empty. \endlist The following information is only available when the wizard was triggered @@ -487,7 +487,7 @@ \endcode The page evaluates \c {%\{Platform\}} to set the platform selected in - \uicontrol File > \uicontrol {New File or Project}. + \uicontrol File > \uicontrol {New Project} or \uicontrol {New File}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc index 0a4fc154023..c9f5cc6e5a4 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -59,8 +59,8 @@ wizard directory and instruct the recipients to extract it into one of the directories \QC searches wizards from. - \QC displays the wizards that it finds in the - \uicontrol {New File} and \uicontrol {New Project} dialogs. For each wizard, an icon (1), a + \QC displays the wizards that it finds in the \uicontrol {New Project} + and \uicontrol {New File} dialogs. For each wizard, an icon (1), a display name (2), and a description (3) are displayed. \image qtcreator-custom-wizard.png diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc index 3eb7e5401fb..4462b218139 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -30,7 +30,7 @@ \list 1 - \li Select \uicontrol File > \uicontrol {New File or Project} > + \li Select \uicontrol File > \uicontrol {New Project} > \uicontrol {Application (Qt)} > \uicontrol {Qt Quick Application}. \li Select \uicontrol Choose to open the diff --git a/doc/qtdesignstudio/src/qtdesignstudio-components.qdocinc b/doc/qtdesignstudio/src/qtdesignstudio-components.qdocinc index e319a0042b9..17701d3328b 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-components.qdocinc +++ b/doc/qtdesignstudio/src/qtdesignstudio-components.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Design Studio documentation. @@ -61,7 +61,7 @@ To create stylable UI controls: \list 1 - \li Select \uicontrol File > \uicontrol {New File or Project} > + \li Select \uicontrol File > \uicontrol {New File} > \uicontrol {Files and Classes} > \uicontrol {Qt Quick Controls}. \li Select the control to create, and then select \uicontrol Choose. From a62aef243886e5f76e1d426be52abe45a28e80d2 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Feb 2022 13:39:17 +0100 Subject: [PATCH 28/45] QmlDesigner: Set proper size if there is no project import Change-Id: I29d8dbbac49c694439a600cfe393c6a475362714 Reviewed-by: Thomas Hartmann --- .../qmldesigner/studio_templates/files/flowitem/file.qml.tpl | 5 +++++ .../qmldesigner/studio_templates/files/flowview/file.qml.tpl | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl index f56eddde9d9..c9fa8671cda 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/flowitem/file.qml.tpl @@ -15,6 +15,11 @@ import %{ApplicationImport} import FlowView 1.0 FlowItem { +@if %{UseImport} width: Constants.width height: Constants.height +@else + width: 800 + height: 600 +@endif } diff --git a/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl index 07de025d541..1c8d7f0a075 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/files/flowview/file.qml.tpl @@ -12,8 +12,13 @@ import %{ApplicationImport} import FlowView 1.0 FlowView { +@if %{UseImport} width: Constants.width height: Constants.height +@else + width: 800 + height: 600 +@endif defaultTransition: FlowTransition { id: defaultTransition From ed21e25e143e5f899879d8bd6fd0ec682fe5956a Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 23 Feb 2022 13:22:40 +0200 Subject: [PATCH 29/45] CrashPad: Remove the 1 crash per hour limitation Change-Id: Ie7634012f15059fd204cb03e37afd3d63d7bfb29 Reviewed-by: Miikka Heikkinen Reviewed-by: Reviewed-by: Thomas Hartmann --- share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppetmain.cpp | 1 + src/app/main.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppetmain.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppetmain.cpp index d5371e4b5e4..8b6135c6222 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppetmain.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppetmain.cpp @@ -125,6 +125,7 @@ bool startCrashpad() // Optional arguments to pass to the handler std::vector arguments; + arguments.push_back("--no-rate-limit"); CrashpadClient *client = new CrashpadClient(); bool success = client->StartHandler( diff --git a/src/app/main.cpp b/src/app/main.cpp index 42557c3d2b7..a4ef3eea329 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -438,6 +438,7 @@ bool startCrashpad(const QString &libexecPath, bool crashReportingEnabled) // Optional arguments to pass to the handler std::vector arguments; + arguments.push_back("--no-rate-limit"); CrashpadClient *client = new CrashpadClient(); bool success = client->StartHandler( From 98a9dcfeea70fd51ce40a0553fa6067a2237b559 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 23 Feb 2022 13:21:39 +0100 Subject: [PATCH 30/45] LanguageClient: show snippets only completion proposals again This reverts commit 5f1e6b15bf6d2af24ab4b5b500e6ba36a79600e7. We already prevent inserting snippets in some unwanted contexts in ClangdCompletionAssistProvider::createProcessor. Fixes: QTCREATORBUG-27051 Change-Id: I292d2816b366df6f0d0b070b7d732c199742fc7e Reviewed-by: Reviewed-by: Christian Kandeler --- src/plugins/languageclient/languageclientcompletionassist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index bce818f96a9..3cec5a2e491 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -427,7 +427,7 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse( items = Utils::get>(*result); } auto proposalItems = generateCompletionItems(items); - if (!proposalItems.isEmpty() && !m_snippetsGroup.isEmpty()) { + if (!m_snippetsGroup.isEmpty()) { proposalItems << TextEditor::SnippetAssistCollector( m_snippetsGroup, QIcon(":/texteditor/images/snippet.png")).collect(); } From 59982f1ca90e380088d792fd0865624462397b01 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Feb 2022 16:01:05 +0100 Subject: [PATCH 31/45] QmlDesigner: Remove superfluous update Change-Id: I3bc4fc4b480e9cb895357580968c6568e7150cbb Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/itemlibrary/itemlibrarymodel.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp index 9c856c99289..e1d078306ce 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp @@ -234,8 +234,6 @@ void ItemLibraryModel::showAllHiddenCategories() void ItemLibraryModel::setFlowMode(bool b) { m_flowMode = b; - bool changed; - updateVisibility(&changed); } ItemLibraryModel::ItemLibraryModel(QObject *parent) From 52e26a360b676c23f9b37261c3616baad3b6fe5d Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 18 Feb 2022 14:28:34 +0100 Subject: [PATCH 32/45] Fix newly introduced warnings Change-Id: I0b9cf3496d536e1173fbd6587e5b491305eb876c Reviewed-by: Christian Stenger Reviewed-by: --- src/plugins/android/androiddevice.cpp | 2 +- src/plugins/imageviewer/imageview.cpp | 2 - src/plugins/mcusupport/mcukitmanager.cpp | 14 -- src/plugins/mcusupport/mcupackage.cpp | 2 +- src/plugins/mcusupport/mcusupportoptions.cpp | 159 ------------------ .../components/formeditor/formeditoritem.cpp | 3 + src/plugins/studiowelcome/examplecheckout.cpp | 6 +- .../studiowelcome/studiowelcomeplugin.cpp | 4 + 8 files changed, 12 insertions(+), 180 deletions(-) diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index f6e036b1d68..8a795780519 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -573,7 +573,7 @@ void AndroidDeviceManager::setupDevicesWatcher() []() { qCDebug(androidDeviceLog) << "ADB device watcher finished."; }); connect(m_adbDeviceWatcherProcess.get(), &Utils::QtcProcess::errorOccurred, this, - [this](QProcess::ProcessError error) { + [this](QProcess::ProcessError) { qCDebug(androidDeviceLog) << "ADB device watcher encountered an error:" << m_adbDeviceWatcherProcess->errorString(); if (!m_adbDeviceWatcherProcess->isRunning()) { diff --git a/src/plugins/imageviewer/imageview.cpp b/src/plugins/imageviewer/imageview.cpp index c5ef478e595..eebf8097bc0 100644 --- a/src/plugins/imageviewer/imageview.cpp +++ b/src/plugins/imageviewer/imageview.cpp @@ -276,8 +276,6 @@ void ImageView::doScale(qreal factor) void ImageView::wheelEvent(QWheelEvent *event) { qreal factor = qPow(Constants::DEFAULT_SCALE_FACTOR, event->angleDelta().y() / 240.0); - qreal currentScale = transform().m11(); - qreal newScale = currentScale * factor; // cap to 0.001 - 1000 qreal actualFactor = qBound(0.001, factor, 1000.0); doScale(actualFactor); diff --git a/src/plugins/mcusupport/mcukitmanager.cpp b/src/plugins/mcusupport/mcukitmanager.cpp index 6b52b475cb0..a563a3828a3 100644 --- a/src/plugins/mcusupport/mcukitmanager.cpp +++ b/src/plugins/mcusupport/mcukitmanager.cpp @@ -57,15 +57,6 @@ namespace McuKitManager { static const int KIT_VERSION = 9; // Bumps up whenever details in Kit creation change -static FilePath qulDocsDir() -{ - const FilePath qulDir = McuSupportOptions::qulDirFromSettings(); - if (qulDir.isEmpty() || !qulDir.exists()) - return {}; - const FilePath docsDir = qulDir.pathAppended("docs"); - return docsDir.exists() ? docsDir : FilePath(); -} - static void setKitToolchains(Kit *k, const McuToolChainPackage *tcPackage) { switch (tcPackage->toolchainType()) { @@ -168,11 +159,6 @@ static void setKitDevice(Kit *k, const McuTarget *mcuTarget) DeviceTypeKitAspect::setDeviceTypeId(k, Constants::DEVICE_TYPE); } -static bool expectsCmakeVars(const McuTarget *mcuTarget) -{ - return mcuTarget->qulVersion() >= QVersionNumber{2, 0}; -} - static void setKitDependencies(Kit *k, const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdkPackage) diff --git a/src/plugins/mcusupport/mcupackage.cpp b/src/plugins/mcusupport/mcupackage.cpp index 197389515aa..f4ca09355e4 100644 --- a/src/plugins/mcusupport/mcupackage.cpp +++ b/src/plugins/mcusupport/mcupackage.cpp @@ -63,10 +63,10 @@ McuPackage::McuPackage(const QString &label, , m_detectionPath(detectionPath) , m_settingsKey(settingsKey) , m_versionDetector(versionDetector) + , m_relativePathModifier(relativePathModifier) , m_environmentVariableName(envVarName) , m_downloadUrl(downloadUrl) , m_addToSystemPath(addToSystemPath) - , m_relativePathModifier(relativePathModifier) { m_path = Sdk::packagePathFromSettings(settingsKey, QSettings::UserScope, m_defaultPath); } diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index cc61de078a4..df06b96767e 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -163,73 +163,6 @@ void McuSupportOptions::remapQul2xCmakeVars(Kit *kit, const EnvironmentItems &en CMakeConfigurationKitAspect::setConfiguration(kit, config); } -static void setKitToolchains(Kit *k, const McuToolChainPackage *tcPackage) -{ - switch (tcPackage->toolchainType()) { - case McuToolChainPackage::ToolChainType::Unsupported: - return; - - case McuToolChainPackage::ToolChainType::GHS: - case McuToolChainPackage::ToolChainType::GHSArm: - return; // No Green Hills toolchain, because support for it is missing. - - case McuToolChainPackage::ToolChainType::IAR: - case McuToolChainPackage::ToolChainType::KEIL: - case McuToolChainPackage::ToolChainType::MSVC: - case McuToolChainPackage::ToolChainType::GCC: - case McuToolChainPackage::ToolChainType::ArmGcc: - ToolChainKitAspect::setToolChain(k, - tcPackage->toolChain( - ProjectExplorer::Constants::C_LANGUAGE_ID)); - ToolChainKitAspect::setToolChain(k, - tcPackage->toolChain( - ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - return; - - default: - Q_UNREACHABLE(); - } -} - -static void setKitDebugger(Kit *k, const McuToolChainPackage *tcPackage) -{ - if (tcPackage->isDesktopToolchain()) { - // Qt Creator seems to be smart enough to deduce the right Kit debugger from the ToolChain - return; - } - - switch (tcPackage->toolchainType()) { - case McuToolChainPackage::ToolChainType::Unsupported: - case McuToolChainPackage::ToolChainType::GHS: - case McuToolChainPackage::ToolChainType::GHSArm: - case McuToolChainPackage::ToolChainType::IAR: - return; // No Green Hills and IAR debugger, because support for it is missing. - - case McuToolChainPackage::ToolChainType::KEIL: - case McuToolChainPackage::ToolChainType::MSVC: - case McuToolChainPackage::ToolChainType::GCC: - case McuToolChainPackage::ToolChainType::ArmGcc: { - const QVariant debuggerId = tcPackage->debuggerId(); - if (debuggerId.isValid()) { - Debugger::DebuggerKitAspect::setDebugger(k, debuggerId); - } - return; - } - - default: - Q_UNREACHABLE(); - } -} - -static void setKitDevice(Kit *k, const McuTarget *mcuTarget) -{ - // "Device Type" Desktop is the default. We use that for the Qt for MCUs Desktop Kit - if (mcuTarget->toolChainPackage()->isDesktopToolchain()) - return; - - DeviceTypeKitAspect::setDeviceTypeId(k, Constants::DEVICE_TYPE); -} - static bool expectsCmakeVars(const McuTarget *mcuTarget) { return mcuTarget->qulVersion() >= QVersionNumber{2, 0}; @@ -270,28 +203,6 @@ void McuSupportOptions::setKitEnvironment(Kit *k, EnvironmentKitAspect::setEnvironmentChanges(k, changes); } -static void setKitDependencies(Kit *k, - const McuTarget *mcuTarget, - const McuAbstractPackage *qtForMCUsSdkPackage) -{ - NameValueItems dependencies; - - auto processPackage = [&dependencies](const McuAbstractPackage *package) { - if (!package->environmentVariableName().isEmpty()) - dependencies.append({package->environmentVariableName(), - package->detectionPath().toUserOutput()}); - }; - for (auto package : mcuTarget->packages()) - processPackage(package); - processPackage(qtForMCUsSdkPackage); - - McuDependenciesKitAspect::setDependencies(k, dependencies); - - auto irrelevant = k->irrelevantAspects(); - irrelevant.insert(McuDependenciesKitAspect::id()); - k->setIrrelevantAspects(irrelevant); -} - void McuSupportOptions::updateKitEnvironment(Kit *k, const McuTarget *mcuTarget) { EnvironmentItems changes = EnvironmentKitAspect::environmentChanges(k); @@ -318,76 +229,6 @@ void McuSupportOptions::updateKitEnvironment(Kit *k, const McuTarget *mcuTarget) EnvironmentKitAspect::setEnvironmentChanges(k, changes); } -static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePath &qulDir) -{ - using namespace CMakeProjectManager; - - CMakeConfig config = CMakeConfigurationKitAspect::configuration(k); - // CMake ToolChain file for ghs handles CMAKE_*_COMPILER autonomously - if (mcuTarget->toolChainPackage()->toolchainType() != McuToolChainPackage::ToolChainType::GHS - && mcuTarget->toolChainPackage()->toolchainType() != McuToolChainPackage::ToolChainType::GHSArm) { - config.append(CMakeConfigItem("CMAKE_CXX_COMPILER", "%{Compiler:Executable:Cxx}")); - config.append(CMakeConfigItem("CMAKE_C_COMPILER", "%{Compiler:Executable:C}")); - } - - if (!mcuTarget->toolChainPackage()->isDesktopToolchain()) { - const FilePath cMakeToolchainFile = qulDir.pathAppended( - "lib/cmake/Qul/toolchain/" + mcuTarget->toolChainPackage()->cmakeToolChainFileName()); - - config.append( - CMakeConfigItem("CMAKE_TOOLCHAIN_FILE", cMakeToolchainFile.toString().toUtf8())); - if (!cMakeToolchainFile.exists()) { - printMessage(McuTarget::tr( - "Warning for target %1: missing CMake toolchain file expected at %2.") - .arg(McuKitManager::kitName(mcuTarget), - cMakeToolchainFile.toUserOutput()), - false); - } - } - - const FilePath generatorsPath = qulDir.pathAppended("/lib/cmake/Qul/QulGenerators.cmake"); - config.append(CMakeConfigItem("QUL_GENERATORS", generatorsPath.toString().toUtf8())); - if (!generatorsPath.exists()) { - printMessage(McuTarget::tr("Warning for target %1: missing QulGenerators expected at %2.") - .arg(McuKitManager::kitName(mcuTarget), generatorsPath.toUserOutput()), - false); - } - - config.append(CMakeConfigItem("QUL_PLATFORM", mcuTarget->platform().name.toUtf8())); - - if (mcuTarget->colorDepth() != McuTarget::UnspecifiedColorDepth) - config.append(CMakeConfigItem("QUL_COLOR_DEPTH", - QString::number(mcuTarget->colorDepth()).toLatin1())); - if (McuSupportOptions::kitsNeedQtVersion()) - config.append(CMakeConfigItem("CMAKE_PREFIX_PATH", "%{Qt:QT_INSTALL_PREFIX}")); - CMakeConfigurationKitAspect::setConfiguration(k, config); - - if (HostOsInfo::isWindowsHost()) { - auto type = mcuTarget->toolChainPackage()->toolchainType(); - if (type == McuToolChainPackage::ToolChainType::GHS || type == McuToolChainPackage::ToolChainType::GHSArm) { - // See https://bugreports.qt.io/browse/UL-4247?focusedCommentId=565802&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-565802 - // and https://bugreports.qt.io/browse/UL-4247?focusedCommentId=565803&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-565803 - CMakeGeneratorKitAspect::setGenerator(k, "NMake Makefiles JOM"); - } - } -} - -static void setKitQtVersionOptions(Kit *k) -{ - if (!McuSupportOptions::kitsNeedQtVersion()) - QtSupport::QtKitAspect::setQtVersion(k, nullptr); - // else: auto-select a Qt version -} - -static FilePath kitDependencyPath(const Kit *kit, const QString &variableName) -{ - for (const NameValueItem &nameValueItem : EnvironmentKitAspect::environmentChanges(kit)) { - if (nameValueItem.name == variableName) - return FilePath::fromUserInput(nameValueItem.value); - } - return FilePath(); -} - McuKitManager::UpgradeOption McuSupportOptions::askForKitUpgrades() { QMessageBox upgradePopup(Core::ICore::dialogParent()); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp index 95d92e68fe9..4146b066489 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp @@ -2246,6 +2246,9 @@ void FormEditor3dPreview::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_UNUSED(option) + Q_UNUSED(widget) + if (!painter->isActive()) return; diff --git a/src/plugins/studiowelcome/examplecheckout.cpp b/src/plugins/studiowelcome/examplecheckout.cpp index 06d37a39317..cb7018bf3d9 100644 --- a/src/plugins/studiowelcome/examplecheckout.cpp +++ b/src/plugins/studiowelcome/examplecheckout.cpp @@ -106,7 +106,7 @@ void FileDownloader::start() emit progressChanged(); }); - QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &url) { + QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &) { emit reply->redirectAllowed(); }); @@ -188,7 +188,7 @@ void FileDownloader::probeUrl() QNetworkRequest::UserVerifiedRedirectPolicy); QNetworkReply *reply = Utils::NetworkAccessManager::instance()->head(request); - QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &url) { + QNetworkReply::connect(reply, &QNetworkReply::redirected, [reply](const QUrl &) { emit reply->redirectAllowed(); }); @@ -217,7 +217,7 @@ void FileDownloader::probeUrl() QNetworkReply::connect(reply, &QNetworkReply::errorOccurred, this, - [this, reply](QNetworkReply::NetworkError code) { + [this, reply](QNetworkReply::NetworkError) { QQmlData *data = QQmlData::get(this, false); if (!data) { qDebug() << Q_FUNC_INFO << "FileDownloader is nullptr."; diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index ab4cf65f19c..c3204c0142b 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -274,6 +274,10 @@ public: const QString &tempFile, const QString &completeBaseName) { + Q_UNUSED(url) + Q_UNUSED(explicitQmlproject) + Q_UNUSED(tempFile) + Q_UNUSED(completeBaseName) const Utils::FilePath projectFile = Core::ICore::resourcePath("examples") / example / example + ".qmlproject"; ProjectExplorer::ProjectExplorerPlugin::openProjectWelcomePage(projectFile.toString()); From 5c13dd1ac117aad5a43418ae21c8771ebb9001a1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Feb 2022 16:07:34 +0100 Subject: [PATCH 33/45] QmlDesigner: Optimize setResourcePath() Only update the resource path if it is actually different. Change-Id: Iaabe3129c9a094a6166a17cd9cba56c123221fba Reviewed-by: Mahmoud Badri --- .../components/assetslibrary/assetslibraryview.cpp | 6 ++++++ .../components/assetslibrary/assetslibraryview.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp index 937587d3c11..8b0a2cda8a2 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp @@ -126,6 +126,12 @@ void AssetsLibraryView::modelAboutToBeDetached(Model *model) void AssetsLibraryView::setResourcePath(const QString &resourcePath) { + + if (resourcePath == m_lastResourcePath) + return; + + m_lastResourcePath = resourcePath; + if (m_widget.isNull()) { m_widget = new AssetsLibraryWidget{m_imageCacheData->cache, m_imageCacheData->asynchronousFontImageCache, diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.h b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.h index 79fbde852f9..ae623a183b3 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.h +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.h @@ -62,6 +62,7 @@ private: std::once_flag imageCacheFlag; std::unique_ptr m_imageCacheData; QPointer m_widget; + QString m_lastResourcePath; }; } From 24274cd90702606583d7ce6275e112a6ffcfb1ae Mon Sep 17 00:00:00 2001 From: Tapani Mattila Date: Tue, 22 Feb 2022 19:09:41 +0200 Subject: [PATCH 34/45] CMake project converter: Enable only if project is old format Task-number: QDS-6250 Change-Id: I41ca02ff76e53cb7470056b2f956b05d2027e773 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- .../qmldesigner/cmakeprojectconverter.cpp | 37 ++++++++++++++++++- .../qmldesigner/cmakeprojectconverter.h | 2 + 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.cpp b/src/plugins/qmldesigner/cmakeprojectconverter.cpp index 87c87317085..9d1320438db 100644 --- a/src/plugins/qmldesigner/cmakeprojectconverter.cpp +++ b/src/plugins/qmldesigner/cmakeprojectconverter.cpp @@ -65,13 +65,46 @@ void CmakeProjectConverter::generateMenuEntry() Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.ConvertToCmakeProject"); menu->addAction(cmd, Core::Constants::G_FILE_EXPORT); - action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr); + action->setEnabled(isProjectConvertable(ProjectExplorer::SessionManager::startupProject())); QObject::connect(ProjectExplorer::SessionManager::instance(), &ProjectExplorer::SessionManager::startupProjectChanged, [action]() { - action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr); + action->setEnabled(isProjectConvertable(ProjectExplorer::SessionManager::startupProject())); }); } +bool CmakeProjectConverter::isProjectConvertable(const ProjectExplorer::Project *project) +{ + if (!project) + return false; + + return !isProjectCurrentFormat(project); +} + +const QStringList sanityCheckFiles({FILENAME_CMAKELISTS, + FILENAME_MODULES, + FILENAME_MAINQML, + QString(DIRNAME_CONTENT)+'/'+FILENAME_CMAKELISTS, + QString(DIRNAME_IMPORT)+'/'+FILENAME_CMAKELISTS, + QString(DIRNAME_CPP)+'/'+FILENAME_MAINCPP, + QString(DIRNAME_CPP)+'/'+FILENAME_ENV_HEADER, + QString(DIRNAME_CPP)+'/'+FILENAME_MAINCPP_HEADER + }); + +bool CmakeProjectConverter::isProjectCurrentFormat(const ProjectExplorer::Project *project) +{ + const QmlProjectManager::QmlProject *qmlprj = qobject_cast(project); + + if (!qmlprj) + return false; + + FilePath rootDir = qmlprj->rootProjectDirectory(); + for (const QString &file : sanityCheckFiles) + if (!rootDir.pathAppended(file).exists()) + return false; + + return true; +} + void CmakeProjectConverter::onConvertProject() { ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject(); diff --git a/src/plugins/qmldesigner/cmakeprojectconverter.h b/src/plugins/qmldesigner/cmakeprojectconverter.h index 3356311aa22..c5f4361cb11 100644 --- a/src/plugins/qmldesigner/cmakeprojectconverter.h +++ b/src/plugins/qmldesigner/cmakeprojectconverter.h @@ -51,6 +51,8 @@ public: const Utils::FilePath &targetDir); static void generateMenuEntry(); static void onConvertProject(); + static bool isProjectConvertable(const ProjectExplorer::Project *project); + static bool isProjectCurrentFormat(const ProjectExplorer::Project *project); private: bool prepareAndExecute(); From fff5944e65db76b447ef6d9579f80fa4eb45d63f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 16 Feb 2022 14:32:48 +0100 Subject: [PATCH 35/45] Fix lupdate issues When updating translations with cmake --build . --target ts_de (or other language ID) - Qualifying with unknown namespace/class ::PluginSpecPrivate - lacks Q_OBJECT macro Change-Id: Ic42d8dffea935e6b10e59223bdedb9a8a4dcf446 Reviewed-by: hjk --- src/libs/extensionsystem/pluginspec.cpp | 97 +++++++++++++------ src/libs/utils/qtcprocess.cpp | 2 +- src/plugins/android/androiddevice.cpp | 3 +- src/plugins/clangcodemodel/clangdclient.cpp | 2 +- .../studiowelcome/studiowelcomeplugin.h | 2 + src/plugins/welcome/welcomeplugin.cpp | 2 + 6 files changed, 74 insertions(+), 34 deletions(-) diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp index f4b1b93c861..92c7095efd6 100644 --- a/src/libs/extensionsystem/pluginspec.cpp +++ b/src/libs/extensionsystem/pluginspec.cpp @@ -723,8 +723,10 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData) } value = pluginMetaData.value(QLatin1String(PLUGIN_METADATA)); - if (!value.isObject()) - return reportError(tr("Plugin meta data not found")); + if (!value.isObject()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Plugin meta data not found")); + } metaData = value.toObject(); value = metaData.value(QLatin1String(PLUGIN_NAME)); @@ -806,9 +808,11 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData) const QString platformSpec = value.toString().trimmed(); if (!platformSpec.isEmpty()) { platformSpecification.setPattern(platformSpec); - if (!platformSpecification.isValid()) - return reportError(tr("Invalid platform specification \"%1\": %2") - .arg(platformSpec, platformSpecification.errorString())); + if (!platformSpecification.isValid()) { + return reportError(::ExtensionSystem::Internal::PluginSpecPrivate::tr( + "Invalid platform specification \"%1\": %2") + .arg(platformSpec, platformSpecification.errorString())); + } } value = metaData.value(QLatin1String(DEPENDENCIES)); @@ -822,22 +826,36 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData) QJsonObject dependencyObject = v.toObject(); PluginDependency dep; value = dependencyObject.value(QLatin1String(DEPENDENCY_NAME)); - if (value.isUndefined()) - return reportError(tr("Dependency: %1").arg(msgValueMissing(DEPENDENCY_NAME))); - if (!value.isString()) - return reportError(tr("Dependency: %1").arg(msgValueIsNotAString(DEPENDENCY_NAME))); + if (value.isUndefined()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Dependency: %1") + .arg(msgValueMissing(DEPENDENCY_NAME))); + } + if (!value.isString()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Dependency: %1") + .arg(msgValueIsNotAString(DEPENDENCY_NAME))); + } dep.name = value.toString(); value = dependencyObject.value(QLatin1String(DEPENDENCY_VERSION)); - if (!value.isUndefined() && !value.isString()) - return reportError(tr("Dependency: %1").arg(msgValueIsNotAString(DEPENDENCY_VERSION))); + if (!value.isUndefined() && !value.isString()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Dependency: %1") + .arg(msgValueIsNotAString(DEPENDENCY_VERSION))); + } dep.version = value.toString(); - if (!isValidVersion(dep.version)) - return reportError(tr("Dependency: %1").arg(msgInvalidFormat(DEPENDENCY_VERSION, - dep.version))); + if (!isValidVersion(dep.version)) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Dependency: %1") + .arg(msgInvalidFormat(DEPENDENCY_VERSION, dep.version))); + } dep.type = PluginDependency::Required; value = dependencyObject.value(QLatin1String(DEPENDENCY_TYPE)); - if (!value.isUndefined() && !value.isString()) - return reportError(tr("Dependency: %1").arg(msgValueIsNotAString(DEPENDENCY_TYPE))); + if (!value.isUndefined() && !value.isString()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Dependency: %1") + .arg(msgValueIsNotAString(DEPENDENCY_TYPE))); + } if (!value.isUndefined()) { const QString typeValue = value.toString(); if (typeValue.toLower() == QLatin1String(DEPENDENCY_TYPE_HARD)) { @@ -847,11 +865,13 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData) } else if (typeValue.toLower() == QLatin1String(DEPENDENCY_TYPE_TEST)) { dep.type = PluginDependency::Test; } else { - return reportError(tr("Dependency: \"%1\" must be \"%2\" or \"%3\" (is \"%4\").") - .arg(QLatin1String(DEPENDENCY_TYPE), - QLatin1String(DEPENDENCY_TYPE_HARD), - QLatin1String(DEPENDENCY_TYPE_SOFT), - typeValue)); + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr( + "Dependency: \"%1\" must be \"%2\" or \"%3\" (is \"%4\").") + .arg(QLatin1String(DEPENDENCY_TYPE), + QLatin1String(DEPENDENCY_TYPE_HARD), + QLatin1String(DEPENDENCY_TYPE_SOFT), + typeValue)); } } dependencies.append(dep); @@ -869,20 +889,35 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData) QJsonObject argumentObject = v.toObject(); PluginArgumentDescription arg; value = argumentObject.value(QLatin1String(ARGUMENT_NAME)); - if (value.isUndefined()) - return reportError(tr("Argument: %1").arg(msgValueMissing(ARGUMENT_NAME))); - if (!value.isString()) - return reportError(tr("Argument: %1").arg(msgValueIsNotAString(ARGUMENT_NAME))); + if (value.isUndefined()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Argument: %1") + .arg(msgValueMissing(ARGUMENT_NAME))); + } + if (!value.isString()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Argument: %1") + .arg(msgValueIsNotAString(ARGUMENT_NAME))); + } arg.name = value.toString(); - if (arg.name.isEmpty()) - return reportError(tr("Argument: \"%1\" is empty").arg(QLatin1String(ARGUMENT_NAME))); + if (arg.name.isEmpty()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Argument: \"%1\" is empty") + .arg(QLatin1String(ARGUMENT_NAME))); + } value = argumentObject.value(QLatin1String(ARGUMENT_DESCRIPTION)); - if (!value.isUndefined() && !value.isString()) - return reportError(tr("Argument: %1").arg(msgValueIsNotAString(ARGUMENT_DESCRIPTION))); + if (!value.isUndefined() && !value.isString()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Argument: %1") + .arg(msgValueIsNotAString(ARGUMENT_DESCRIPTION))); + } arg.description = value.toString(); value = argumentObject.value(QLatin1String(ARGUMENT_PARAMETER)); - if (!value.isUndefined() && !value.isString()) - return reportError(tr("Argument: %1").arg(msgValueIsNotAString(ARGUMENT_PARAMETER))); + if (!value.isUndefined() && !value.isString()) { + return reportError( + ::ExtensionSystem::Internal::PluginSpecPrivate::tr("Argument: %1") + .arg(msgValueIsNotAString(ARGUMENT_PARAMETER))); + } arg.parameter = value.toString(); argumentDescriptions.append(arg); qCDebug(pluginLog) << "Argument:" << arg.name << "Parameter:" << arg.parameter diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 90299e06bbd..6e2e38ff7a9 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -638,7 +638,7 @@ public: start(commandString, QStringList(), workingDirectory, m_writeData); } else { if (!success) { - q->setErrorString(tr("Error in command line.")); + q->setErrorString(QtcProcess::tr("Error in command line.")); // Should be FailedToStart, but we cannot set the process error from the outside, // so it would be inconsistent. emit q->errorOccurred(QProcess::UnknownError); diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index 8a795780519..1ede608bdd1 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -639,7 +639,8 @@ void AndroidDeviceManager::HandleAvdsListChange() // of the device has changed, remove it and register it again with the new name. // Also account for the case of an AVD registered through old QC which might have // invalid data by checking the sdcard size value. - if (dev->displayName() != displayName || androidDev->sdcardSize() == tr("Unknown")) { + if (dev->displayName() != displayName + || androidDev->sdcardSize() == AndroidDevice::tr("Unknown")) { devMgr->removeDevice(dev->id()); } else { // Find the state of the AVD retrieved from the AVD watcher diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 50bd7ee24ab..216b90da654 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -4021,7 +4021,7 @@ class MemoryTreeModel : public Utils::BaseTreeModel public: MemoryTreeModel(QObject *parent) : BaseTreeModel(parent) { - setHeader({tr("Component"), tr("Total Memory")}); + setHeader({MemoryUsageWidget::tr("Component"), MemoryUsageWidget::tr("Total Memory")}); } void update(const MemoryTree &tree) diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.h b/src/plugins/studiowelcome/studiowelcomeplugin.h index cd6b8ea87f2..1fdc811d37e 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.h +++ b/src/plugins/studiowelcome/studiowelcomeplugin.h @@ -38,6 +38,8 @@ namespace Internal { class StudioSettingsPage : public Core::IOptionsPageWidget { + Q_OBJECT + public: void apply() final; diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index ef4c969be66..938e776ac87 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -110,6 +110,8 @@ void ResizeSignallingWidget::resizeEvent(QResizeEvent *event) class WelcomeMode : public IMode { + Q_OBJECT + public: WelcomeMode(); ~WelcomeMode(); From cac1c3d50116cd01d1e5db522102aee6934882ec Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 23 Feb 2022 16:41:44 +0100 Subject: [PATCH 36/45] Fix more warnings Found by compiling with clang Change-Id: Iec0ed8aa8b6a742a5a3996a6c19c410e209fb048 Reviewed-by: Christian Stenger --- src/plugins/cmakeprojectmanager/configmodel.cpp | 2 +- src/plugins/cppeditor/cppcodestylesettings.cpp | 1 - src/plugins/qmldesigner/designercore/model/model.cpp | 6 +++--- .../qmldesigner/designercore/projectstorage/filesystem.h | 2 +- .../designercore/projectstorage/projectstorage.h | 2 ++ src/plugins/qmldesigner/designmodewidget.cpp | 4 ---- src/plugins/qmlprojectmanager/qmlproject.cpp | 2 -- src/plugins/studiowelcome/examplecheckout.cpp | 2 +- src/plugins/updateinfo/updateinfoplugin.cpp | 2 +- 9 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/configmodel.cpp b/src/plugins/cmakeprojectmanager/configmodel.cpp index 73f6f1e2280..e170fc49179 100644 --- a/src/plugins/cmakeprojectmanager/configmodel.cpp +++ b/src/plugins/cmakeprojectmanager/configmodel.cpp @@ -268,7 +268,7 @@ bool ConfigModel::hasChanges(bool initialParameters) const return initialParameters ? i.isInitial : !i.isInitial; }); - return Utils::contains(filtered, [initialParameters](const InternalDataItem &i) { + return Utils::contains(filtered, [](const InternalDataItem &i) { return i.isUserChanged || i.isUserNew || i.isUnset; }); } diff --git a/src/plugins/cppeditor/cppcodestylesettings.cpp b/src/plugins/cppeditor/cppcodestylesettings.cpp index f5cc2fda8c8..eabaa47a61a 100644 --- a/src/plugins/cppeditor/cppcodestylesettings.cpp +++ b/src/plugins/cppeditor/cppcodestylesettings.cpp @@ -40,7 +40,6 @@ #include #include -static const char groupPostfix[] = "IndentSettings"; static const char indentBlockBracesKey[] = "IndentBlockBraces"; static const char indentBlockBodyKey[] = "IndentBlockBody"; static const char indentClassBracesKey[] = "IndentClassBraces"; diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 5f211b86056..39b24186232 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -1576,9 +1576,9 @@ QUrl Model::fileUrl() const QUrl Model::projectUrl() const { #ifndef QMLDESIGNER_TEST -DesignDocument *document = QmlDesignerPlugin::instance()->viewManager().currentDesignDocument(); -if (document) - return QUrl::fromLocalFile(document->projectFolder().toString()); + DesignDocument *document = QmlDesignerPlugin::instance()->viewManager().currentDesignDocument(); + if (document) + return QUrl::fromLocalFile(document->projectFolder().toString()); #endif return {}; } diff --git a/src/plugins/qmldesigner/designercore/projectstorage/filesystem.h b/src/plugins/qmldesigner/designercore/projectstorage/filesystem.h index 041090508e4..5c054367c8a 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/filesystem.h +++ b/src/plugins/qmldesigner/designercore/projectstorage/filesystem.h @@ -43,7 +43,7 @@ class ProjectStorage; using PathCache = SourcePathCache, NonLockingMutex>; -class FileSystem final : public FileSystemInterface +class FileSystem : public FileSystemInterface { public: FileSystem(PathCache &sourcePathCache) diff --git a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h index e77ba16bad3..c7c182279f1 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h +++ b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h @@ -1924,6 +1924,8 @@ private: void createTypesAndePropertyDeclarationsTables(Database &database, const Sqlite::Column &foreignModuleIdColumn) { + Q_UNUSED(foreignModuleIdColumn) + Sqlite::Table typesTable; typesTable.setUseIfNotExists(true); typesTable.setName("types"); diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 584933494b5..aa1738a3f19 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -245,11 +245,7 @@ void DesignModeWidget::setup() m_dockManager->setStyleSheet(Theme::replaceCssColors(sheet)); // Setup icons - const QColor iconColor(Theme::getColor(Theme::DStitleBarIcon)); - const QString closeUnicode = Theme::getIconUnicode(Theme::Icon::adsClose); - const QString menuUnicode = Theme::getIconUnicode(Theme::Icon::adsDropDown); - const QString undockUnicode = Theme::getIconUnicode(Theme::Icon::adsDetach); const QString fontName = "qtds_propertyIconFont.ttf"; const QSize size = QSize(28, 28); diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 9191106ed4b..0864a478280 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -135,8 +135,6 @@ QmlProject::QmlProject(const Utils::FilePath &fileName) disconnect(m_openFileConnection); if (target && success) { - const Utils::FilePath &folder = projectDirectory() + "/content"; - Utils::FilePaths uiFiles = getUiQmlFilesForFolder(projectDirectory() + "/content"); if (uiFiles.isEmpty()) diff --git a/src/plugins/studiowelcome/examplecheckout.cpp b/src/plugins/studiowelcome/examplecheckout.cpp index cb7018bf3d9..267295b1713 100644 --- a/src/plugins/studiowelcome/examplecheckout.cpp +++ b/src/plugins/studiowelcome/examplecheckout.cpp @@ -217,7 +217,7 @@ void FileDownloader::probeUrl() QNetworkReply::connect(reply, &QNetworkReply::errorOccurred, this, - [this, reply](QNetworkReply::NetworkError) { + [this](QNetworkReply::NetworkError) { QQmlData *data = QQmlData::get(this, false); if (!data) { qDebug() << Q_FUNC_INFO << "FileDownloader is nullptr."; diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index 353a5d703fe..e2271ad396f 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -209,7 +209,7 @@ struct QtPackage QString displayName; QVersionNumber version; bool installed; - bool isPrerelease; + bool isPrerelease = false; }; static QList availableQtPackages(const QDomDocument &document) From 3a210bb8117e821d941bcfa4c320ebec5c87942b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Feb 2022 14:10:09 +0100 Subject: [PATCH 37/45] QmlDesigner: Rename views for consistency "CurveEditor" -> "Curve Editor" Task-number: QDS-5852, QDS-6325 Change-Id: I709b54c338708f4387d0d1cb4b928d8eebbfb3be Reviewed-by: Leena Miettinen Reviewed-by: hjk --- .../qmldesigner/components/curveeditor/curveeditorview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp index bddb6536c7c..0c535ec48d7 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp @@ -70,7 +70,7 @@ bool CurveEditorView::hasWidget() const WidgetInfo CurveEditorView::widgetInfo() { return createWidgetInfo( - m_editor, nullptr, "CurveEditorId", WidgetInfo::BottomPane, 0, tr("CurveEditor")); + m_editor, nullptr, "CurveEditorId", WidgetInfo::BottomPane, 0, tr("Curve Editor")); } void CurveEditorView::modelAttached(Model *model) From ef6fbe373fb1463a341f1c88da32c0aa05c3ba39 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Feb 2022 17:56:00 +0100 Subject: [PATCH 38/45] QmlDesigner: Fix crash For some files rootFormEditorItem() can be null. Change-Id: I71672e4d43bfd086011f6a6cb3c93572f6ba0a05 Reviewed-by: Tim Jenssen --- .../qmldesigner/components/formeditor/formeditorwidget.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index aa99d7fcf12..6991c561414 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -357,7 +357,8 @@ void FormEditorWidget::initialize() defaultZoom = m_formEditorView->rootModelNode().auxiliaryData("formeditorZoom").toDouble(); } m_graphicsView->setZoomFactor(defaultZoom); - m_graphicsView->centerOn(m_formEditorView->scene()->rootFormEditorItem()); + if (m_formEditorView->scene() && m_formEditorView->scene()->rootFormEditorItem()) + m_graphicsView->centerOn(m_formEditorView->scene()->rootFormEditorItem()); m_zoomAction->setZoomFactor(defaultZoom); updateActions(); } From 0586418f8349f3ed5b36dfdc7efec75b4b17a284 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 22 Feb 2022 21:31:12 +0200 Subject: [PATCH 39/45] Android: Differentiate between same devices connected via usb and wifi ADB allows connecting the same device via USB or WiFi, so we need to make sure the name of the wifi which appears as a different device, make sure it does mean something instead of "Name2" as proposed by default by QC. So this adds the term wifi to the name to make it clear. Change-Id: I5923ca2430c8b51ae2525744dcc1f803ab976b35 Reviewed-by: Alessandro Portale Reviewed-by: --- src/plugins/android/androiddevice.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index 1ede608bdd1..fbecdc14033 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include @@ -716,7 +717,14 @@ void AndroidDeviceManager::HandleDevicesListChange(const QString &serialNumber) devMgr->setDeviceState(avdId, state); } else { const Utils::Id id = Utils::Id(Constants::ANDROID_DEVICE_ID).withSuffix(':' + serial); - const QString displayName = AndroidConfigurations::currentConfig().getProductModel(serial); + QString displayName = AndroidConfigurations::currentConfig().getProductModel(serial); + // Check if the device is connected via WiFi. A sample serial of such devices can be + // like: "192.168.1.190:5555" + const QRegularExpression wifiSerialRegExp( + QLatin1String("(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}):(\\d{1,5})")); + if (wifiSerialRegExp.match(serial).hasMatch()) + displayName += QLatin1String(" (WiFi)"); + if (IDevice::ConstPtr dev = devMgr->find(id)) { // DeviceManager doens't seem to have a way to directly update the name, if the name // of the device has changed, remove it and register it again with the new name. From c1512dce879ce0fd2c5d45858c3af8f3493f658e Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Wed, 23 Feb 2022 11:56:39 +0200 Subject: [PATCH 40/45] Android: don't stop deployment if the kit's ABIs list is empty If for some reason we cannot get the list of kit's ABIs or it's not set, don't stop the deployment because of that, let it continue and fail later. Fixes: QTCREATORBUG-27103 Change-Id: I973e5ffdca1e8fb6af3f6e6438969b38b8e375c8 Reviewed-by: Alessandro Portale Reviewed-by: --- src/plugins/android/androiddeployqtstep.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 1d76083a6e0..69b57651445 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -182,7 +182,7 @@ bool AndroidDeployQtStep::init() return false; } - if (!dev->canSupportAbis(selectedAbis)) { + if (!selectedAbis.isEmpty() && !dev->canSupportAbis(selectedAbis)) { const QString error = tr("The deployment device \"%1\" does not support the " "architectures used by the kit.\n" "The kit supports \"%2\", but the device uses \"%3\".") From 45364d43279ddc409e9def2e65b07a5129a2e9e2 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 23 Feb 2022 16:40:28 +0200 Subject: [PATCH 41/45] QmlDesigner: Disable scrolling when context menu is open Disable components and assets views scrolling when the context menu is open. Fixes: QDS-6317 Change-Id: Ibdbf29b14d0383fd2b876c655ccb17c35fdb6aff Reviewed-by: Reviewed-by: Thomas Hartmann Reviewed-by: Samuel Ghinet --- share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml | 2 +- share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml index f254a325508..9ec7d8fcf39 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Assets.qml @@ -424,7 +424,7 @@ Item { width: parent.width height: parent.height - y clip: true - interactive: assetsView.verticalScrollBarVisible + interactive: assetsView.verticalScrollBarVisible && !contextMenu.opened Column { Repeater { diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml index e43342d650d..bc0dc79ef25 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml @@ -246,6 +246,7 @@ Item { id: verticalScrollView anchors.fill: parent clip: true + interactive: !itemContextMenu.opened && !moduleContextMenu.opened onContentHeightChanged: { var maxPosition = Math.max(contentHeight - verticalScrollView.height, 0) @@ -362,6 +363,7 @@ Item { width: 270 height: parent.height clip: true + interactive: !itemContextMenu.opened && !moduleContextMenu.opened onContentHeightChanged: { var maxPosition = Math.max(contentHeight - horizontalScrollView.height, 0) From 787bbfaf1c99adb7e079145a544b94be87a24e80 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Wed, 23 Feb 2022 14:55:42 +0200 Subject: [PATCH 42/45] QmlDesigner: Fix path when importing a 3D model inside a component Fixes: QDS-6319 Change-Id: Ia9dbdf9a2d32eaf996cca2ba84e89ca8111dab1c Reviewed-by: Reviewed-by: Samuel Ghinet Reviewed-by: Thomas Hartmann --- .../itemlibrary/itemlibraryassetimportdialog.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp index 135eaaf5aaf..1f974419c79 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryassetimportdialog.cpp @@ -128,11 +128,9 @@ ItemLibraryAssetImportDialog::ItemLibraryAssetImportDialog( importPaths = model->importPaths(); } - QString targetDir = defaulTargetDirectory; - - ProjectExplorer::Project *currentProject = ProjectExplorer::SessionManager::projectForFile(doc->fileName()); - if (currentProject) - targetDir = currentProject->projectDirectory().toString(); + QString targetDir = QmlDesignerPlugin::instance()->documentManager().currentProjectDirPath().toString(); + if (targetDir.isEmpty()) + targetDir = defaulTargetDirectory; // Import is always done under known folder. The order of preference for folder is: // 1) An existing QUICK_3D_ASSETS_FOLDER under DEFAULT_ASSET_IMPORT_FOLDER project import path From ee4757a8e84336de1f53e9b6a528916313a355fd Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Feb 2022 17:35:51 +0100 Subject: [PATCH 43/45] QmlDesigner: Use LoggingCategory in ImageContainer Change-Id: Ibdce399fc2df19883d6ffd12e9441c58d46035ec Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- share/qtcreator/qml/qmlpuppet/container/imagecontainer.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/container/imagecontainer.cpp b/share/qtcreator/qml/qmlpuppet/container/imagecontainer.cpp index d2a9ee219fc..b556620c54f 100644 --- a/share/qtcreator/qml/qmlpuppet/container/imagecontainer.cpp +++ b/share/qtcreator/qml/qmlpuppet/container/imagecontainer.cpp @@ -28,6 +28,7 @@ #include "sharedmemory.h" #include #include +#include #include @@ -36,6 +37,8 @@ #define QTC_ASSERT_STRING(cond) qDebug("SOFT ASSERT: \"" cond"\" in file " __FILE__ ", line " QTC_ASSERT_STRINGIFY(__LINE__)) #define QTC_ASSERT(cond, action) if (cond) {} else { QTC_ASSERT_STRING(#cond); action; } do {} while (0) +static Q_LOGGING_CATEGORY(imageContainerDebug, "qtc.imagecontainer.debug", QtDebugMsg) + namespace QmlDesigner { // using cache as a container which deletes sharedmemory pointers at process exit @@ -202,7 +205,7 @@ static void readSharedMemory(qint32 key, ImageContainer &container) image.setDevicePixelRatio(pixelRatio); if (image.isNull()) - qDebug() << Q_FUNC_INFO << "Not able to create image:" << imageWidth << imageHeight << imageFormat; + qCInfo(imageContainerDebug()) << Q_FUNC_INFO << "Not able to create image:" << imageWidth << imageHeight << imageFormat; else std::memcpy(image.bits(), reinterpret_cast(sharedMemory.constData()) + 6, byteCount); From 3cf6d15096d4191908169cb22d0d350345923cf1 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 22 Feb 2022 10:29:10 +0100 Subject: [PATCH 44/45] LanguageClient: track all created diagnostic marks Removing a block results in taking marks of that line out of the document, but does not delete those marks. So we cannot rely on iterating over marks of a document to delete all marks for a specific file. Instead save all marks from text mark creator for a file path and iterate this list to delete diagnostic marks. Fixes: QTCREATORBUG-26585 Change-Id: Idc41fce5de4ade68f4a29c23ba02844701b44d3c Reviewed-by: Christian Kandeler --- src/plugins/languageclient/client.cpp | 2 +- .../languageclient/diagnosticmanager.cpp | 33 +++++++++---------- .../languageclient/diagnosticmanager.h | 4 +-- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index eb2633fef1b..79a6782e060 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -617,7 +617,7 @@ void Client::activateDocument(TextEditor::TextDocument *document) void Client::deactivateDocument(TextEditor::TextDocument *document) { - m_diagnosticManager.hideDiagnostics(document); + m_diagnosticManager.hideDiagnostics(document->filePath()); resetAssistProviders(document); document->setFormatter(nullptr); m_tokenSupport.clearHighlight(document); diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index 3336726a72f..cdaadb7d4a8 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -88,26 +88,19 @@ void DiagnosticManager::setDiagnostics(const LanguageServerProtocol::DocumentUri const QList &diagnostics, const Utils::optional &version) { - removeDiagnostics(uri); + hideDiagnostics(uri.toFilePath()); m_diagnostics[uri] = {version, diagnostics}; } -void DiagnosticManager::hideDiagnostics(TextDocument *doc) +void DiagnosticManager::hideDiagnostics(const Utils::FilePath &filePath) { - if (!doc) - return; - if (m_hideHandler) m_hideHandler(); - for (BaseTextEditor *editor : BaseTextEditor::textEditorsForDocument(doc)) - editor->editorWidget()->setExtraSelections(TextEditorWidget::CodeWarningsSelection, {}); - qDeleteAll(Utils::filtered(doc->marks(), Utils::equal(&TextMark::category, m_client->id()))); -} - -void DiagnosticManager::removeDiagnostics(const LanguageServerProtocol::DocumentUri &uri) -{ - hideDiagnostics(TextDocument::textDocumentForFilePath(uri.toFilePath())); - m_diagnostics.remove(uri); + if (auto doc = TextDocument::textDocumentForFilePath(filePath)) { + for (BaseTextEditor *editor : BaseTextEditor::textEditorsForDocument(doc)) + editor->editorWidget()->setExtraSelections(TextEditorWidget::CodeWarningsSelection, {}); + } + qDeleteAll(m_marks.take(filePath)); } static QTextEdit::ExtraSelection toDiagnosticsSelections(const Diagnostic &diagnostic, @@ -130,11 +123,11 @@ void DiagnosticManager::showDiagnostics(const DocumentUri &uri, int version) const FilePath &filePath = uri.toFilePath(); if (TextDocument *doc = TextDocument::textDocumentForFilePath(filePath)) { QList extraSelections; - const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri); + const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri); if (versionedDiagnostics.version.value_or(version) == version) { for (const Diagnostic &diagnostic : versionedDiagnostics.diagnostics) { extraSelections << toDiagnosticsSelections(diagnostic, doc->document()); - doc->addMark(m_textMarkCreator(filePath, diagnostic)); + m_marks[filePath].append(m_textMarkCreator(filePath, diagnostic)); } } @@ -164,7 +157,13 @@ TextEditor::TextMark *DiagnosticManager::createTextMark(const FilePath &filePath void DiagnosticManager::clearDiagnostics() { for (const DocumentUri &uri : m_diagnostics.keys()) - removeDiagnostics(uri); + hideDiagnostics(uri.toFilePath()); + m_diagnostics.clear(); + if (!QTC_GUARD(m_marks.isEmpty())) { + for (const QList &marks : qAsConst(m_marks)) + qDeleteAll(marks); + m_marks.clear(); + } } QList DiagnosticManager::diagnosticsAt(const DocumentUri &uri, diff --git a/src/plugins/languageclient/diagnosticmanager.h b/src/plugins/languageclient/diagnosticmanager.h index e3a2aefcc8e..a7e2e474852 100644 --- a/src/plugins/languageclient/diagnosticmanager.h +++ b/src/plugins/languageclient/diagnosticmanager.h @@ -56,10 +56,9 @@ public: void setDiagnostics(const LanguageServerProtocol::DocumentUri &uri, const QList &diagnostics, const Utils::optional &version); - void removeDiagnostics(const LanguageServerProtocol::DocumentUri &uri); void showDiagnostics(const LanguageServerProtocol::DocumentUri &uri, int version); - void hideDiagnostics(TextEditor::TextDocument *doc); + void hideDiagnostics(const Utils::FilePath &filePath); void clearDiagnostics(); @@ -81,6 +80,7 @@ private: QList diagnostics; }; QMap m_diagnostics; + QMap> m_marks; TextMarkCreator m_textMarkCreator; HideDiagnosticsHandler m_hideHandler; Client *m_client; From 0ce098ed878b72e4157449fb762b2d70205f3608 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 21 Feb 2022 09:59:14 +0100 Subject: [PATCH 45/45] WinRt: enable plugin on Windows 11 Change-Id: Ie935b1baaa4331499143de4eb3fb9bd57b38c347 Reviewed-by: Reviewed-by: Christian Stenger --- src/plugins/winrt/WinRt.json.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/winrt/WinRt.json.in b/src/plugins/winrt/WinRt.json.in index fef26890bfb..e776ddf9616 100644 --- a/src/plugins/winrt/WinRt.json.in +++ b/src/plugins/winrt/WinRt.json.in @@ -2,7 +2,7 @@ \"Name\" : \"WinRt\", \"Version\" : \"$$QTCREATOR_VERSION\", \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\", - \"Platform\" : \"Windows (8.1|10)\", + \"Platform\" : \"Windows (8.1|10|11)\", \"Vendor\" : \"The Qt Company Ltd\", \"Copyright\" : \"(C) $$QTCREATOR_COPYRIGHT_YEAR The Qt Company Ltd\", \"License\" : [ \"Commercial Usage\",