forked from qt-creator/qt-creator
QtSupport: Some FilePathification
Change-Id: I8861c78a08a0390296d8d5c2271a5e1cbd7cc192 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -867,26 +867,28 @@ void QtSettingsPageWidget::updateWidgets()
|
|||||||
m_editPathPushButton->setEnabled(enabled && !isAutodetected);
|
m_editPathPushButton->setEnabled(enabled && !isAutodetected);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString settingsFile(const QString &baseDir)
|
static FilePath settingsFile(const QString &baseDir)
|
||||||
{
|
{
|
||||||
return baseDir + (baseDir.isEmpty() ? "" : "/") + QCoreApplication::organizationName() + '/'
|
return FilePath::fromString(baseDir + (baseDir.isEmpty() ? "" : "/")
|
||||||
+ QCoreApplication::applicationName() + ".ini";
|
+ QCoreApplication::organizationName() + '/'
|
||||||
|
+ QCoreApplication::applicationName() + ".ini");
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString qtVersionsFile(const QString &baseDir)
|
static FilePath qtVersionsFile(const QString &baseDir)
|
||||||
{
|
{
|
||||||
return baseDir + (baseDir.isEmpty() ? "" : "/") + QCoreApplication::organizationName() + '/'
|
return FilePath::fromString(baseDir + (baseDir.isEmpty() ? "" : "/")
|
||||||
+ QCoreApplication::applicationName() + '/' + "qtversion.xml";
|
+ QCoreApplication::organizationName() + '/'
|
||||||
|
+ QCoreApplication::applicationName() + '/' + "qtversion.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<FilePath> currentlyLinkedQtDir(bool *hasInstallSettings)
|
static std::optional<FilePath> currentlyLinkedQtDir(bool *hasInstallSettings)
|
||||||
{
|
{
|
||||||
const QString installSettingsFilePath = settingsFile(ICore::resourcePath().toUrlishString());
|
const FilePath installSettingsFilePath = settingsFile(ICore::resourcePath().path());
|
||||||
const bool installSettingsExist = QFileInfo::exists(installSettingsFilePath);
|
const bool installSettingsExist = installSettingsFilePath.exists();
|
||||||
if (hasInstallSettings)
|
if (hasInstallSettings)
|
||||||
*hasInstallSettings = installSettingsExist;
|
*hasInstallSettings = installSettingsExist;
|
||||||
if (installSettingsExist) {
|
if (installSettingsExist) {
|
||||||
const QVariant value = QSettings(installSettingsFilePath, QSettings::IniFormat)
|
const QVariant value = QSettings(installSettingsFilePath.toFSPathString(), QSettings::IniFormat)
|
||||||
.value(kInstallSettingsKey);
|
.value(kInstallSettingsKey);
|
||||||
if (value.isValid())
|
if (value.isValid())
|
||||||
return FilePath::fromSettings(value);
|
return FilePath::fromSettings(value);
|
||||||
@@ -977,12 +979,12 @@ const QStringList kSubdirsToCheck = {"",
|
|||||||
"Tools/QtCreator/share/qtcreator",
|
"Tools/QtCreator/share/qtcreator",
|
||||||
"share/qtcreator"};
|
"share/qtcreator"};
|
||||||
|
|
||||||
static QStringList settingsFilesToCheck()
|
static FilePaths settingsFilesToCheck()
|
||||||
{
|
{
|
||||||
return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return settingsFile(dir); });
|
return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return settingsFile(dir); });
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList qtversionFilesToCheck()
|
static FilePaths qtversionFilesToCheck()
|
||||||
{
|
{
|
||||||
return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return qtVersionsFile(dir); });
|
return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return qtVersionsFile(dir); });
|
||||||
}
|
}
|
||||||
@@ -994,8 +996,8 @@ static std::optional<FilePath> settingsDirForQtDir(const FilePath &baseDirectory
|
|||||||
return qtDir / dir;
|
return qtDir / dir;
|
||||||
});
|
});
|
||||||
const FilePath validDir = Utils::findOrDefault(dirsToCheck, [baseDirectory](const FilePath &dir) {
|
const FilePath validDir = Utils::findOrDefault(dirsToCheck, [baseDirectory](const FilePath &dir) {
|
||||||
return QFileInfo::exists(settingsFile(baseDirectory.resolvePath(dir).toUrlishString()))
|
return settingsFile(baseDirectory.resolvePath(dir).path()).exists()
|
||||||
|| QFileInfo::exists(qtVersionsFile(baseDirectory.resolvePath(dir).toUrlishString()));
|
|| qtVersionsFile(baseDirectory.resolvePath(dir).path()).exists();
|
||||||
});
|
});
|
||||||
if (!validDir.isEmpty())
|
if (!validDir.isEmpty())
|
||||||
return validDir;
|
return validDir;
|
||||||
@@ -1007,12 +1009,13 @@ static FancyLineEdit::AsyncValidationResult validateQtInstallDir(const QString &
|
|||||||
{
|
{
|
||||||
const FilePath qtDir = FilePath::fromUserInput(input);
|
const FilePath qtDir = FilePath::fromUserInput(input);
|
||||||
if (!settingsDirForQtDir(baseDirectory, qtDir)) {
|
if (!settingsDirForQtDir(baseDirectory, qtDir)) {
|
||||||
const QStringList filesToCheck = settingsFilesToCheck() + qtversionFilesToCheck();
|
const FilePaths filesToCheck = settingsFilesToCheck() + qtversionFilesToCheck();
|
||||||
return make_unexpected(
|
return make_unexpected(
|
||||||
"<html><body>"
|
"<html><body>"
|
||||||
+ ::QtSupport::Tr::tr("Qt installation information was not found in \"%1\". "
|
+ ::QtSupport::Tr::tr("Qt installation information was not found in \"%1\". "
|
||||||
"Choose a directory that contains one of the files %2")
|
"Choose a directory that contains one of the files %2")
|
||||||
.arg(qtDir.toUserOutput(), "<pre>" + filesToCheck.join('\n') + "</pre>"));
|
.arg(qtDir.toUserOutput(), "<pre>" +
|
||||||
|
FilePath::formatFilePaths(filesToCheck, "\n") + "</pre>"));
|
||||||
}
|
}
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
@@ -1036,7 +1039,7 @@ void QtSettingsPageWidget::linkWithQt()
|
|||||||
auto pathLabel = new QLabel(Tr::tr("Qt installation path:"));
|
auto pathLabel = new QLabel(Tr::tr("Qt installation path:"));
|
||||||
pathLabel->setToolTip(
|
pathLabel->setToolTip(
|
||||||
Tr::tr("Choose the Qt installation directory, or a directory that contains \"%1\".")
|
Tr::tr("Choose the Qt installation directory, or a directory that contains \"%1\".")
|
||||||
.arg(settingsFile("")));
|
.arg(settingsFile("").toUserOutput()));
|
||||||
auto pathInput = new PathChooser;
|
auto pathInput = new PathChooser;
|
||||||
pathInput->setExpectedKind(PathChooser::ExistingDirectory);
|
pathInput->setExpectedKind(PathChooser::ExistingDirectory);
|
||||||
pathInput->setBaseDirectory(FilePath::fromString(QCoreApplication::applicationDirPath()));
|
pathInput->setBaseDirectory(FilePath::fromString(QCoreApplication::applicationDirPath()));
|
||||||
@@ -1076,15 +1079,15 @@ void QtSettingsPageWidget::linkWithQt()
|
|||||||
unlinkButton->setEnabled(currentLink.has_value());
|
unlinkButton->setEnabled(currentLink.has_value());
|
||||||
connect(unlinkButton, &QPushButton::clicked, &dialog, [&dialog, &askForRestart] {
|
connect(unlinkButton, &QPushButton::clicked, &dialog, [&dialog, &askForRestart] {
|
||||||
bool removeSettingsFile = false;
|
bool removeSettingsFile = false;
|
||||||
const QString filePath = settingsFile(ICore::resourcePath().toUrlishString());
|
const FilePath filePath = settingsFile(ICore::resourcePath().path());
|
||||||
{
|
{
|
||||||
QSettings installSettings(filePath, QSettings::IniFormat);
|
QSettings installSettings(filePath.toFSPathString(), QSettings::IniFormat);
|
||||||
installSettings.remove(kInstallSettingsKey);
|
installSettings.remove(kInstallSettingsKey);
|
||||||
if (installSettings.allKeys().isEmpty())
|
if (installSettings.allKeys().isEmpty())
|
||||||
removeSettingsFile = true;
|
removeSettingsFile = true;
|
||||||
}
|
}
|
||||||
if (removeSettingsFile)
|
if (removeSettingsFile)
|
||||||
QFile::remove(filePath);
|
filePath.removeFile();
|
||||||
askForRestart = true;
|
askForRestart = true;
|
||||||
dialog.reject();
|
dialog.reject();
|
||||||
});
|
});
|
||||||
@@ -1097,14 +1100,15 @@ void QtSettingsPageWidget::linkWithQt()
|
|||||||
const std::optional<FilePath> settingsDir = settingsDirForQtDir(pathInput->baseDirectory(),
|
const std::optional<FilePath> settingsDir = settingsDirForQtDir(pathInput->baseDirectory(),
|
||||||
pathInput->unexpandedFilePath());
|
pathInput->unexpandedFilePath());
|
||||||
if (QTC_GUARD(settingsDir)) {
|
if (QTC_GUARD(settingsDir)) {
|
||||||
const QString settingsFilePath = settingsFile(ICore::resourcePath().toUrlishString());
|
const FilePath settingsFilePath = settingsFile(ICore::resourcePath().path());
|
||||||
QSettings settings(settingsFilePath, 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(),
|
||||||
Tr::tr("Error Linking With Qt"),
|
Tr::tr("Error Linking With Qt"),
|
||||||
Tr::tr("Could not write to \"%1\".").arg(settingsFilePath));
|
Tr::tr("Could not write to \"%1\".")
|
||||||
|
.arg(settingsFilePath.toUserOutput()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user