aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-04-17 10:50:33 +0200
committerEike Ziller <eike.ziller@qt.io>2020-04-20 06:33:55 +0000
commit9e84724c538eb878ac62b864ae101986245c5ed7 (patch)
tree2cc1c0fa32e22bb2920658fd58cb6134219b6d63
parent9e057a55368286058023510efc328f68250ecb5e (diff)
Fix "Link with Qt" for Qt offline installers
The Qt offline installers do not necessarily write a QtCreator.ini. Check for qtversion.xml as well. Change-Id: Ib7fd9f39444a8eec817646dd495fdc94696906e8 Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--src/plugins/qtsupport/qtoptionspage.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp
index a53fb57c9d..95c3b84d50 100644
--- a/src/plugins/qtsupport/qtoptionspage.cpp
+++ b/src/plugins/qtsupport/qtoptionspage.cpp
@@ -796,6 +796,12 @@ static QString settingsFile(const QString &baseDir)
+ Core::Constants::IDE_CASED_ID + ".ini";
}
+static QString qtVersionsFile(const QString &baseDir)
+{
+ return baseDir + (baseDir.isEmpty() ? "" : "/") + Core::Constants::IDE_SETTINGSVARIANT_STR + '/'
+ + Core::Constants::IDE_ID + '/' + "qtversion.xml";
+}
+
static Utils::optional<QString> currentlyLinkedQtDir(bool *hasInstallSettings)
{
const QString installSettingsFilePath = settingsFile(Core::ICore::resourcePath());
@@ -883,7 +889,18 @@ void QtOptionsPageWidget::apply()
const QStringList kSubdirsToCheck = {"",
"Qt Creator.app/Contents/Resources",
"Contents/Resources",
- "Tools/QtCreator/share/qtcreator"};
+ "Tools/QtCreator/share/qtcreator",
+ "share/qtcreator"};
+
+static QStringList settingsFilesToCheck()
+{
+ return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return settingsFile(dir); });
+}
+
+static QStringList qtversionFilesToCheck()
+{
+ return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return qtVersionsFile(dir); });
+}
static Utils::optional<QString> settingsDirForQtDir(const QString &qtDir)
{
@@ -891,7 +908,7 @@ static Utils::optional<QString> settingsDirForQtDir(const QString &qtDir)
return QString(qtDir + '/' + dir);
});
const QString validDir = Utils::findOrDefault(dirsToCheck, [](const QString &dir) {
- return QFile::exists(settingsFile(dir));
+ return QFile::exists(settingsFile(dir)) || QFile::exists(qtVersionsFile(dir));
});
if (!validDir.isEmpty())
return validDir;
@@ -903,10 +920,7 @@ static bool validateQtInstallDir(FancyLineEdit *input, QString *errorString)
const QString qtDir = input->text();
if (!settingsDirForQtDir(qtDir)) {
if (errorString) {
- const QStringList filesToCheck = Utils::transform(kSubdirsToCheck,
- [](const QString &dir) {
- return settingsFile(dir);
- });
+ const QStringList filesToCheck = settingsFilesToCheck() + qtversionFilesToCheck();
*errorString = QtOptionsPageWidget::tr(
"<html><body>Qt installation information was not found in \"%1\". "
"Choose a directory that contains one of the files <pre>%2</pre>")