diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2020-06-05 00:33:06 +0200 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2020-06-11 09:47:04 +0000 |
commit | e4ded6a08fd06a75d227bc6a172569f835f09434 (patch) | |
tree | 2f4f5613efa98fe84332eb4b8ed638a65e738bd2 | |
parent | d41502ebb0d9223704d2807407f4cdeb8446f2c9 (diff) | |
download | qt-creator-e4ded6a08fd06a75d227bc6a172569f835f09434.tar.gz |
McuSupport: Enable resetting of path choosers to the default path
This change adds a "reset" button to the path choosers. Pressing it
sets the path to the default path.
The default path is now overwritable by the system settings value (if
present). This way, there is only one and only default path, which
allows us to again simplify McuPackage::writeToSettings().
Task-number: QTCREATORBUG-23860
Change-Id: I192663f3487250b9eba4773d2510abf3f9e66127
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/mcusupport/mcusupportoptions.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 96457170fa..a73366f79a 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -63,24 +63,26 @@ namespace Internal { static const int KIT_VERSION = 5; // Bumps up whenever details in Kit creation change -static QString packagePathFromSettings(const QString &settingsKey, const QString &defaultPath = {}) +static QString packagePathFromSettings(const QString &settingsKey, + QSettings::Scope scope = QSettings::UserScope, + const QString &defaultPath = {}) { - QSettings *s = Core::ICore::settings(); + QSettings *s = Core::ICore::settings(scope); s->beginGroup(Constants::SETTINGS_GROUP); const QString path = s->value(QLatin1String(Constants::SETTINGS_KEY_PACKAGE_PREFIX) + settingsKey, defaultPath).toString(); s->endGroup(); - return path; + return Utils::FilePath::fromFileInfo(path).toString(); } McuPackage::McuPackage(const QString &label, const QString &defaultPath, const QString &detectionPath, const QString &settingsKey) : m_label(label) - , m_defaultPath(defaultPath) + , m_defaultPath(packagePathFromSettings(settingsKey, QSettings::SystemScope, defaultPath)) , m_detectionPath(detectionPath) , m_settingsKey(settingsKey) { - m_path = packagePathFromSettings(settingsKey, defaultPath); + m_path = packagePathFromSettings(settingsKey, QSettings::UserScope, m_defaultPath); } QString McuPackage::path() const @@ -105,6 +107,12 @@ QWidget *McuPackage::widget() m_widget = new QWidget; m_fileChooser = new Utils::PathChooser; + m_fileChooser->lineEdit()->setButtonIcon(Utils::FancyLineEdit::Right, + Utils::Icons::RESET.icon()); + m_fileChooser->lineEdit()->setButtonVisible(Utils::FancyLineEdit::Right, true); + connect(m_fileChooser->lineEdit(), &Utils::FancyLineEdit::rightButtonClicked, [&](){ + m_fileChooser->setPath(m_defaultPath); + }); auto layout = new QGridLayout(m_widget); layout->setContentsMargins(0, 0, 0, 0); @@ -169,11 +177,8 @@ void McuPackage::writeToSettings() const { const QString key = QLatin1String(Constants::SETTINGS_GROUP) + '/' + QLatin1String(Constants::SETTINGS_KEY_PACKAGE_PREFIX) + m_settingsKey; - const QSettings *iS = Core::ICore::settings(QSettings::SystemScope); QSettings *uS = Core::ICore::settings(); - if (m_path == m_defaultPath || ( - iS->contains(key) && - m_path == Utils::FilePath::fromUserInput(iS->value(key).toString()).toString())) + if (m_path == m_defaultPath) uS->remove(key); else uS->setValue(key, m_path); @@ -213,6 +218,8 @@ void McuPackage::updateStatus() break; } m_infoLabel->setText(statusText); + m_fileChooser->lineEdit()->button(Utils::FancyLineEdit::Right)->setEnabled( + m_path != m_defaultPath); } McuToolChainPackage::McuToolChainPackage(const QString &label, const QString &defaultPath, @@ -465,7 +472,8 @@ void McuSupportOptions::setQulDir(const Utils::FilePath &dir) Utils::FilePath McuSupportOptions::qulDirFromSettings() { return Utils::FilePath::fromUserInput( - packagePathFromSettings(Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK)); + packagePathFromSettings(Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK, + QSettings::UserScope)); } static Utils::FilePath jomExecutablePath() |