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: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Yasser Grimes <yasser.grimes@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Sivert Krøvel
2023-02-09 17:35:44 +01:00
parent 0f0e9baff6
commit 53a72f0ba3
5 changed files with 11 additions and 0 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -66,6 +66,7 @@ public:
QString statusText() const override;
bool writeToSettings() const override;
void readFromSettings() override;
QWidget *widget() override;
const McuPackageVersionDetector *getVersionDetector() const override;

View File

@@ -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);
}

View File

@@ -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, ());