From 02efd431998f399017075cc283db27409835337e Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 4 Mar 2020 17:48:27 +0100 Subject: [PATCH] McuSupport: If kits are missing, provide an InfoBar that opens settings When installing Qt for MCUs via the SDK installer, the user (in many cases first-time evaluator) has to create the kits for Qt for MCUs. For those who see Qt Creator for the first time, it is difficult to find out where to search for the UI that generates those kits. Let's help the user with an InfoBar entry that in case of ... * McuSupport plugin being enabled (by SDK installer) * Settings key [McuSupport]/Package_QtForMCUsSdk set (by SDK installer) * Absence of valid Qt for MCUs Kits ... helps to directly open the right page and tab of the Options dialog. Task-number: QTCREATORBUG-23943 Change-Id: I7d4834633b1b94ef663d62cd395ee071bd123f1f Reviewed-by: Leena Miettinen Reviewed-by: Eike Ziller --- src/plugins/mcusupport/mcusupportplugin.cpp | 26 +++++++++++++++++++++ src/plugins/mcusupport/mcusupportplugin.h | 1 + 2 files changed, 27 insertions(+) diff --git a/src/plugins/mcusupport/mcusupportplugin.cpp b/src/plugins/mcusupport/mcusupportplugin.cpp index 0be99d8c05b..07f54e061a6 100644 --- a/src/plugins/mcusupport/mcusupportplugin.cpp +++ b/src/plugins/mcusupport/mcusupportplugin.cpp @@ -33,11 +33,15 @@ #include #include #include +#include #include #include #include +#include + +using namespace Core; using namespace ProjectExplorer; namespace McuSupport { @@ -90,8 +94,30 @@ void McuSupportPlugin::extensionsInitialized() connect(KitManager::instance(), &KitManager::kitsLoaded, [](){ McuSupportOptions::removeOutdatedKits(); + McuSupportPlugin::askUserAboutMcuSupportKitsSetup(); }); } +void McuSupportPlugin::askUserAboutMcuSupportKitsSetup() +{ + const char setupMcuSupportKits[] = "SetupMcuSupportKits"; + + if (!ICore::infoBar()->canInfoBeAdded(setupMcuSupportKits) + || McuSupportOptions::qulDirFromSettings().isEmpty() + || !McuSupportOptions::existingKits(nullptr).isEmpty()) + return; + + InfoBarEntry info( + setupMcuSupportKits, + tr("Create Kits for Qt for MCUs? " + "To do it later, select Options > Devices > MCU."), + InfoBarEntry::GlobalSuppression::Enabled); + info.setCustomButtonInfo(tr("Create Kits for Qt for MCUs"), [setupMcuSupportKits] { + ICore::infoBar()->removeInfo(setupMcuSupportKits); + QTimer::singleShot(0, []() { ICore::showOptionsDialog(Constants::SETTINGS_ID); }); + }); + ICore::infoBar()->addInfo(info); +} + } // namespace Internal } // namespace McuSupport diff --git a/src/plugins/mcusupport/mcusupportplugin.h b/src/plugins/mcusupport/mcusupportplugin.h index 9a5def94fbb..2f7c24e6057 100644 --- a/src/plugins/mcusupport/mcusupportplugin.h +++ b/src/plugins/mcusupport/mcusupportplugin.h @@ -43,6 +43,7 @@ public: bool initialize(const QStringList &arguments, QString *errorString) override; void extensionsInitialized() override; + static void askUserAboutMcuSupportKitsSetup(); }; } // namespace Internal