diff options
author | Eike Ziller <eike.ziller@qt.io> | 2020-04-17 10:50:33 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2020-04-20 06:33:55 +0000 |
commit | 9e84724c538eb878ac62b864ae101986245c5ed7 (patch) | |
tree | 2cc1c0fa32e22bb2920658fd58cb6134219b6d63 /src/plugins | |
parent | 9e057a55368286058023510efc328f68250ecb5e (diff) | |
download | qt-creator-9e84724c538eb878ac62b864ae101986245c5ed7.tar.gz |
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>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/qtsupport/qtoptionspage.cpp | 26 |
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>") |