diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2014-07-29 15:15:27 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2014-07-30 13:49:59 +0200 |
commit | b2ea6e1b9e4cd15e3ac1255b9a67ed033eb70f7c (patch) | |
tree | 6a57783b449188f85d713e6df4be46d6919d8417 /src/plugins/projectexplorer/kitmanager.cpp | |
parent | 281161c24276a52a4e120f2d43ad578895a1a04a (diff) | |
download | qt-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.cpp | 70 |
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 |