diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2020-03-04 17:48:27 +0100 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2020-05-06 06:43:24 +0000 |
commit | 02efd431998f399017075cc283db27409835337e (patch) | |
tree | 0c3d72f3741763809e8ffba9b6dc800150a01188 /src/plugins/mcusupport | |
parent | b3f3deccb0e4541a4c6d047e67738a6a44ec302d (diff) |
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 <riitta-leena.miettinen@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/mcusupport')
-rw-r--r-- | src/plugins/mcusupport/mcusupportplugin.cpp | 26 | ||||
-rw-r--r-- | src/plugins/mcusupport/mcusupportplugin.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/plugins/mcusupport/mcusupportplugin.cpp b/src/plugins/mcusupport/mcusupportplugin.cpp index 0be99d8c05..07f54e061a 100644 --- a/src/plugins/mcusupport/mcusupportplugin.cpp +++ b/src/plugins/mcusupport/mcusupportplugin.cpp @@ -33,11 +33,15 @@ #include <coreplugin/coreconstants.h> #include <coreplugin/icontext.h> #include <coreplugin/icore.h> +#include <coreplugin/infobar.h> #include <projectexplorer/devicesupport/devicemanager.h> #include <projectexplorer/jsonwizard/jsonwizardfactory.h> #include <projectexplorer/kitmanager.h> +#include <QTimer> + +using namespace Core; using namespace ProjectExplorer; namespace McuSupport { @@ -90,7 +94,29 @@ 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 diff --git a/src/plugins/mcusupport/mcusupportplugin.h b/src/plugins/mcusupport/mcusupportplugin.h index 9a5def94fb..2f7c24e605 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 |