diff --git a/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp b/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp
index b35b10311cd..f509bdd8775 100644
--- a/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/librarywizard.cpp
@@ -56,7 +56,7 @@ LibraryWizard::LibraryWizard()
"
a shared C++ library for use with QPluginLoader and runtime (Plugins)"
"a shared or static C++ library for use with another project at linktime"));
setIcon(QIcon(QLatin1String(":/wizards/images/lib.png")));
- setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QT));
+ setRequiredFeatures(Core::FeatureSet(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_PREFIX)));
}
Core::BaseFileWizard *LibraryWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
diff --git a/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp
index 01038647bff..3741e3c10cf 100644
--- a/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/subdirsprojectwizard.cpp
@@ -51,7 +51,7 @@ SubdirsProjectWizard::SubdirsProjectWizard()
setDescription(tr("Creates a qmake-based subdirs project. This allows you to group "
"your projects in a tree structure."));
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
- setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QT));
+ setRequiredFeatures(Core::FeatureSet(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_PREFIX)));
}
Core::BaseFileWizard *SubdirsProjectWizard::create(QWidget *parent,
diff --git a/src/plugins/qmakeprojectmanager/wizards/testwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/testwizard.cpp
index 579f7f98caf..7aa03dc2621 100644
--- a/src/plugins/qmakeprojectmanager/wizards/testwizard.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/testwizard.cpp
@@ -57,7 +57,7 @@ TestWizard::TestWizard()
"and that there are no regressions."));
setIcon(QIcon(QLatin1String(":/wizards/images/console.png")));
setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE) |
- Core::Feature(QtSupport::Constants::FEATURE_QT));
+ Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_PREFIX));
}
Core::BaseFileWizard *TestWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
diff --git a/src/plugins/qmljstools/qmljsbundleprovider.cpp b/src/plugins/qmljstools/qmljsbundleprovider.cpp
index 760004caf77..78a7f78aef0 100644
--- a/src/plugins/qmljstools/qmljsbundleprovider.cpp
+++ b/src/plugins/qmljstools/qmljsbundleprovider.cpp
@@ -131,9 +131,7 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit
QString qtQmlPath = qtVersion->qmakeProperty("QT_INSTALL_QML");
Core::FeatureSet features = qtVersion->availableFeatures();
- if (features.contains(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK))
- || features.contains(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1))
- || features.contains(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1_1))) {
+ if (features.contains(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_QUICK_PREFIX))) {
myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtImportsPath);
QDir qtQuick1Bundles(qtImportsPath);
qtQuick1Bundles.setNameFilters(QStringList(QLatin1String("*-bundle.json")));
@@ -158,7 +156,7 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit
bundles.mergeBundleForLanguage(Dialect::Qml, qtQuick1Bundle);
bundles.mergeBundleForLanguage(Dialect::QmlQtQuick1, qtQuick1Bundle);
}
- if (features.contains(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2))) {
+ if (features.contains(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_QUICK_PREFIX, 2))) {
myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtQmlPath);
QDir qtQuick2Bundles(qtQmlPath);
qtQuick2Bundles.setNameFilters(QStringList(QLatin1String("*-bundle.json")));
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 3363ca6a328..b4825cbf679 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -98,7 +98,24 @@ QtVersionNumber::QtVersionNumber()
FeatureSet QtVersionNumber::features() const
{
- return FeatureSet::versionedFeatures(Constants::FEATURE_QT, majorVersion, minorVersion);
+ return FeatureSet::versionedFeatures(Constants::FEATURE_QT_PREFIX, majorVersion, minorVersion);
+}
+
+bool QtVersionNumber::matches(int major, int minor, int patch) const
+{
+ if (major < 0)
+ return true;
+ if (major != majorVersion)
+ return false;
+
+ if (minor < 0)
+ return true;
+ if (minor != minorVersion)
+ return false;
+
+ if (patch < 0)
+ return true;
+ return (patch == patchVersion);
}
bool QtVersionNumber::operator <(const QtVersionNumber &b) const
@@ -355,59 +372,62 @@ FeatureSet BaseQtVersion::availableFeatures() const
{
FeatureSet features = qtVersion().features(); // Qt Version features
- features |= (FeatureSet(Constants::FEATURE_QWIDGETS)
- | FeatureSet(Constants::FEATURE_QT_WEBKIT)
- | FeatureSet(Constants::FEATURE_QT_CONSOLE));
+ features |= (Feature(Constants::FEATURE_QWIDGETS)
+ | Feature(Constants::FEATURE_QT_WEBKIT)
+ | Feature(Constants::FEATURE_QT_CONSOLE));
if (qtVersion() < QtVersionNumber(4, 7, 0))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_1);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 1, 0);
- if (qtVersion() < QtVersionNumber(4, 7, 1))
+ if (qtVersion().matches(4, 7, 0))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_1_1);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 1, 1);
- if (qtVersion() < QtVersionNumber(5, 0, 0))
+ if (qtVersion().matches(4))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_2);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_0);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 0);
- if (qtVersion() < QtVersionNumber(5, 1, 0))
+ if (qtVersion().matches(5, 0))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_1);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1_0);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 1);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 0);
- if (qtVersion() < QtVersionNumber(5, 2, 0))
+ if (qtVersion().matches(5, 1))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_2);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1_1);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 2);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 1);
- if (qtVersion() < QtVersionNumber(5, 3, 0))
+ if (qtVersion().matches(5, 2))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_3);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1_2);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 3);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 2);
- if (qtVersion() < QtVersionNumber(5, 4, 0))
+ if (qtVersion().matches(5, 3))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_2_4);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_CONTROLS_1_3);
- features |= FeatureSet(Constants::FEATURE_QT_QUICK_UI_FILES);
+ features |= Feature(Constants::FEATURE_QT_QUICK_UI_FILES);
- if (qtVersion() < QtVersionNumber(5, 5, 0))
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 4);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 3);
+
+ if (qtVersion().matches(5, 4))
return features;
- features |= FeatureSet(Constants::FEATURE_QT_3D);
- features |= FeatureSet(Constants::FEATURE_QT_CANVAS3D);
+ features |= Feature(Constants::FEATURE_QT_3D);
+ features |= Feature(Constants::FEATURE_QT_CANVAS3D);
+
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 5);
+ features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 4);
+
+ if (qtVersion().matches(5, 5))
+ return features;
return features;
}
diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h
index 1df47a217ad..57d0aaaf690 100644
--- a/src/plugins/qtsupport/baseqtversion.h
+++ b/src/plugins/qtsupport/baseqtversion.h
@@ -73,6 +73,9 @@ public:
int majorVersion;
int minorVersion;
int patchVersion;
+
+ bool matches(int major = -1, int minor = -1, int patch = -1) const;
+
bool operator <(const QtVersionNumber &b) const;
bool operator <=(const QtVersionNumber &b) const;
bool operator >(const QtVersionNumber &b) const;
diff --git a/src/plugins/qtsupport/qtsupportconstants.h b/src/plugins/qtsupport/qtsupportconstants.h
index 38e0f0589fa..4df20c25b0c 100644
--- a/src/plugins/qtsupport/qtsupportconstants.h
+++ b/src/plugins/qtsupport/qtsupportconstants.h
@@ -50,24 +50,11 @@ static const char QTVERSIONID[] = "Id";
static const char QTVERSIONNAME[] = "Name";
//Qt Features
-const char FEATURE_QT[] = "QtSupport.Wizards.FeatureQt";
+const char FEATURE_QT_PREFIX[] = "QtSupport.Wizards.FeatureQt";
const char FEATURE_QWIDGETS[] = "QtSupport.Wizards.FeatureQWidgets";
-const char FEATURE_QT_QUICK[] = "QtSupport.Wizards.FeatureQtQuick";
+const char FEATURE_QT_QUICK_PREFIX[] = "QtSupport.Wizards.FeatureQtQuick";
const char FEATURE_QMLPROJECT[] = "QtSupport.Wizards.FeatureQtQuickProject";
-const char FEATURE_QT_QUICK_1[] = "QtSupport.Wizards.FeatureQtQuick.1";
-const char FEATURE_QT_QUICK_1_1[] = "QtSupport.Wizards.FeatureQtQuick.1.1";
-const char FEATURE_QT_QUICK_2[] = "QtSupport.Wizards.FeatureQtQuick.2";
-const char FEATURE_QT_QUICK_2_0[] = "QtSupport.Wizards.FeatureQtQuick.2.0";
-const char FEATURE_QT_QUICK_2_1[] = "QtSupport.Wizards.FeatureQtQuick.2.1";
-const char FEATURE_QT_QUICK_2_2[] = "QtSupport.Wizards.FeatureQtQuick.2.2";
-const char FEATURE_QT_QUICK_2_3[] = "QtSupport.Wizards.FeatureQtQuick.2.3";
-const char FEATURE_QT_QUICK_2_4[] = "QtSupport.Wizards.FeatureQtQuick.2.4";
-const char FEATURE_QT_QUICK_CONTROLS[] = "QtSupport.Wizards.FeatureQtQuick.Controls";
-const char FEATURE_QT_QUICK_CONTROLS_1[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1";
-const char FEATURE_QT_QUICK_CONTROLS_1_0[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.0";
-const char FEATURE_QT_QUICK_CONTROLS_1_1[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.1";
-const char FEATURE_QT_QUICK_CONTROLS_1_2[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.2";
-const char FEATURE_QT_QUICK_CONTROLS_1_3[] = "QtSupport.Wizards.FeatureQtQuick.Controls.1.3";
+const char FEATURE_QT_QUICK_CONTROLS_PREFIX[] = "QtSupport.Wizards.FeatureQtQuick.Controls";
const char FEATURE_QT_QUICK_UI_FILES[] = "QtSupport.Wizards.FeatureQtQuick.UiFiles";
const char FEATURE_QT_WEBKIT[] = "QtSupport.Wizards.FeatureQtWebkit";
const char FEATURE_QT_3D[] = "QtSupport.Wizards.FeatureQt3d";
diff --git a/src/plugins/winrt/winrtqtversion.cpp b/src/plugins/winrt/winrtqtversion.cpp
index b49c8bff4e4..07728e68452 100644
--- a/src/plugins/winrt/winrtqtversion.cpp
+++ b/src/plugins/winrt/winrtqtversion.cpp
@@ -69,7 +69,7 @@ Core::FeatureSet WinRtQtVersion::availableFeatures() const
Core::FeatureSet features = QtSupport::BaseQtVersion::availableFeatures();
features |= Core::FeatureSet(QtSupport::Constants::FEATURE_MOBILE);
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE));
- features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1));
+ features.remove(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1));
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_WEBKIT));
return features;
}