From 53a72f0ba3fbeb0ceb0ff1b056feee85ff14bbb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sivert=20Kr=C3=B8vel?= Date: Thu, 9 Feb 2023 17:35:44 +0100 Subject: [PATCH] McuSupport: Discard un-applied changes to Qul SDK package The path to the Qul SDK entered in the settings path persisted in the UI when re-opening the settings page, even if it was not applied. Kits and the settings file are not affected unless pressing apply so this did not affect functionality. Un-applied changes are discarded by re-reading the path from the settings file in the constructor for the settings page. Task-number: QTCREATORBUG-28568 Change-Id: Id03be22fba429e4764493cd3bedf45faa6908637 Reviewed-by: Reviewed-by: Yasser Grimes Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcuabstractpackage.h | 1 + src/plugins/mcusupport/mcupackage.cpp | 5 +++++ src/plugins/mcusupport/mcupackage.h | 1 + src/plugins/mcusupport/mcusupportoptionspage.cpp | 3 +++ src/plugins/mcusupport/test/packagemock.h | 1 + 5 files changed, 11 insertions(+) diff --git a/src/plugins/mcusupport/mcuabstractpackage.h b/src/plugins/mcusupport/mcuabstractpackage.h index 248c91287dc..33e9e62bd32 100644 --- a/src/plugins/mcusupport/mcuabstractpackage.h +++ b/src/plugins/mcusupport/mcuabstractpackage.h @@ -47,6 +47,7 @@ public: virtual bool isValidStatus() const = 0; virtual bool writeToSettings() const = 0; + virtual void readFromSettings() = 0; virtual QWidget *widget() = 0; virtual const McuPackageVersionDetector *getVersionDetector() const = 0; diff --git a/src/plugins/mcusupport/mcupackage.cpp b/src/plugins/mcusupport/mcupackage.cpp index 287c89b93ec..6feaf728a62 100644 --- a/src/plugins/mcusupport/mcupackage.cpp +++ b/src/plugins/mcusupport/mcupackage.cpp @@ -244,6 +244,11 @@ bool McuPackage::writeToSettings() const return settingsHandler->write(m_settingsKey, m_path, m_defaultPath); } +void McuPackage::readFromSettings() +{ + setPath(settingsHandler->getPath(m_settingsKey, QSettings::UserScope, m_defaultPath)); +} + QWidget *McuPackage::widget() { auto *widget = new QWidget; diff --git a/src/plugins/mcusupport/mcupackage.h b/src/plugins/mcusupport/mcupackage.h index 4cf4606e9f8..1bd3b26fb4d 100644 --- a/src/plugins/mcusupport/mcupackage.h +++ b/src/plugins/mcusupport/mcupackage.h @@ -66,6 +66,7 @@ public: QString statusText() const override; bool writeToSettings() const override; + void readFromSettings() override; QWidget *widget() override; const McuPackageVersionDetector *getVersionDetector() const override; diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp index 7a8a7d046c8..c24785c0db8 100644 --- a/src/plugins/mcusupport/mcusupportoptionspage.cpp +++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp @@ -90,6 +90,9 @@ McuSupportOptionsWidget::McuSupportOptionsWidget(McuSupportOptions &options, m_qtForMCUsSdkGroupBox = new QGroupBox(Tr::tr("Qt for MCUs SDK")); m_qtForMCUsSdkGroupBox->setFlat(true); auto *layout = new QVBoxLayout(m_qtForMCUsSdkGroupBox); + // Re-read the qtForMCUs package from settings to discard un-applied changes from previous sessions + m_options.qtForMCUsSdkPackage->readFromSettings(); + layout->addWidget(m_options.qtForMCUsSdkPackage->widget()); mainLayout->addWidget(m_qtForMCUsSdkGroupBox); } diff --git a/src/plugins/mcusupport/test/packagemock.h b/src/plugins/mcusupport/test/packagemock.h index fb4f73601f5..1e62fb77646 100644 --- a/src/plugins/mcusupport/test/packagemock.h +++ b/src/plugins/mcusupport/test/packagemock.h @@ -29,6 +29,7 @@ public: MOCK_METHOD(QString, environmentVariableName, (), (const)); MOCK_METHOD(bool, isAddToSystemPath, (), (const)); MOCK_METHOD(bool, writeToSettings, (), (const)); + MOCK_METHOD(void, readFromSettings, ()); MOCK_METHOD(QStringList, versions, (), (const)); MOCK_METHOD(QWidget *, widget, ());