From d2243c9765b2c7d917ab2d078e412d72f53bd959 Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@nokia.com>
Date: Mon, 17 Oct 2011 14:18:40 +0200
Subject: [PATCH] Add a maximum Qt Version to the wizards

All existing wizards derived from AbstractMobileWizard do not support qt
5. So they won't offer them, nor default to them.

Task-number: QTCREATORBUG-6321
Change-Id: I999e2565cec5b0d7da04c10e38ac2cb101352e5b
Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
---
 .../qt-desktop/qt4desktoptargetfactory.cpp     | 11 +++++++----
 .../qt-desktop/qt4desktoptargetfactory.h       |  5 ++++-
 .../qt-s60/qt4symbiantargetfactory.cpp         |  7 +++++--
 .../qt-s60/qt4symbiantargetfactory.h           |  4 +++-
 .../qt4projectmanager/qt4basetargetfactory.h   |  5 ++++-
 src/plugins/qt4projectmanager/qt4target.cpp    | 18 ++++++++++++------
 src/plugins/qt4projectmanager/qt4target.h      |  2 ++
 .../wizards/abstractmobileappwizard.cpp        |  5 ++++-
 .../wizards/abstractmobileappwizard.h          |  2 +-
 .../wizards/html5appwizard.cpp                 |  3 ++-
 .../wizards/mobileappwizard.cpp                |  2 +-
 .../wizards/qtquickappwizard.cpp               |  2 +-
 .../wizards/targetsetuppage.cpp                | 12 ++++++++++--
 .../wizards/targetsetuppage.h                  |  4 ++++
 src/plugins/qtsupport/qtversionmanager.cpp     |  7 +++++--
 src/plugins/qtsupport/qtversionmanager.h       |  4 +++-
 16 files changed, 68 insertions(+), 25 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
index aedab9d6458..8f09417a7fa 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
@@ -125,15 +125,18 @@ ProjectExplorer::Target  *Qt4DesktopTargetFactory::restore(ProjectExplorer::Proj
     return 0;
 }
 
-Qt4TargetSetupWidget *Qt4DesktopTargetFactory::createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &number, bool importEnabled, QList<BuildConfigurationInfo> importInfos)
+Qt4TargetSetupWidget *Qt4DesktopTargetFactory::createTargetSetupWidget(const QString &id, const QString &proFilePath,
+                                                                       const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                                       const QtSupport::QtVersionNumber &maximumQtVersion,
+                                                                       bool importEnabled, QList<BuildConfigurationInfo> importInfos)
 {
 
-    QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number);
+    QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, minimumQtVersion, maximumQtVersion);
     if (infos.isEmpty())
         return 0;
     Qt4DefaultTargetSetupWidget *widget = new Qt4DefaultTargetSetupWidget(this, id, proFilePath,  infos,
-                                                                          number,  importEnabled,
-                                                                          importInfos,
+                                                                          minimumQtVersion, maximumQtVersion,
+                                                                          importEnabled, importInfos,
                                                                           Qt4DefaultTargetSetupWidget::USER);
     widget->setBuildConfiguraionComboBoxVisible(true);
     return widget;
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
index 55e784c3e0e..42d5d88c95a 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
@@ -54,7 +54,10 @@ public:
 
     virtual bool supportsTargetId(const QString &id) const;
 
-    Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion, bool importEnabled, QList<BuildConfigurationInfo> importInfos);
+    Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id, const QString &proFilePath,
+                                                  const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                  const QtSupport::QtVersionNumber &maximumQtVersion,
+                                                  bool importEnabled, QList<BuildConfigurationInfo> importInfos);
     QString buildNameForId(const QString &id) const;
     QSet<QString> targetFeatures(const QString &id) const;
     ProjectExplorer::Target *create(ProjectExplorer::Project *parent, const QString &id);
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
index 262adefa8dd..74ba7764b60 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
@@ -164,9 +164,12 @@ QList<ProjectExplorer::Task> Qt4SymbianTargetFactory::reportIssues(const QString
     return results;
 }
 
