QbsProjectManager: Let users reset the path to qbs

Also, don't store it if it wasn't changed from the default.

Change-Id: Ia0f2e2b7e8f65c1fa32e111be499461fb2dda1d5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2023-06-12 17:42:11 +02:00
parent c5a38b2f95
commit 826f015b83
2 changed files with 24 additions and 7 deletions

View File

@@ -13,11 +13,13 @@
#include <utils/hostosinfo.h>
#include <utils/pathchooser.h>
#include <utils/process.h>
#include <utils/qtcsettings.h>
#include <QCoreApplication>
#include <QCheckBox>
#include <QFormLayout>
#include <QLabel>
#include <QPushButton>
using namespace Utils;
@@ -52,12 +54,17 @@ static bool operator!=(const QbsSettingsData &s1, const QbsSettingsData &s2)
FilePath QbsSettings::qbsExecutableFilePath()
{
const QString fileName = HostOsInfo::withExecutableSuffix("qbs");
FilePath candidate = instance().m_settings.qbsExecutableFilePath;
if (!candidate.exists()) {
candidate = FilePath::fromString(QCoreApplication::applicationDirPath())
if (!candidate.exists())
candidate = defaultQbsExecutableFilePath();
return candidate;
}
FilePath QbsSettings::defaultQbsExecutableFilePath()
{
const QString fileName = HostOsInfo::withExecutableSuffix("qbs");
FilePath candidate = FilePath::fromString(QCoreApplication::applicationDirPath())
.pathAppended(fileName);
}
if (!candidate.exists())
candidate = Environment::systemEnvironment().searchInPath(fileName);
return candidate;
@@ -136,7 +143,8 @@ void QbsSettings::loadSettings()
void QbsSettings::storeSettings() const
{
QSettings * const s = Core::ICore::settings();
s->setValue(QBS_EXE_KEY, m_settings.qbsExecutableFilePath.toString());
QtcSettings::setValueWithDefault(s, QBS_EXE_KEY, m_settings.qbsExecutableFilePath.toString(),
defaultQbsExecutableFilePath().toString());
s->setValue(QBS_DEFAULT_INSTALL_DIR_KEY, m_settings.defaultInstallDirTemplate);
s->setValue(USE_CREATOR_SETTINGS_KEY, m_settings.useCreatorSettings);
}
@@ -148,6 +156,7 @@ public:
{
m_qbsExePathChooser.setExpectedKind(PathChooser::ExistingCommand);
m_qbsExePathChooser.setFilePath(QbsSettings::qbsExecutableFilePath());
m_resetQbsExeButton.setText(Tr::tr("Reset"));
m_defaultInstallDirLineEdit.setText(QbsSettings::defaultInstallDirTemplate());
m_versionLabel.setText(getQbsVersionString());
//: %1 == "Qt Creator" or "Qt Design Studio"
@@ -157,13 +166,19 @@ public:
const auto layout = new QFormLayout(this);
layout->addRow(&m_settingsDirCheckBox);
layout->addRow(Tr::tr("Path to qbs executable:"), &m_qbsExePathChooser);
const auto qbsExeLayout = new QHBoxLayout;
qbsExeLayout->addWidget(&m_qbsExePathChooser);
qbsExeLayout->addWidget(&m_resetQbsExeButton);
layout->addRow(Tr::tr("Path to qbs executable:"), qbsExeLayout);
layout->addRow(Tr::tr("Default installation directory:"), &m_defaultInstallDirLineEdit);
layout->addRow(Tr::tr("Qbs version:"), &m_versionLabel);
connect(&m_qbsExePathChooser, &PathChooser::textChanged, [this] {
m_versionLabel.setText(getQbsVersionString());
});
connect(&m_resetQbsExeButton, &QPushButton::clicked, [this] {
m_qbsExePathChooser.setFilePath(QbsSettings::defaultQbsExecutableFilePath());
});
}
void apply() final
@@ -185,6 +200,7 @@ private:
}
PathChooser m_qbsExePathChooser;
QPushButton m_resetQbsExeButton;
QLabel m_versionLabel;
QCheckBox m_settingsDirCheckBox;
FancyLineEdit m_defaultInstallDirLineEdit;

View File

@@ -27,6 +27,7 @@ public:
static QbsSettings &instance();
static Utils::FilePath qbsExecutableFilePath();
static Utils::FilePath defaultQbsExecutableFilePath();
static Utils::FilePath qbsConfigFilePath();
static bool hasQbsExecutable();
static QString defaultInstallDirTemplate();