forked from qt-creator/qt-creator
QtSupport: Simplify settingsDirForQtDir
FilePath::isEmpty is good enough error condition in this local context. Change-Id: I9000fc20d375fa55710adcf563dd96c02b584700 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -989,26 +989,22 @@ static FilePaths qtversionFilesToCheck()
|
|||||||
return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return qtVersionsFile(dir); });
|
return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return qtVersionsFile(dir); });
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<FilePath> settingsDirForQtDir(const FilePath &baseDirectory,
|
static FilePath settingsDirForQtDir(const FilePath &baseDirectory, const FilePath &qtDir)
|
||||||
const FilePath &qtDir)
|
|
||||||
{
|
{
|
||||||
const FilePaths dirsToCheck = Utils::transform(kSubdirsToCheck, [qtDir](const QString &dir) {
|
const FilePaths dirsToCheck = Utils::transform(kSubdirsToCheck, [qtDir](const QString &dir) {
|
||||||
return qtDir / dir;
|
return qtDir / dir;
|
||||||
});
|
});
|
||||||
const FilePath validDir = Utils::findOrDefault(dirsToCheck, [baseDirectory](const FilePath &dir) {
|
return Utils::findOrDefault(dirsToCheck, [baseDirectory](const FilePath &dir) {
|
||||||
return settingsFile(baseDirectory.resolvePath(dir).path()).exists()
|
return settingsFile(baseDirectory.resolvePath(dir).path()).exists()
|
||||||
|| qtVersionsFile(baseDirectory.resolvePath(dir).path()).exists();
|
|| qtVersionsFile(baseDirectory.resolvePath(dir).path()).exists();
|
||||||
});
|
});
|
||||||
if (!validDir.isEmpty())
|
|
||||||
return validDir;
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static FancyLineEdit::AsyncValidationResult validateQtInstallDir(const QString &input,
|
static FancyLineEdit::AsyncValidationResult validateQtInstallDir(const QString &input,
|
||||||
const FilePath &baseDirectory)
|
const FilePath &baseDirectory)
|
||||||
{
|
{
|
||||||
const FilePath qtDir = FilePath::fromUserInput(input);
|
const FilePath qtDir = FilePath::fromUserInput(input);
|
||||||
if (!settingsDirForQtDir(baseDirectory, qtDir)) {
|
if (!settingsDirForQtDir(baseDirectory, qtDir).isEmpty()) {
|
||||||
const FilePaths filesToCheck = settingsFilesToCheck() + qtversionFilesToCheck();
|
const FilePaths filesToCheck = settingsFilesToCheck() + qtversionFilesToCheck();
|
||||||
return make_unexpected(
|
return make_unexpected(
|
||||||
"<html><body>"
|
"<html><body>"
|
||||||
@@ -1097,12 +1093,12 @@ void QtSettingsPageWidget::linkWithQt()
|
|||||||
dialog.setMinimumWidth(520);
|
dialog.setMinimumWidth(520);
|
||||||
dialog.exec();
|
dialog.exec();
|
||||||
if (dialog.result() == QDialog::Accepted) {
|
if (dialog.result() == QDialog::Accepted) {
|
||||||
const std::optional<FilePath> settingsDir = settingsDirForQtDir(pathInput->baseDirectory(),
|
const FilePath settingsDir = settingsDirForQtDir(pathInput->baseDirectory(),
|
||||||
pathInput->unexpandedFilePath());
|
pathInput->unexpandedFilePath());
|
||||||
if (QTC_GUARD(settingsDir)) {
|
if (QTC_GUARD(!settingsDir.isEmpty())) {
|
||||||
const FilePath settingsFilePath = settingsFile(ICore::resourcePath().path());
|
const FilePath settingsFilePath = settingsFile(ICore::resourcePath().path());
|
||||||
QSettings settings(settingsFilePath.toFSPathString(), QSettings::IniFormat);
|
QSettings settings(settingsFilePath.toFSPathString(), QSettings::IniFormat);
|
||||||
settings.setValue(kInstallSettingsKey, settingsDir->toVariant());
|
settings.setValue(kInstallSettingsKey, settingsDir.toVariant());
|
||||||
settings.sync();
|
settings.sync();
|
||||||
if (settings.status() == QSettings::AccessError) {
|
if (settings.status() == QSettings::AccessError) {
|
||||||
QMessageBox::critical(ICore::dialogParent(),
|
QMessageBox::critical(ICore::dialogParent(),
|
||||||
|
Reference in New Issue
Block a user