-QList<BuildConfigurationInfo> Qt4SymbianTargetFactory::availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion)
+QList<BuildConfigurationInfo> Qt4SymbianTargetFactory::availableBuildConfigurations(const QString &id, const QString &proFilePath,
+                                                                                    const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                                                    const QtSupport::QtVersionNumber &maximumQtVersion)
 {
-    QList<BuildConfigurationInfo> infos = Qt4BaseTargetFactory::availableBuildConfigurations(id, proFilePath, minimumQtVersion);
+    QList<BuildConfigurationInfo> infos
+            = Qt4BaseTargetFactory::availableBuildConfigurations(id, proFilePath, minimumQtVersion, maximumQtVersion);
     if (id != Constants::S60_EMULATOR_TARGET_ID)
         return infos;
     // For emulator filter out all non debug builds
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
index 2f5723bfc86..4afa6790a7f 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
@@ -59,7 +59,9 @@ public:
 
     QString shadowBuildDirectory(const QString &profilePath, const QString &id, const QString &suffix);
     QList<ProjectExplorer::Task> reportIssues(const QString &proFile);
-    QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion);
+    QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath,
+                                                               const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                               const QtSupport::QtVersionNumber &maximumQtVersion);
 
     bool selectByDefault(const QString &id) const;
     QSet<QString> targetFeatures(const QString &id) const;
diff --git a/src/plugins/qt4projectmanager/qt4basetargetfactory.h b/src/plugins/qt4projectmanager/qt4basetargetfactory.h
index 633613854bb..af258569ba9 100644
--- a/src/plugins/qt4projectmanager/qt4basetargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt4basetargetfactory.h
@@ -58,6 +58,7 @@ public:
     virtual Qt4TargetSetupWidget *createTargetSetupWidget(const QString &id,
                                                           const QString &proFilePath,
                                                           const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                          const QtSupport::QtVersionNumber &maximumQtVersion,
                                                           bool importEnabled,
                                                           QList<BuildConfigurationInfo> importInfos);
 
@@ -69,7 +70,9 @@ public:
     /// used by the default implementation of createTargetSetupWidget
     /// not needed otherwise
     /// by default creates one debug + one release buildconfiguration per qtversion
-    virtual QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion);
+    virtual QList<BuildConfigurationInfo> availableBuildConfigurations(const QString &id, const QString &proFilePath,
+                                                                       const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                                       const QtSupport::QtVersionNumber &maximumQtVersion);
 
     virtual QList<ProjectExplorer::Task> reportIssues(const QString &proFile);
     /// only used in the TargetSetupPage
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 014887462de..dcc9246ac80 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -90,17 +90,18 @@ Qt4BaseTargetFactory::~Qt4BaseTargetFactory()
 
 Qt4TargetSetupWidget *Qt4BaseTargetFactory::createTargetSetupWidget(const QString &id,
                                                                     const QString &proFilePath,
-                                                                    const QtSupport::QtVersionNumber &number,
+                                                                    const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                                    const QtSupport::QtVersionNumber &maximumQtVersion,
                                                                     bool importEnabled,
                                                                     QList<BuildConfigurationInfo> importInfos)
 {
-    QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, number);
+    QList<BuildConfigurationInfo> infos = this->availableBuildConfigurations(id, proFilePath, minimumQtVersion, maximumQtVersion);
     if (infos.isEmpty())
         return 0;
     const bool supportsShadowBuilds
             = targetFeatures(id).contains(Constants::SHADOWBUILD_TARGETFEATURE_ID);
     Qt4DefaultTargetSetupWidget *widget
