summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/kitmanager.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2014-07-29 15:15:27 +0200
committerTobias Hunger <tobias.hunger@digia.com>2014-07-30 13:49:59 +0200
commitb2ea6e1b9e4cd15e3ac1255b9a67ed033eb70f7c (patch)
tree6a57783b449188f85d713e6df4be46d6919d8417 /src/plugins/projectexplorer/kitmanager.cpp
parent281161c24276a52a4e120f2d43ad578895a1a04a (diff)
downloadqt-creator-b2ea6e1b9e4cd15e3ac1255b9a67ed033eb70f7c.tar.gz
FeatureProvider: Move features into Kits
Make available features and platforms methods on kits (implemented via the KitInformation). Add convenience methods to KitManager to collect all that. Remove QtFeatureProvider and implement KitFeatureProvider instead. The idea of this patch is to make it easier to find which kits are applicable to which wizard: I should now be able to match the wizard features against a kit and have a good set of kits to choose from. Change-Id: Ie5be0213f142cfdf4417ac55bd6cbb056265a531 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'src/plugins/projectexplorer/kitmanager.cpp')
-rw-r--r--src/plugins/projectexplorer/kitmanager.cpp70
1 files changed, 69 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp
index a1b66a9a6c..891ed458c1 100644
--- a/src/plugins/projectexplorer/kitmanager.cpp
+++ b/src/plugins/projectexplorer/kitmanager.cpp
@@ -30,9 +30,10 @@
#include "kitmanager.h"
#include "kit.h"
-#include "task.h"
+#include "kitfeatureprovider.h"
#include "kitmanagerconfigwidget.h"
#include "project.h"
+#include "task.h"
#include <coreplugin/icore.h>
@@ -341,6 +342,35 @@ void KitManager::deregisterKitInformation(KitInformation *ki)
delete ki;
}
+QSet<QString> KitManager::availablePlatforms()
+{
+ QSet<QString> platforms;
+ foreach (const Kit *k, kits())
+ platforms.unite(k->availablePlatforms());
+ return platforms;
+}
+
+QString KitManager::displayNameForPlatform(const QString &platform)
+{
+ foreach (const Kit *k, kits()) {
+ const QString displayName = k->displayNameForPlatform(platform);
+ if (!displayName.isEmpty())
+ return displayName;
+ }
+ return QString();
+}
+
+Core::FeatureSet KitManager::availableFeatures(const QString &platform)
+{
+ Core::FeatureSet features;
+ foreach (const Kit *k, kits()) {
+ QSet<QString> kitPlatforms = k->availablePlatforms();
+ if (kitPlatforms.isEmpty() || kitPlatforms.contains(platform))
+ features |= k->availableFeatures();
+ }
+ return features;
+}
+
KitManager::KitList KitManager::restoreKits(const Utils::FileName &fileName)
{
KitList result;
@@ -586,9 +616,47 @@ QString KitInformation::displayNamePostfix(const Kit *k) const
return QString();
}
+QSet<QString> KitInformation::availablePlatforms(const Kit *k) const
+{
+ Q_UNUSED(k);
+ return QSet<QString>();
+}
+
+QString KitInformation::displayNameForPlatform(const Kit *k, const QString &platform) const
+{
+ Q_UNUSED(k);
+ Q_UNUSED(platform);
+ return QString();
+}
+
+Core::FeatureSet KitInformation::availableFeatures(const Kit *k) const
+{
+ Q_UNUSED(k);
+ return Core::FeatureSet();
+}
+
void KitInformation::notifyAboutUpdate(Kit *k)
{
KitManager::notifyAboutUpdate(k);
}
+// --------------------------------------------------------------------
+// KitFeatureProvider:
+// --------------------------------------------------------------------
+
+Core::FeatureSet Internal::KitFeatureProvider::availableFeatures(const QString &platform) const
+{
+ return KitManager::availableFeatures(platform);
+}
+
+QStringList Internal::KitFeatureProvider::availablePlatforms() const
+{
+ return KitManager::availablePlatforms().toList();
+}
+
+QString Internal::KitFeatureProvider::displayNameForPlatform(const QString &string) const
+{
+ return KitManager::displayNameForPlatform(string);
+}
+
} // namespace ProjectExplorer