McuSupport: Automatic memory management for mcu sdk

Fix crash while automatically restoring kits during startup.
Change packages container to set to avoid duplicates.
Use RAII for McuSdkRepository.

Change-Id: I4b3f4156f0bc770c8a5ea8a171b1f22f6ffb8f96
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Piotr Mućko
2022-03-28 16:42:51 +02:00
parent 652f130fae
commit a3fbfac814
19 changed files with 229 additions and 265 deletions

View File

@@ -25,10 +25,10 @@
#include "mcusupportplugin.h"
#include "mcukitinformation.h"
#include "mcukitmanager.h"
#include "mcusupportconstants.h"
#include "mcusupportdevice.h"
#include "mcusupportoptions.h"
#include "mcukitmanager.h"
#include "mcusupportoptionspage.h"
#include "mcusupportrunconfiguration.h"
@@ -52,6 +52,10 @@
using namespace Core;
using namespace ProjectExplorer;
namespace {
constexpr char setupMcuSupportKits[]{"SetupMcuSupportKits"};
}
namespace McuSupport {
namespace Internal {
@@ -114,8 +118,6 @@ void McuSupportPlugin::extensionsInitialized()
void McuSupportPlugin::askUserAboutMcuSupportKitsSetup()
{
const char setupMcuSupportKits[] = "SetupMcuSupportKits";
if (!ICore::infoBar()->canInfoBeAdded(setupMcuSupportKits)
|| McuSupportOptions::qulDirFromSettings().isEmpty()
|| !McuKitManager::existingKits(nullptr).isEmpty())
@@ -126,7 +128,7 @@ void McuSupportPlugin::askUserAboutMcuSupportKitsSetup()
"To do it later, select Options > Devices > MCU."),
Utils::InfoBarEntry::GlobalSuppression::Enabled);
// clazy:excludeall=connect-3arg-lambda
info.addCustomButton(tr("Create Kits for Qt for MCUs"), [setupMcuSupportKits] {
info.addCustomButton(tr("Create Kits for Qt for MCUs"), [] {
ICore::infoBar()->removeInfo(setupMcuSupportKits);
QTimer::singleShot(0, []() { ICore::showOptionsDialog(Constants::SETTINGS_ID); });
});