-            = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, number,
+            = new Qt4DefaultTargetSetupWidget(this, id, proFilePath, infos, minimumQtVersion, maximumQtVersion,
                                               importEnabled && supportsShadowBuilds, importInfos,
                                               (supportsShadowBuilds
                                                ? Qt4DefaultTargetSetupWidget::ENABLE
@@ -118,10 +119,13 @@ ProjectExplorer::Target *Qt4BaseTargetFactory::create(ProjectExplorer::Project *
     return create(parent, id, w->buildConfigurationInfos());
 }
 
-QList<BuildConfigurationInfo> Qt4BaseTargetFactory::availableBuildConfigurations(const QString &id, const QString &proFilePath, const QtSupport::QtVersionNumber &minimumQtVersion)
+QList<BuildConfigurationInfo> Qt4BaseTargetFactory::availableBuildConfigurations(const QString &id, const QString &proFilePath,
+                                                                                 const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                                                 const QtSupport::QtVersionNumber &maximumQtVersion)
 {
     QList<BuildConfigurationInfo> infoList;
-    QList<QtSupport::BaseQtVersion *> knownVersions = QtSupport::QtVersionManager::instance()->versionsForTargetId(id, minimumQtVersion);
+    QList<QtSupport::BaseQtVersion *> knownVersions
+            = QtSupport::QtVersionManager::instance()->versionsForTargetId(id, minimumQtVersion, maximumQtVersion);
 
     foreach (QtSupport::BaseQtVersion *version, knownVersions) {
         if (!version->isValid() || !version->toolChainAvailable(id))
@@ -422,6 +426,7 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
                                                          const QString &proFilePath,
                                                          const QList<BuildConfigurationInfo> &infos,
                                                          const QtSupport::QtVersionNumber &minimumQtVersion,
+                                                         const QtSupport::QtVersionNumber &maximumQtVersion,
                                                          bool importEnabled,
                                                          const QList<BuildConfigurationInfo> &importInfos,
                                                          ShadowBuildOption shadowBuild)
@@ -430,6 +435,7 @@ Qt4DefaultTargetSetupWidget::Qt4DefaultTargetSetupWidget(Qt4BaseTargetFactory *f
       m_factory(factory),
       m_proFilePath(proFilePath),
       m_minimumQtVersion(minimumQtVersion),
+      m_maximumQtVersion(maximumQtVersion),
       m_importInfos(importInfos),
       m_directoriesEnabled(true),
       m_hasInSourceBuild(false),
@@ -652,7 +658,7 @@ void Qt4DefaultTargetSetupWidget::setProFilePath(const QString &proFilePath)
 {
     m_proFilePath = proFilePath;
     m_detailsWidget->setAdditionalSummaryText(issuesListToString(m_factory->reportIssues(m_proFilePath)));
-    setBuildConfigurationInfos(m_factory->availableBuildConfigurations(m_id, proFilePath, m_minimumQtVersion), false);
+    setBuildConfigurationInfos(m_factory->availableBuildConfigurations(m_id, proFilePath, m_minimumQtVersion, m_maximumQtVersion), false);
 }
 
 void Qt4DefaultTargetSetupWidget::setBuildConfiguraionComboBoxVisible(bool b)
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index f9325e2230a..f3053fbc472 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -116,6 +116,7 @@ public:
                                 const QString &proFilePath,
                                 const QList<BuildConfigurationInfo> &info,
                                 const QtSupport::QtVersionNumber &minimumQtVersion,
+                                const QtSupport::QtVersionNumber &maximumQtVersion,
                                 bool importEnabled,
                                 const QList<BuildConfigurationInfo> &importInfos,
                                 ShadowBuildOption shadowBuild);
@@ -158,6 +159,7 @@ private:
     Qt4BaseTargetFactory *m_factory;
     QString m_proFilePath;
     QtSupport::QtVersionNumber m_minimumQtVersion;
+    QtSupport::QtVersionNumber m_maximumQtVersion;
     Utils::DetailsWidget *m_detailsWidget;
     QGridLayout *m_importLayout;
     QGridLayout *m_newBuildsLayout;
diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp
index b1c6f121875..3e2913a9116 100644
--- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp
@@ -49,7 +49,9 @@
 
 namespace Qt4ProjectManager {
 
-AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent, const QtSupport::QtVersionNumber &minimumQtVersionNumber)
+AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent,
+                                                             const QtSupport::QtVersionNumber &minimumQtVersionNumber,
+                                                             const QtSupport::QtVersionNumber &maximumQtVersionNumber)
     : ProjectExplorer::BaseProjectWizardDialog(parent)
     , m_genericOptionsPageId(-1)
     , m_symbianOptionsPageId(-1)
@@ -66,6 +68,7 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent, co
     m_targetsPage = new TargetSetupPage;
     m_targetsPage->setPreferredFeatures(QSet<QString>() << Constants::MOBILE_TARGETFEATURE_ID);
     m_targetsPage->setMinimumQtVersion(minimumQtVersionNumber);
+    m_targetsPage->setMaximumQtVersion(maximumQtVersionNumber);
     resize(900, 450);
 
     m_genericOptionsPage = new Internal::MobileAppWizardGenericOptionsPage;
diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
index f4aff8058dd..2439cf39507 100644
--- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
+++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h
@@ -57,7 +57,7 @@ class QT4PROJECTMANAGER_EXPORT AbstractMobileAppWizardDialog : public ProjectExp
     Q_OBJECT
 
 protected:
-    explicit AbstractMobileAppWizardDialog(QWidget *parent, const QtSupport::QtVersionNumber &minimumQtVersionNumber);
+    explicit AbstractMobileAppWizardDialog(QWidget *parent, const QtSupport::QtVersionNumber &minimumQtVersionNumber, const QtSupport::QtVersionNumber &maximumQtVersionNumber);
     void addMobilePages();
 
 public:
diff --git a/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp b/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp
index 178dc934c1a..1b1100f40f2 100644
--- a/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp
@@ -38,6 +38,7 @@
 #include "targetsetuppage.h"
 
 #include "qt4projectmanagerconstants.h"
+#include <limits>
 
 #include <QtCore/QCoreApplication>
 #include <QtGui/QIcon>
@@ -58,7 +59,7 @@ private:
 };
 
 Html5AppWizardDialog::Html5AppWizardDialog(QWidget *parent)
-    : AbstractMobileAppWizardDialog(parent, QtSupport::QtVersionNumber())
+    : AbstractMobileAppWizardDialog(parent, QtSupport::QtVersionNumber(), QtSupport::QtVersionNumber(4, INT_MAX, INT_MAX))
     , m_htmlOptionsPage(0)
 {
     setWindowTitle(tr("New HTML5 Application"));
diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
index 533ba09e38a..78081df8a8e 100644
--- a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp
@@ -60,7 +60,7 @@ class MobileAppWizardDialog : public AbstractMobileAppWizardDialog
     Q_OBJECT
 public:
     explicit MobileAppWizardDialog(QWidget *parent = 0)
-        : AbstractMobileAppWizardDialog(parent, QtSupport::QtVersionNumber())
+        : AbstractMobileAppWizardDialog(parent, QtSupport::QtVersionNumber(), QtSupport::QtVersionNumber(4, INT_MAX, INT_MAX))
     {
         setWindowTitle(DisplayName);
         setIntroDescription(Description);
diff --git a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp
index 8a7cc425394..86d98ebe56f 100644
--- a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp
@@ -66,7 +66,7 @@ private:
 };
 
 QtQuickAppWizardDialog::QtQuickAppWizardDialog(QWidget *parent)
-    : AbstractMobileAppWizardDialog(parent, QtSupport::QtVersionNumber(4, 7, 0))
+    : AbstractMobileAppWizardDialog(parent, QtSupport::QtVersionNumber(4, 7, 0), QtSupport::QtVersionNumber(4, INT_MAX, INT_MAX))
 {
     setWindowTitle(tr("New Qt Quick Application"));
     setIntroDescription(tr("This wizard generates a Qt Quick application project."));
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
index 9c15946f284..e692aa464bd 100644
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
@@ -55,7 +55,8 @@ TargetSetupPage::TargetSetupPage(QWidget *parent) :
     QWizardPage(parent),
     m_importSearch(false),
     m_spacer(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)),
-    m_ui(new Internal::Ui::TargetSetupPage)
+    m_ui(new Internal::Ui::TargetSetupPage),
+    m_maximumQtVersionNumber(INT_MAX, INT_MAX, INT_MAX)
 {
     m_ui->setupUi(this);
     QWidget *centralWidget = new QWidget(this);
@@ -112,6 +113,11 @@ void TargetSetupPage::setMinimumQtVersion(const QtSupport::QtVersionNumber &numb
     m_minimumQtVersionNumber = number;
 }
 
+void TargetSetupPage::setMaximumQtVersion(const QtSupport::QtVersionNumber &number)
+{
+    m_maximumQtVersionNumber = number;
+}
+
 void TargetSetupPage::setImportSearch(bool b)
 {
     m_importSearch = b;
@@ -129,7 +135,9 @@ void TargetSetupPage::setupWidgets()
 
             QList<BuildConfigurationInfo> infos = BuildConfigurationInfo::filterBuildConfigurationInfos(m_importInfos, id);
             Qt4TargetSetupWidget *widget =
-                    factory->createTargetSetupWidget(id, m_proFilePath, m_minimumQtVersionNumber, m_importSearch, infos);
+                    factory->createTargetSetupWidget(id, m_proFilePath,
+                                                     m_minimumQtVersionNumber, m_maximumQtVersionNumber,
+                                                     m_importSearch, infos);
             if (widget) {
                 bool selectTarget = false;
                 if (!m_importInfos.isEmpty()) {
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h
index 066f796a766..197c4911a9c 100644
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h
+++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h
@@ -81,6 +81,9 @@ public:
     /// Sets the minimum qt version
     /// calls this before \sa initializePage()
     void setMinimumQtVersion(const QtSupport::QtVersionNumber &number);
+    /// Sets the maximum qt version
+    /// calls this before \sa initializePage()
+    void setMaximumQtVersion(const QtSupport::QtVersionNumber &number);
     /// Sets whether the TargetSetupPage looks on disk for builds of this project
     /// call this before \sa initializePage()
     void setImportSearch(bool b);
@@ -102,6 +105,7 @@ private:
     QSet<QString> m_requiredFeatures;
     bool m_importSearch;
     QtSupport::QtVersionNumber m_minimumQtVersionNumber;
+    QtSupport::QtVersionNumber m_maximumQtVersionNumber;
     QString m_proFilePath;
     QString m_defaultShadowBuildLocation;
     QMap<QString, Qt4TargetSetupWidget *> m_widgets;
diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp
index e4e49124e9b..0357f1a3599 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -463,11 +463,14 @@ bool QtVersionManager::supportsTargetId(const QString &id) const
     return false;
 }
 
-QList<BaseQtVersion *> QtVersionManager::versionsForTargetId(const QString &id, const QtVersionNumber &minimumQtVersion) const
+QList<BaseQtVersion *> QtVersionManager::versionsForTargetId(const QString &id,
+                                                             const QtVersionNumber &minimumQtVersion,
+                                                             const QtVersionNumber &maximumQtVersion) const
 {
     QList<BaseQtVersion *> targetVersions;
     foreach (BaseQtVersion *version, m_versions) {
-        if (version->supportsTargetId(id) && version->qtVersion() >= minimumQtVersion)
+        if (version->supportsTargetId(id) && version->qtVersion() >= minimumQtVersion
+                && version->qtVersion() <= maximumQtVersion)
             targetVersions.append(version);
     }
     qSort(targetVersions.begin(), targetVersions.end(), &qtVersionNumberCompare);
diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h
index c9e3c480be6..b6ae925140f 100644
--- a/src/plugins/qtsupport/qtversionmanager.h
+++ b/src/plugins/qtsupport/qtversionmanager.h
@@ -95,7 +95,9 @@ public:
     // This returns a list of versions that support the target with the given id.
     // @return A list of QtVersions that supports a target. This list may be empty!
 
-    QList<BaseQtVersion *> versionsForTargetId(const QString &id, const QtVersionNumber &minimumQtVersion = QtVersionNumber()) const;
+    QList<BaseQtVersion *> versionsForTargetId(const QString &id,
+                                               const QtVersionNumber &minimumQtVersion = QtVersionNumber(),
+                                               const QtVersionNumber &maximumQtVersion = QtVersionNumber(INT_MAX, INT_MAX, INT_MAX)) const;
     QSet<QString> supportedTargetIds() const;
 
     // Static Methods
-- 
GitLab