forked from qt-creator/qt-creator
FeatureProvider: Remove Feature and FeatureSet
Use Core::Id for Feature and QSet<Core::Id> for FeatureSet. Change-Id: I12341036bd9eaa82589d92bd3f7d21f2e6b737bd Reviewed-by: Niels Weber <niels.weber@theqtcompany.com> Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
@@ -134,12 +134,12 @@ void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const
|
|||||||
BaseQtVersion::parseMkSpec(evaluator);
|
BaseQtVersion::parseMkSpec(evaluator);
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet AndroidQtVersion::availableFeatures() const
|
QSet<Core::Id> AndroidQtVersion::availableFeatures() const
|
||||||
{
|
{
|
||||||
Core::FeatureSet features = QtSupport::BaseQtVersion::availableFeatures();
|
QSet<Core::Id> features = QtSupport::BaseQtVersion::availableFeatures();
|
||||||
features |= Core::FeatureSet(QtSupport::Constants::FEATURE_MOBILE);
|
features.insert(QtSupport::Constants::FEATURE_MOBILE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE));
|
features.remove(QtSupport::Constants::FEATURE_QT_CONSOLE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_WEBKIT));
|
features.remove(QtSupport::Constants::FEATURE_QT_WEBKIT);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -56,7 +56,7 @@ public:
|
|||||||
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const;
|
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const;
|
||||||
Utils::Environment qmakeRunEnvironment() const;
|
Utils::Environment qmakeRunEnvironment() const;
|
||||||
|
|
||||||
Core::FeatureSet availableFeatures() const;
|
QSet<Core::Id> availableFeatures() const;
|
||||||
QString platformName() const;
|
QString platformName() const;
|
||||||
QString platformDisplayName() const;
|
QString platformDisplayName() const;
|
||||||
|
|
||||||
|
@@ -63,7 +63,7 @@ public:
|
|||||||
Q_DECLARE_FLAGS(DialogParameterFlags, DialogParameterEnum)
|
Q_DECLARE_FLAGS(DialogParameterFlags, DialogParameterEnum)
|
||||||
|
|
||||||
explicit WizardDialogParameters(const QString &defaultPath, const QString &platform,
|
explicit WizardDialogParameters(const QString &defaultPath, const QString &platform,
|
||||||
const FeatureSet &requiredFeatures, DialogParameterFlags flags,
|
const QSet<Id> &requiredFeatures, DialogParameterFlags flags,
|
||||||
QVariantMap extraValues)
|
QVariantMap extraValues)
|
||||||
: m_defaultPath(defaultPath),
|
: m_defaultPath(defaultPath),
|
||||||
m_selectedPlatform(platform),
|
m_selectedPlatform(platform),
|
||||||
@@ -78,7 +78,7 @@ public:
|
|||||||
QString selectedPlatform() const
|
QString selectedPlatform() const
|
||||||
{ return m_selectedPlatform; }
|
{ return m_selectedPlatform; }
|
||||||
|
|
||||||
FeatureSet requiredFeatures() const
|
QSet<Id> requiredFeatures() const
|
||||||
{ return m_requiredFeatures; }
|
{ return m_requiredFeatures; }
|
||||||
|
|
||||||
DialogParameterFlags flags() const
|
DialogParameterFlags flags() const
|
||||||
@@ -90,7 +90,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
QString m_defaultPath;
|
QString m_defaultPath;
|
||||||
QString m_selectedPlatform;
|
QString m_selectedPlatform;
|
||||||
FeatureSet m_requiredFeatures;
|
QSet<Id> m_requiredFeatures;
|
||||||
DialogParameterFlags m_parameterFlags;
|
DialogParameterFlags m_parameterFlags;
|
||||||
QVariantMap m_extraValues;
|
QVariantMap m_extraValues;
|
||||||
};
|
};
|
||||||
|
@@ -52,92 +52,7 @@
|
|||||||
\sa QtSupport::QtVersionManager
|
\sa QtSupport::QtVersionManager
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn IFeatureProvider::IFeatureProvider()
|
|
||||||
\internal
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn IFeatureProvider::~IFeatureProvider()
|
\fn IFeatureProvider::~IFeatureProvider()
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn FetureSet IFeatureProvider::availableFeatures(const QString &platform) const
|
|
||||||
Returns available features provided by this manager.
|
|
||||||
\sa FeatureProvider::Features
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\class Core::Feature
|
|
||||||
|
|
||||||
\brief The Feature class describes a single feature to be used in
|
|
||||||
Core::FeatureProvider::Features.
|
|
||||||
|
|
||||||
\sa Core::FeaturesSet
|
|
||||||
\sa Core::IWizard
|
|
||||||
\sa QtSupport::QtVersionManager
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\class Core::FeatureSet
|
|
||||||
|
|
||||||
\brief The FeatureSet class is a set of available or required feature sets.
|
|
||||||
|
|
||||||
This class behaves similarly to QFlags. However, instead of enums, Features
|
|
||||||
relies on string ids and is therefore extendable.
|
|
||||||
|
|
||||||
\sa Core::Feature
|
|
||||||
\sa Core::IWizard
|
|
||||||
\sa QtSupport::QtVersionManager
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn bool FeatureSet::contains(const Feature &feature) const
|
|
||||||
|
|
||||||
Returns true if \a feature is available.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn bool FeatureSet::contains(const FeatureSet &features) const
|
|
||||||
|
|
||||||
Returns true if all \a features are available.
|
|
||||||
*/
|
|
||||||
|
|
||||||
Core::Feature Core::Feature::versionedFeature(const QByteArray &prefix, int major, int minor)
|
|
||||||
{
|
|
||||||
if (major < 0)
|
|
||||||
return Feature::fromName(prefix);
|
|
||||||
|
|
||||||
QByteArray result = prefix + '.';
|
|
||||||
result += QString::number(major).toLatin1();
|
|
||||||
|
|
||||||
if (minor < 0)
|
|
||||||
return Feature::fromName(result);
|
|
||||||
return Feature::fromName(result + '.' + QString::number(minor).toLatin1());
|
|
||||||
}
|
|
||||||
|
|
||||||
Core::FeatureSet Core::FeatureSet::versionedFeatures(const QByteArray &prefix, int major, int minor)
|
|
||||||
{
|
|
||||||
FeatureSet result;
|
|
||||||
result |= Feature::fromName(prefix);
|
|
||||||
|
|
||||||
if (major < 0)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
const QByteArray majorStr = QString::number(major).toLatin1();
|
|
||||||
const QByteArray featureMajor = prefix + majorStr;
|
|
||||||
const QByteArray featureDotMajor = prefix + '.' + majorStr;
|
|
||||||
|
|
||||||
result |= Feature::fromName(featureMajor) | Feature::fromName(featureDotMajor);
|
|
||||||
|
|
||||||
for (int i = 0; i <= minor; ++i) {
|
|
||||||
const QByteArray minorStr = QString::number(i).toLatin1();
|
|
||||||
result |= Feature::fromName(featureMajor + '.' + minorStr)
|
|
||||||
| Feature::fromName(featureDotMajor + '.' + minorStr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
@@ -45,125 +45,13 @@ class CORE_EXPORT FeatureSet;
|
|||||||
class CORE_EXPORT IFeatureProvider
|
class CORE_EXPORT IFeatureProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IFeatureProvider() {}
|
virtual ~IFeatureProvider() = default;
|
||||||
virtual ~IFeatureProvider() {}
|
|
||||||
virtual FeatureSet availableFeatures(const QString &platform) const = 0;
|
virtual QSet<Id> availableFeatures(const QString &platform) const = 0;
|
||||||
virtual QStringList availablePlatforms() const = 0;
|
virtual QStringList availablePlatforms() const = 0;
|
||||||
virtual QString displayNameForPlatform(const QString &string) const = 0;
|
virtual QString displayNameForPlatform(const QString &string) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CORE_EXPORT Feature : public Id
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Feature() = default;
|
|
||||||
template <int N> Feature(const char(&ch)[N]) : Id(ch) { }
|
|
||||||
|
|
||||||
static Feature fromString(const QString &str) { return Feature(Id::fromString(str)); }
|
|
||||||
static Feature fromName(const QByteArray &ba) { return Feature(Id::fromName(ba)); }
|
|
||||||
|
|
||||||
static Feature versionedFeature(const QByteArray &prefix, int major = -1, int minor = -1);
|
|
||||||
|
|
||||||
private:
|
|
||||||
explicit Feature(const Id id) : Id(id) { }
|
|
||||||
};
|
|
||||||
|
|
||||||
class CORE_EXPORT FeatureSet : private QSet<Feature>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit FeatureSet(Feature id)
|
|
||||||
{
|
|
||||||
if (id.isValid())
|
|
||||||
insert(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
FeatureSet() = default;
|
|
||||||
FeatureSet(const FeatureSet &other) = default;
|
|
||||||
FeatureSet &operator=(const FeatureSet &other) = default;
|
|
||||||
|
|
||||||
static FeatureSet versionedFeatures(const QByteArray &prefix, int major, int minor = -1);
|
|
||||||
|
|
||||||
using QSet<Feature>::isEmpty;
|
|
||||||
|
|
||||||
bool contains(const Feature &feature) const
|
|
||||||
{
|
|
||||||
return QSet<Feature>::contains(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool contains(const FeatureSet &features) const
|
|
||||||
{
|
|
||||||
return QSet<Feature>::contains(features);
|
|
||||||
}
|
|
||||||
|
|
||||||
void remove(const Feature &feature)
|
|
||||||
{
|
|
||||||
QSet<Feature>::remove(feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
void remove(const FeatureSet &features)
|
|
||||||
{
|
|
||||||
QSet<Feature>::subtract(features);
|
|
||||||
}
|
|
||||||
|
|
||||||
FeatureSet operator|(const Feature &feature) const
|
|
||||||
{
|
|
||||||
FeatureSet copy = *this;
|
|
||||||
if (feature.isValid())
|
|
||||||
copy.insert(feature);
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
FeatureSet operator|(const FeatureSet &features) const
|
|
||||||
{
|
|
||||||
FeatureSet copy = *this;
|
|
||||||
if (!features.isEmpty())
|
|
||||||
copy.unite(features);
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
FeatureSet &operator|=(const Feature &feature)
|
|
||||||
{
|
|
||||||
if (feature.isValid())
|
|
||||||
insert(feature);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
FeatureSet &operator|=(const FeatureSet &features)
|
|
||||||
{
|
|
||||||
if (!features.isEmpty())
|
|
||||||
unite(features);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
QStringList toStringList() const
|
|
||||||
{
|
|
||||||
QStringList stringList;
|
|
||||||
foreach (const Feature &feature, QSet<Feature>(*this))
|
|
||||||
stringList.append(feature.toString());
|
|
||||||
return stringList;
|
|
||||||
}
|
|
||||||
|
|
||||||
static FeatureSet fromStringList(const QStringList &list)
|
|
||||||
{
|
|
||||||
FeatureSet features;
|
|
||||||
foreach (const QString &i, list)
|
|
||||||
features |= Feature::fromString(i);
|
|
||||||
return features;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
|
||||||
/*
|
|
||||||
The following operators have to be defined in the global namespace!
|
|
||||||
Otherwise "using namespace Core" would hide other | operators
|
|
||||||
defined in the global namespace (e. g. QFlags).
|
|
||||||
*/
|
|
||||||
|
|
||||||
inline Core::FeatureSet operator |(Core::Feature feature1, Core::Feature feature2)
|
|
||||||
{ return Core::FeatureSet(feature1) | feature2; }
|
|
||||||
|
|
||||||
inline Core::FeatureSet operator|(Core::Feature feature1, Core::FeatureSet feature2)
|
|
||||||
{ return feature2 | feature1; }
|
|
||||||
|
|
||||||
|
|
||||||
#endif // FEATUREPROVIDER_H
|
#endif // FEATUREPROVIDER_H
|
||||||
|
@@ -266,7 +266,9 @@ QSet<Id> Id::fromStringList(const QStringList &list)
|
|||||||
|
|
||||||
QStringList Id::toStringList(const QSet<Id> &ids)
|
QStringList Id::toStringList(const QSet<Id> &ids)
|
||||||
{
|
{
|
||||||
return Utils::transform(ids.toList(), [](Id i) { return i.toString(); });
|
QList<Id> idList = ids.toList();
|
||||||
|
Utils::sort(idList);
|
||||||
|
return Utils::transform(idList, [](Id i) { return i.toString(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@@ -74,8 +74,7 @@ public:
|
|||||||
static Id fromName(const QByteArray &ba); // FIXME: avoid.
|
static Id fromName(const QByteArray &ba); // FIXME: avoid.
|
||||||
static Id fromSetting(const QVariant &variant); // Good to use.
|
static Id fromSetting(const QVariant &variant); // Good to use.
|
||||||
|
|
||||||
static Id versionedId(const QByteArray &prefix, int major, int minor);
|
static Id versionedId(const QByteArray &prefix, int major = -1, int minor = -1);
|
||||||
static QSet<Id> versionedIds(const QByteArray &prefix, int major, int minor);
|
|
||||||
|
|
||||||
static QSet<Id> fromStringList(const QStringList &list);
|
static QSet<Id> fromStringList(const QStringList &list);
|
||||||
static QStringList toStringList(const QSet<Id> &ids);
|
static QStringList toStringList(const QSet<Id> &ids);
|
||||||
|
@@ -407,27 +407,25 @@ void IWizardFactory::clearWizardFactories()
|
|||||||
s_areFactoriesLoaded = false;
|
s_areFactoriesLoaded = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet IWizardFactory::pluginFeatures() const
|
QSet<Id> IWizardFactory::pluginFeatures() const
|
||||||
{
|
{
|
||||||
static FeatureSet plugins;
|
static QSet<Id> plugins;
|
||||||
if (plugins.isEmpty()) {
|
if (plugins.isEmpty()) {
|
||||||
QStringList list;
|
|
||||||
// Implicitly create a feature for each plugin loaded:
|
// Implicitly create a feature for each plugin loaded:
|
||||||
foreach (ExtensionSystem::PluginSpec *s, ExtensionSystem::PluginManager::plugins()) {
|
foreach (ExtensionSystem::PluginSpec *s, ExtensionSystem::PluginManager::plugins()) {
|
||||||
if (s->state() == ExtensionSystem::PluginSpec::Running)
|
if (s->state() == ExtensionSystem::PluginSpec::Running)
|
||||||
list.append(s->name());
|
plugins.insert(Id::fromString(s->name()));
|
||||||
}
|
}
|
||||||
plugins = FeatureSet::fromStringList(list);
|
|
||||||
}
|
}
|
||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet IWizardFactory::availableFeatures(const QString &platformName) const
|
QSet<Id> IWizardFactory::availableFeatures(const QString &platformName) const
|
||||||
{
|
{
|
||||||
FeatureSet availableFeatures;
|
QSet<Id> availableFeatures;
|
||||||
|
|
||||||
foreach (const IFeatureProvider *featureManager, s_providerList)
|
foreach (const IFeatureProvider *featureManager, s_providerList)
|
||||||
availableFeatures |= featureManager->availableFeatures(platformName);
|
availableFeatures.unite(featureManager->availableFeatures(platformName));
|
||||||
|
|
||||||
return availableFeatures;
|
return availableFeatures;
|
||||||
}
|
}
|
||||||
|
@@ -71,7 +71,7 @@ public:
|
|||||||
QString category() const { return m_category; }
|
QString category() const { return m_category; }
|
||||||
QString displayCategory() const { return m_displayCategory; }
|
QString displayCategory() const { return m_displayCategory; }
|
||||||
QString descriptionImage() const { return m_descriptionImage; }
|
QString descriptionImage() const { return m_descriptionImage; }
|
||||||
FeatureSet requiredFeatures() const { return m_requiredFeatures; }
|
QSet<Id> requiredFeatures() const { return m_requiredFeatures; }
|
||||||
WizardFlags flags() const { return m_flags; }
|
WizardFlags flags() const { return m_flags; }
|
||||||
|
|
||||||
void setId(const Id id) { m_id = id; }
|
void setId(const Id id) { m_id = id; }
|
||||||
@@ -82,8 +82,8 @@ public:
|
|||||||
void setCategory(const QString &category) { m_category = category; }
|
void setCategory(const QString &category) { m_category = category; }
|
||||||
void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; }
|
void setDisplayCategory(const QString &displayCategory) { m_displayCategory = displayCategory; }
|
||||||
void setDescriptionImage(const QString &descriptionImage) { m_descriptionImage = descriptionImage; }
|
void setDescriptionImage(const QString &descriptionImage) { m_descriptionImage = descriptionImage; }
|
||||||
void setRequiredFeatures(const FeatureSet &featureSet) { m_requiredFeatures = featureSet; }
|
void setRequiredFeatures(const QSet<Id> &featureSet) { m_requiredFeatures = featureSet; }
|
||||||
void addRequiredFeature(const Feature &feature) { m_requiredFeatures |= feature; }
|
void addRequiredFeature(const Id &feature) { m_requiredFeatures |= feature; }
|
||||||
void setFlags(WizardFlags flags) { m_flags = flags; }
|
void setFlags(WizardFlags flags) { m_flags = flags; }
|
||||||
|
|
||||||
QString runPath(const QString &defaultPath);
|
QString runPath(const QString &defaultPath);
|
||||||
@@ -115,8 +115,8 @@ public:
|
|||||||
const QVariantMap &extraVariables);
|
const QVariantMap &extraVariables);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
FeatureSet pluginFeatures() const;
|
QSet<Id> pluginFeatures() const;
|
||||||
FeatureSet availableFeatures(const QString &platformName) const;
|
QSet<Id> availableFeatures(const QString &platformName) const;
|
||||||
|
|
||||||
virtual Utils::Wizard *runWizardImpl(const QString &path, QWidget *parent, const QString &platform,
|
virtual Utils::Wizard *runWizardImpl(const QString &path, QWidget *parent, const QString &platform,
|
||||||
const QVariantMap &variables) = 0;
|
const QVariantMap &variables) = 0;
|
||||||
@@ -135,7 +135,7 @@ private:
|
|||||||
QString m_displayCategory;
|
QString m_displayCategory;
|
||||||
QString m_descriptionImage;
|
QString m_descriptionImage;
|
||||||
Id m_id;
|
Id m_id;
|
||||||
FeatureSet m_requiredFeatures;
|
QSet<Id> m_requiredFeatures;
|
||||||
WizardKind m_kind = FileWizard;
|
WizardKind m_kind = FileWizard;
|
||||||
WizardFlags m_flags = 0;
|
WizardFlags m_flags = 0;
|
||||||
|
|
||||||
|
@@ -43,7 +43,7 @@ namespace Internal {
|
|||||||
|
|
||||||
FormClassWizard::FormClassWizard()
|
FormClassWizard::FormClassWizard()
|
||||||
{
|
{
|
||||||
setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QWIDGETS));
|
setRequiredFeatures({ QtSupport::Constants::FEATURE_QWIDGETS });
|
||||||
}
|
}
|
||||||
|
|
||||||
QString FormClassWizard::headerSuffix() const
|
QString FormClassWizard::headerSuffix() const
|
||||||
|
@@ -110,12 +110,12 @@ QString IosQtVersion::description() const
|
|||||||
return tr("iOS");
|
return tr("iOS");
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet IosQtVersion::availableFeatures() const
|
QSet<Core::Id> IosQtVersion::availableFeatures() const
|
||||||
{
|
{
|
||||||
Core::FeatureSet features = QtSupport::BaseQtVersion::availableFeatures();
|
QSet<Core::Id> features = QtSupport::BaseQtVersion::availableFeatures();
|
||||||
features |= Core::FeatureSet(QtSupport::Constants::FEATURE_MOBILE);
|
features.insert(QtSupport::Constants::FEATURE_MOBILE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE));
|
features.remove(QtSupport::Constants::FEATURE_QT_CONSOLE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_WEBKIT));
|
features.remove(QtSupport::Constants::FEATURE_QT_WEBKIT);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -55,7 +55,7 @@ public:
|
|||||||
|
|
||||||
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override;
|
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override;
|
||||||
|
|
||||||
Core::FeatureSet availableFeatures() const override;
|
QSet<Core::Id> availableFeatures() const override;
|
||||||
QString platformName() const override;
|
QString platformName() const override;
|
||||||
QString platformDisplayName() const override;
|
QString platformDisplayName() const override;
|
||||||
|
|
||||||
|
@@ -54,7 +54,7 @@ struct BaseProjectWizardDialogPrivate {
|
|||||||
Utils::ProjectIntroPage *introPage;
|
Utils::ProjectIntroPage *introPage;
|
||||||
int introPageId;
|
int introPageId;
|
||||||
QString selectedPlatform;
|
QString selectedPlatform;
|
||||||
Core::FeatureSet requiredFeatureSet;
|
QSet<Core::Id> requiredFeatureSet;
|
||||||
};
|
};
|
||||||
|
|
||||||
BaseProjectWizardDialogPrivate::BaseProjectWizardDialogPrivate(Utils::ProjectIntroPage *page, int id) :
|
BaseProjectWizardDialogPrivate::BaseProjectWizardDialogPrivate(Utils::ProjectIntroPage *page, int id) :
|
||||||
@@ -199,12 +199,12 @@ void BaseProjectWizardDialog::setSelectedPlatform(const QString &platform)
|
|||||||
d->selectedPlatform = platform;
|
d->selectedPlatform = platform;
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet BaseProjectWizardDialog::requiredFeatures() const
|
QSet<Core::Id> BaseProjectWizardDialog::requiredFeatures() const
|
||||||
{
|
{
|
||||||
return d->requiredFeatureSet;
|
return d->requiredFeatureSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseProjectWizardDialog::setRequiredFeatures(const Core::FeatureSet &featureSet)
|
void BaseProjectWizardDialog::setRequiredFeatures(const QSet<Core::Id> &featureSet)
|
||||||
{
|
{
|
||||||
d->requiredFeatureSet = featureSet;
|
d->requiredFeatureSet = featureSet;
|
||||||
}
|
}
|
||||||
|
@@ -80,8 +80,8 @@ protected:
|
|||||||
QString selectedPlatform() const;
|
QString selectedPlatform() const;
|
||||||
void setSelectedPlatform(const QString &platform);
|
void setSelectedPlatform(const QString &platform);
|
||||||
|
|
||||||
Core::FeatureSet requiredFeatures() const;
|
QSet<Core::Id> requiredFeatures() const;
|
||||||
void setRequiredFeatures(const Core::FeatureSet &featureSet);
|
void setRequiredFeatures(const QSet<Core::Id> &featureSet);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
|
@@ -457,13 +457,13 @@ static inline IWizardFactory::WizardKind kindAttribute(const QXmlStreamReader &r
|
|||||||
return IWizardFactory::ProjectWizard;
|
return IWizardFactory::ProjectWizard;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline FeatureSet readRequiredFeatures(const QXmlStreamReader &reader)
|
static inline QSet<Id> readRequiredFeatures(const QXmlStreamReader &reader)
|
||||||
{
|
{
|
||||||
QString value = reader.attributes().value(QLatin1String(featuresRequiredC)).toString();
|
QString value = reader.attributes().value(QLatin1String(featuresRequiredC)).toString();
|
||||||
QStringList stringList = value.split(QLatin1Char(','), QString::SkipEmptyParts);
|
QStringList stringList = value.split(QLatin1Char(','), QString::SkipEmptyParts);
|
||||||
FeatureSet features;
|
QSet<Id> features;
|
||||||
foreach (const QString &string, stringList)
|
foreach (const QString &string, stringList)
|
||||||
features |= Feature::fromString(string);
|
features |= Id::fromString(string);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -134,7 +134,7 @@ public:
|
|||||||
QString displayName;
|
QString displayName;
|
||||||
QString category;
|
QString category;
|
||||||
QString displayCategory;
|
QString displayCategory;
|
||||||
Core::FeatureSet requiredFeatures;
|
QSet<Core::Id> requiredFeatures;
|
||||||
Core::IWizardFactory::WizardFlags flags;
|
Core::IWizardFactory::WizardFlags flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -63,9 +63,9 @@ void JsonKitsPage::initializePage()
|
|||||||
connect(wiz, &JsonWizard::filesPolished, this, &JsonKitsPage::setupProjectFiles);
|
connect(wiz, &JsonWizard::filesPolished, this, &JsonKitsPage::setupProjectFiles);
|
||||||
|
|
||||||
const QString platform = wiz->stringValue(QLatin1String("Platform"));
|
const QString platform = wiz->stringValue(QLatin1String("Platform"));
|
||||||
const FeatureSet preferred
|
const QSet<Id> preferred
|
||||||
= evaluate(m_preferredFeatures, wiz->value(QLatin1String("PreferredFeatures")), wiz);
|
= evaluate(m_preferredFeatures, wiz->value(QLatin1String("PreferredFeatures")), wiz);
|
||||||
const FeatureSet required
|
const QSet<Id> required
|
||||||
= evaluate(m_requiredFeatures, wiz->value(QLatin1String("RequiredFeatures")), wiz);
|
= evaluate(m_requiredFeatures, wiz->value(QLatin1String("RequiredFeatures")), wiz);
|
||||||
|
|
||||||
setRequiredKitMatcher(KitMatcher([required](const Kit *k) { return k->hasFeatures(required); }));
|
setRequiredKitMatcher(KitMatcher([required](const Kit *k) { return k->hasFeatures(required); }));
|
||||||
@@ -133,16 +133,16 @@ void JsonKitsPage::setupProjectFiles(const JsonWizard::GeneratorFiles &files)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet JsonKitsPage::evaluate(const QVector<JsonKitsPage::ConditionalFeature> &list,
|
QSet<Id> JsonKitsPage::evaluate(const QVector<JsonKitsPage::ConditionalFeature> &list,
|
||||||
const QVariant &defaultSet, JsonWizard *wiz)
|
const QVariant &defaultSet, JsonWizard *wiz)
|
||||||
{
|
{
|
||||||
if (list.isEmpty())
|
if (list.isEmpty())
|
||||||
return FeatureSet::fromStringList(defaultSet.toStringList());
|
return Id::fromStringList(defaultSet.toStringList());
|
||||||
|
|
||||||
FeatureSet features;
|
QSet<Id> features;
|
||||||
foreach (const ConditionalFeature &f, list) {
|
foreach (const ConditionalFeature &f, list) {
|
||||||
if (JsonWizard::boolFromVariant(f.condition, wiz->expander()))
|
if (JsonWizard::boolFromVariant(f.condition, wiz->expander()))
|
||||||
features |= Feature::fromString(wiz->expander()->expand(f.feature));
|
features.insert(Id::fromString(wiz->expander()->expand(f.feature)));
|
||||||
}
|
}
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@@ -76,7 +76,7 @@ private:
|
|||||||
QVector<ConditionalFeature> m_requiredFeatures;
|
QVector<ConditionalFeature> m_requiredFeatures;
|
||||||
QVector<ConditionalFeature> m_preferredFeatures;
|
QVector<ConditionalFeature> m_preferredFeatures;
|
||||||
|
|
||||||
Core::FeatureSet evaluate(const QVector<ConditionalFeature> &list, const QVariant &defaultSet,
|
QSet<Core::Id> evaluate(const QVector<ConditionalFeature> &list, const QVariant &defaultSet,
|
||||||
JsonWizard *wiz);
|
JsonWizard *wiz);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -365,15 +365,15 @@ Utils::Wizard *JsonWizardFactory::runWizardImpl(const QString &path, QWidget *pa
|
|||||||
wizard->setWindowTitle(displayName());
|
wizard->setWindowTitle(displayName());
|
||||||
|
|
||||||
wizard->setValue(QStringLiteral("WizardDir"), m_wizardDir);
|
wizard->setValue(QStringLiteral("WizardDir"), m_wizardDir);
|
||||||
Core::FeatureSet tmp = requiredFeatures();
|
QSet<Core::Id> tmp = requiredFeatures();
|
||||||
tmp.remove(pluginFeatures());
|
tmp.subtract(pluginFeatures());
|
||||||
wizard->setValue(QStringLiteral("RequiredFeatures"), tmp.toStringList());
|
wizard->setValue(QStringLiteral("RequiredFeatures"), Core::Id::toStringList(tmp));
|
||||||
tmp = m_preferredFeatures;
|
tmp = m_preferredFeatures;
|
||||||
tmp.remove(pluginFeatures());
|
tmp.subtract(pluginFeatures());
|
||||||
wizard->setValue(QStringLiteral("PreferredFeatures"), tmp.toStringList());
|
wizard->setValue(QStringLiteral("PreferredFeatures"), Core::Id::toStringList(tmp));
|
||||||
|
|
||||||
wizard->setValue(QStringLiteral("Features"), availableFeatures(platform).toStringList());
|
wizard->setValue(QStringLiteral("Features"), Core::Id::toStringList(availableFeatures(platform)));
|
||||||
wizard->setValue(QStringLiteral("Plugins"), pluginFeatures().toStringList());
|
wizard->setValue(QStringLiteral("Plugins"), Core::Id::toStringList(pluginFeatures()));
|
||||||
|
|
||||||
// Add data to wizard:
|
// Add data to wizard:
|
||||||
for (auto i = variables.constBegin(); i != variables.constEnd(); ++i)
|
for (auto i = variables.constBegin(); i != variables.constEnd(); ++i)
|
||||||
@@ -493,9 +493,9 @@ bool JsonWizardFactory::isAvailable(const QString &platformName) const
|
|||||||
expander.registerVariable("Platform", tr("The platform selected for the wizard."),
|
expander.registerVariable("Platform", tr("The platform selected for the wizard."),
|
||||||
[platformName]() { return platformName; });
|
[platformName]() { return platformName; });
|
||||||
expander.registerVariable("Features", tr("The features available to this wizard."),
|
expander.registerVariable("Features", tr("The features available to this wizard."),
|
||||||
[this, e, platformName]() { return JsonWizard::stringListToArrayString(availableFeatures(platformName).toStringList(), e); });
|
[this, e, platformName]() { return JsonWizard::stringListToArrayString(Core::Id::toStringList(availableFeatures(platformName)), e); });
|
||||||
expander.registerVariable("Plugins", tr("The plugins loaded."),
|
expander.registerVariable("Plugins", tr("The plugins loaded."),
|
||||||
[this, e]() { return JsonWizard::stringListToArrayString(pluginFeatures().toStringList(), e); });
|
[this, e]() { return JsonWizard::stringListToArrayString(Core::Id::toStringList(pluginFeatures()), e); });
|
||||||
|
|
||||||
return JsonWizard::boolFromVariant(m_enabledExpression, &expander);
|
return JsonWizard::boolFromVariant(m_enabledExpression, &expander);
|
||||||
}
|
}
|
||||||
@@ -564,9 +564,9 @@ bool JsonWizardFactory::initialize(const QVariantMap &data, const QDir &baseDir,
|
|||||||
setDescriptionImage(strVal);
|
setDescriptionImage(strVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
setRequiredFeatures(Core::FeatureSet::fromStringList(data.value(QLatin1String(REQUIRED_FEATURES_KEY)).toStringList()));
|
setRequiredFeatures(Core::Id::fromStringList(data.value(QLatin1String(REQUIRED_FEATURES_KEY)).toStringList()));
|
||||||
m_preferredFeatures = Core::FeatureSet::fromStringList(data.value(QLatin1String(SUGGESTED_FEATURES_KEY)).toStringList());
|
m_preferredFeatures = Core::Id::fromStringList(data.value(QLatin1String(SUGGESTED_FEATURES_KEY)).toStringList());
|
||||||
m_preferredFeatures |= requiredFeatures();
|
m_preferredFeatures.unite(requiredFeatures());
|
||||||
|
|
||||||
strVal = localizedString(data.value(QLatin1String(DISPLAY_NAME_KEY)));
|
strVal = localizedString(data.value(QLatin1String(DISPLAY_NAME_KEY)));
|
||||||
if (strVal.isEmpty()) {
|
if (strVal.isEmpty()) {
|
||||||
|
@@ -117,7 +117,7 @@ private:
|
|||||||
QList<Page> m_pages;
|
QList<Page> m_pages;
|
||||||
QMap<QString, QString> m_options;
|
QMap<QString, QString> m_options;
|
||||||
|
|
||||||
Core::FeatureSet m_preferredFeatures;
|
QSet<Core::Id> m_preferredFeatures;
|
||||||
|
|
||||||
static int m_verbose;
|
static int m_verbose;
|
||||||
|
|
||||||
|
@@ -639,15 +639,15 @@ QString Kit::displayNameForPlatform(const QString &platform) const
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet Kit::availableFeatures() const
|
QSet<Id> Kit::availableFeatures() const
|
||||||
{
|
{
|
||||||
FeatureSet features;
|
QSet<Id> features;
|
||||||
foreach (const KitInformation *ki, KitManager::kitInformation())
|
foreach (const KitInformation *ki, KitManager::kitInformation())
|
||||||
features |= ki->availableFeatures(this);
|
features |= ki->availableFeatures(this);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Kit::hasFeatures(const FeatureSet &features) const
|
bool Kit::hasFeatures(const QSet<Id> &features) const
|
||||||
{
|
{
|
||||||
return availableFeatures().contains(features);
|
return availableFeatures().contains(features);
|
||||||
}
|
}
|
||||||
|
@@ -124,8 +124,8 @@ public:
|
|||||||
QSet<QString> availablePlatforms() const;
|
QSet<QString> availablePlatforms() const;
|
||||||
bool hasPlatform(const QString &platform) const;
|
bool hasPlatform(const QString &platform) const;
|
||||||
QString displayNameForPlatform(const QString &platform) const;
|
QString displayNameForPlatform(const QString &platform) const;
|
||||||
Core::FeatureSet availableFeatures() const;
|
QSet<Core::Id> availableFeatures() const;
|
||||||
bool hasFeatures(const Core::FeatureSet &features) const;
|
bool hasFeatures(const QSet<Core::Id> &features) const;
|
||||||
Utils::MacroExpander *macroExpander() const;
|
Utils::MacroExpander *macroExpander() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -40,7 +40,7 @@ namespace Internal {
|
|||||||
class KitFeatureProvider : public Core::IFeatureProvider
|
class KitFeatureProvider : public Core::IFeatureProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Core::FeatureSet availableFeatures(const QString &platform) const;
|
QSet<Core::Id> availableFeatures(const QString &platform) const;
|
||||||
QStringList availablePlatforms() const;
|
QStringList availablePlatforms() const;
|
||||||
QString displayNameForPlatform(const QString &string) const;
|
QString displayNameForPlatform(const QString &string) const;
|
||||||
};
|
};
|
||||||
|
@@ -341,12 +341,12 @@ KitMatcher DeviceTypeKitInformation::deviceTypeMatcher(Core::Id type)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet DeviceTypeKitInformation::availableFeatures(const Kit *k) const
|
QSet<Core::Id> DeviceTypeKitInformation::availableFeatures(const Kit *k) const
|
||||||
{
|
{
|
||||||
Core::Id id = DeviceTypeKitInformation::deviceTypeId(k);
|
Core::Id id = DeviceTypeKitInformation::deviceTypeId(k);
|
||||||
Core::FeatureSet result;
|
QSet<Core::Id> result;
|
||||||
if (id.isValid())
|
if (id.isValid())
|
||||||
result |= Core::Feature::fromString(QString::fromLatin1("DeviceType.") + id.toString());
|
result |= Core::Id::fromString(QString::fromLatin1("DeviceType.") + id.toString());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -133,7 +133,7 @@ public:
|
|||||||
|
|
||||||
static KitMatcher deviceTypeMatcher(Core::Id type);
|
static KitMatcher deviceTypeMatcher(Core::Id type);
|
||||||
|
|
||||||
Core::FeatureSet availableFeatures(const Kit *k) const;
|
QSet<Core::Id> availableFeatures(const Kit *k) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@@ -320,9 +320,9 @@ QString KitManager::displayNameForPlatform(const QString &platform)
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet KitManager::availableFeatures(const QString &platform)
|
QSet<Id> KitManager::availableFeatures(const QString &platform)
|
||||||
{
|
{
|
||||||
FeatureSet features;
|
QSet<Id> features;
|
||||||
foreach (const Kit *k, kits()) {
|
foreach (const Kit *k, kits()) {
|
||||||
QSet<QString> kitPlatforms = k->availablePlatforms();
|
QSet<QString> kitPlatforms = k->availablePlatforms();
|
||||||
if (kitPlatforms.isEmpty() || kitPlatforms.contains(platform) || platform.isEmpty())
|
if (kitPlatforms.isEmpty() || kitPlatforms.contains(platform) || platform.isEmpty())
|
||||||
@@ -566,10 +566,10 @@ QString KitInformation::displayNameForPlatform(const Kit *k, const QString &plat
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet KitInformation::availableFeatures(const Kit *k) const
|
QSet<Id> KitInformation::availableFeatures(const Kit *k) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(k);
|
Q_UNUSED(k);
|
||||||
return FeatureSet();
|
return QSet<Id>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KitInformation::addToMacroExpander(Kit *k, MacroExpander *expander) const
|
void KitInformation::addToMacroExpander(Kit *k, MacroExpander *expander) const
|
||||||
@@ -588,7 +588,7 @@ void KitInformation::notifyAboutUpdate(Kit *k)
|
|||||||
// KitFeatureProvider:
|
// KitFeatureProvider:
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
FeatureSet KitFeatureProvider::availableFeatures(const QString &platform) const
|
QSet<Id> KitFeatureProvider::availableFeatures(const QString &platform) const
|
||||||
{
|
{
|
||||||
return KitManager::availableFeatures(platform);
|
return KitManager::availableFeatures(platform);
|
||||||
}
|
}
|
||||||
|
@@ -97,7 +97,7 @@ public:
|
|||||||
|
|
||||||
virtual QSet<QString> availablePlatforms(const Kit *k) const;
|
virtual QSet<QString> availablePlatforms(const Kit *k) const;
|
||||||
virtual QString displayNameForPlatform(const Kit *k, const QString &platform) const;
|
virtual QString displayNameForPlatform(const Kit *k, const QString &platform) const;
|
||||||
virtual Core::FeatureSet availableFeatures(const Kit *k) const;
|
virtual QSet<Core::Id> availableFeatures(const Kit *k) const;
|
||||||
|
|
||||||
virtual void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const;
|
virtual void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const;
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ public:
|
|||||||
|
|
||||||
static QSet<QString> availablePlatforms();
|
static QSet<QString> availablePlatforms();
|
||||||
static QString displayNameForPlatform(const QString &platform);
|
static QString displayNameForPlatform(const QString &platform);
|
||||||
static Core::FeatureSet availableFeatures(const QString &platform);
|
static QSet<Core::Id> availableFeatures(const QString &platform);
|
||||||
|
|
||||||
static QList<Kit *> sortKits(const QList<Kit *> kits); // Avoid sorting whenever possible!
|
static QList<Kit *> sortKits(const QList<Kit *> kits); // Avoid sorting whenever possible!
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ CustomWidgetWizard::CustomWidgetWizard()
|
|||||||
setDisplayName(tr("Qt Custom Designer Widget"));
|
setDisplayName(tr("Qt Custom Designer Widget"));
|
||||||
setDescription(tr("Creates a Qt Custom Designer Widget or a Custom Widget Collection."));
|
setDescription(tr("Creates a Qt Custom Designer Widget or a Custom Widget Collection."));
|
||||||
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
|
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
|
||||||
setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QWIDGETS));
|
setRequiredFeatures({ QtSupport::Constants::FEATURE_QWIDGETS });
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::BaseFileWizard *CustomWidgetWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
Core::BaseFileWizard *CustomWidgetWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
||||||
|
@@ -83,7 +83,7 @@ GuiAppWizard::GuiAppWizard()
|
|||||||
"Includes a Qt Designer-based main window.\n\n"
|
"Includes a Qt Designer-based main window.\n\n"
|
||||||
"Preselects a desktop Qt for building the application if available."));
|
"Preselects a desktop Qt for building the application if available."));
|
||||||
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
|
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
|
||||||
setRequiredFeatures(Core::FeatureSet(QtSupport::Constants::FEATURE_QWIDGETS));
|
setRequiredFeatures({ QtSupport::Constants::FEATURE_QWIDGETS });
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::BaseFileWizard *GuiAppWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
Core::BaseFileWizard *GuiAppWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
||||||
|
@@ -56,7 +56,7 @@ LibraryWizard::LibraryWizard()
|
|||||||
"<li>a shared C++ library for use with <tt>QPluginLoader</tt> and runtime (Plugins)</li>"
|
"<li>a shared C++ library for use with <tt>QPluginLoader</tt> and runtime (Plugins)</li>"
|
||||||
"<li>a shared or static C++ library for use with another project at linktime</li></ul>"));
|
"<li>a shared or static C++ library for use with another project at linktime</li></ul>"));
|
||||||
setIcon(QIcon(QLatin1String(":/wizards/images/lib.png")));
|
setIcon(QIcon(QLatin1String(":/wizards/images/lib.png")));
|
||||||
setRequiredFeatures(Core::FeatureSet(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_PREFIX)));
|
setRequiredFeatures({ QtSupport::Constants::FEATURE_QT_PREFIX });
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::BaseFileWizard *LibraryWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
Core::BaseFileWizard *LibraryWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
||||||
|
@@ -204,7 +204,7 @@ int BaseQmakeProjectWizardDialog::addTargetSetupPage(int id)
|
|||||||
{
|
{
|
||||||
m_targetSetupPage = new ProjectExplorer::TargetSetupPage;
|
m_targetSetupPage = new ProjectExplorer::TargetSetupPage;
|
||||||
const QString platform = selectedPlatform();
|
const QString platform = selectedPlatform();
|
||||||
Core::FeatureSet features = Core::FeatureSet(QtSupport::Constants::FEATURE_DESKTOP);
|
QSet<Core::Id> features = { QtSupport::Constants::FEATURE_DESKTOP };
|
||||||
if (platform.isEmpty())
|
if (platform.isEmpty())
|
||||||
m_targetSetupPage->setPreferredKitMatcher(QtKitInformation::qtVersionMatcher(features));
|
m_targetSetupPage->setPreferredKitMatcher(QtKitInformation::qtVersionMatcher(features));
|
||||||
else
|
else
|
||||||
|
@@ -51,7 +51,7 @@ SubdirsProjectWizard::SubdirsProjectWizard()
|
|||||||
setDescription(tr("Creates a qmake-based subdirs project. This allows you to group "
|
setDescription(tr("Creates a qmake-based subdirs project. This allows you to group "
|
||||||
"your projects in a tree structure."));
|
"your projects in a tree structure."));
|
||||||
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
|
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
|
||||||
setRequiredFeatures(Core::FeatureSet(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_PREFIX)));
|
setRequiredFeatures({ QtSupport::Constants::FEATURE_QT_PREFIX });
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::BaseFileWizard *SubdirsProjectWizard::create(QWidget *parent,
|
Core::BaseFileWizard *SubdirsProjectWizard::create(QWidget *parent,
|
||||||
|
@@ -56,8 +56,7 @@ TestWizard::TestWizard()
|
|||||||
"Unit tests allow you to verify that the code is fit for use "
|
"Unit tests allow you to verify that the code is fit for use "
|
||||||
"and that there are no regressions."));
|
"and that there are no regressions."));
|
||||||
setIcon(QIcon(QLatin1String(":/wizards/images/console.png")));
|
setIcon(QIcon(QLatin1String(":/wizards/images/console.png")));
|
||||||
setRequiredFeatures(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE) |
|
setRequiredFeatures({ QtSupport::Constants::FEATURE_QT_CONSOLE, QtSupport::Constants::FEATURE_QT_PREFIX });
|
||||||
Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_PREFIX));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::BaseFileWizard *TestWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
Core::BaseFileWizard *TestWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
|
||||||
|
@@ -130,8 +130,8 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit
|
|||||||
QString qtImportsPath = qtVersion->qmakeProperty("QT_INSTALL_IMPORTS");
|
QString qtImportsPath = qtVersion->qmakeProperty("QT_INSTALL_IMPORTS");
|
||||||
QString qtQmlPath = qtVersion->qmakeProperty("QT_INSTALL_QML");
|
QString qtQmlPath = qtVersion->qmakeProperty("QT_INSTALL_QML");
|
||||||
|
|
||||||
Core::FeatureSet features = qtVersion->availableFeatures();
|
QSet<Core::Id> features = qtVersion->availableFeatures();
|
||||||
if (features.contains(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_QUICK_PREFIX))) {
|
if (features.contains(QtSupport::Constants::FEATURE_QT_QUICK_PREFIX)) {
|
||||||
myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtImportsPath);
|
myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtImportsPath);
|
||||||
QDir qtQuick1Bundles(qtImportsPath);
|
QDir qtQuick1Bundles(qtImportsPath);
|
||||||
qtQuick1Bundles.setNameFilters(QStringList(QLatin1String("*-bundle.json")));
|
qtQuick1Bundles.setNameFilters(QStringList(QLatin1String("*-bundle.json")));
|
||||||
@@ -156,7 +156,7 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit
|
|||||||
bundles.mergeBundleForLanguage(Dialect::Qml, qtQuick1Bundle);
|
bundles.mergeBundleForLanguage(Dialect::Qml, qtQuick1Bundle);
|
||||||
bundles.mergeBundleForLanguage(Dialect::QmlQtQuick1, qtQuick1Bundle);
|
bundles.mergeBundleForLanguage(Dialect::QmlQtQuick1, qtQuick1Bundle);
|
||||||
}
|
}
|
||||||
if (features.contains(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_QUICK_PREFIX, 2))) {
|
if (features.contains(Core::Id::versionedId(QtSupport::Constants::FEATURE_QT_QUICK_PREFIX, 2))) {
|
||||||
myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtQmlPath);
|
myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtQmlPath);
|
||||||
QDir qtQuick2Bundles(qtQmlPath);
|
QDir qtQuick2Bundles(qtQmlPath);
|
||||||
qtQuick2Bundles.setNameFilters(QStringList(QLatin1String("*-bundle.json")));
|
qtQuick2Bundles.setNameFilters(QStringList(QLatin1String("*-bundle.json")));
|
||||||
|
@@ -76,12 +76,12 @@ QString QnxQtVersion::description() const
|
|||||||
return QCoreApplication::translate("Qnx::Internal::QnxQtVersion", "QNX %1").arg(archString());
|
return QCoreApplication::translate("Qnx::Internal::QnxQtVersion", "QNX %1").arg(archString());
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet QnxQtVersion::availableFeatures() const
|
QSet<Core::Id> QnxQtVersion::availableFeatures() const
|
||||||
{
|
{
|
||||||
Core::FeatureSet features = QtSupport::BaseQtVersion::availableFeatures();
|
QSet<Core::Id> features = QtSupport::BaseQtVersion::availableFeatures();
|
||||||
features |= Core::FeatureSet(Constants::QNX_QNX_FEATURE);
|
features.insert(Constants::QNX_QNX_FEATURE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE));
|
features.remove(QtSupport::Constants::FEATURE_QT_CONSOLE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_WEBKIT));
|
features.remove(QtSupport::Constants::FEATURE_QT_WEBKIT);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -56,7 +56,7 @@ public:
|
|||||||
|
|
||||||
QString description() const override;
|
QString description() const override;
|
||||||
|
|
||||||
Core::FeatureSet availableFeatures() const override;
|
QSet<Core::Id> availableFeatures() const override;
|
||||||
QString platformName() const override;
|
QString platformName() const override;
|
||||||
QString platformDisplayName() const override;
|
QString platformDisplayName() const override;
|
||||||
|
|
||||||
|
@@ -76,7 +76,7 @@ static const char QTVERSIONQMAKEPATH[] = "QMakePath";
|
|||||||
static const char MKSPEC_VALUE_LIBINFIX[] = "QT_LIBINFIX";
|
static const char MKSPEC_VALUE_LIBINFIX[] = "QT_LIBINFIX";
|
||||||
static const char MKSPEC_VALUE_NAMESPACE[] = "QT_NAMESPACE";
|
static const char MKSPEC_VALUE_NAMESPACE[] = "QT_NAMESPACE";
|
||||||
|
|
||||||
QSet<Id> static versionedIds(const QByteArray &prefix, int major, int minor)
|
static QSet<Id> versionedIds(const QByteArray &prefix, int major, int minor)
|
||||||
{
|
{
|
||||||
QSet<Id> result;
|
QSet<Id> result;
|
||||||
result.insert(Id::fromName(prefix));
|
result.insert(Id::fromName(prefix));
|
||||||
@@ -120,9 +120,9 @@ QtVersionNumber::QtVersionNumber()
|
|||||||
majorVersion = minorVersion = patchVersion = -1;
|
majorVersion = minorVersion = patchVersion = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet QtVersionNumber::features() const
|
QSet<Id> QtVersionNumber::features() const
|
||||||
{
|
{
|
||||||
return FeatureSet::versionedFeatures(Constants::FEATURE_QT_PREFIX, majorVersion, minorVersion);
|
return versionedIds(Constants::FEATURE_QT_PREFIX, majorVersion, minorVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtVersionNumber::matches(int major, int minor, int patch) const
|
bool QtVersionNumber::matches(int major, int minor, int patch) const
|
||||||
@@ -392,63 +392,63 @@ QString BaseQtVersion::defaultUnexpandedDisplayName(const FileName &qmakePath, b
|
|||||||
QCoreApplication::translate("QtVersion", "Qt %{Qt:Version} (%2)").arg(location);
|
QCoreApplication::translate("QtVersion", "Qt %{Qt:Version} (%2)").arg(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
FeatureSet BaseQtVersion::availableFeatures() const
|
QSet<Id> BaseQtVersion::availableFeatures() const
|
||||||
{
|
{
|
||||||
FeatureSet features = qtVersion().features(); // Qt Version features
|
QSet<Id> features = qtVersion().features(); // Qt Version features
|
||||||
|
|
||||||
features |= (Feature(Constants::FEATURE_QWIDGETS)
|
features.insert(Constants::FEATURE_QWIDGETS);
|
||||||
| Feature(Constants::FEATURE_QT_WEBKIT)
|
features.insert(Constants::FEATURE_QT_WEBKIT);
|
||||||
| Feature(Constants::FEATURE_QT_CONSOLE));
|
features.insert(Constants::FEATURE_QT_CONSOLE);
|
||||||
|
|
||||||
if (qtVersion() < QtVersionNumber(4, 7, 0))
|
if (qtVersion() < QtVersionNumber(4, 7, 0))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 1, 0);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 1, 0));
|
||||||
|
|
||||||
if (qtVersion().matches(4, 7, 0))
|
if (qtVersion().matches(4, 7, 0))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 1, 1);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 1, 1));
|
||||||
|
|
||||||
if (qtVersion().matches(4))
|
if (qtVersion().matches(4))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 0);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 2, 0));
|
||||||
|
|
||||||
if (qtVersion().matches(5, 0))
|
if (qtVersion().matches(5, 0))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 1);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 2, 1));
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 0);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 0));
|
||||||
|
|
||||||
if (qtVersion().matches(5, 1))
|
if (qtVersion().matches(5, 1))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 2);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 2, 2));
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 1);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 1));
|
||||||
|
|
||||||
if (qtVersion().matches(5, 2))
|
if (qtVersion().matches(5, 2))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 3);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 2, 3));
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 2);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 2));
|
||||||
|
|
||||||
if (qtVersion().matches(5, 3))
|
if (qtVersion().matches(5, 3))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= Feature(Constants::FEATURE_QT_QUICK_UI_FILES);
|
features.insert(Constants::FEATURE_QT_QUICK_UI_FILES);
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 4);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 2, 4));
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 3);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 3));
|
||||||
|
|
||||||
if (qtVersion().matches(5, 4))
|
if (qtVersion().matches(5, 4))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
features |= Feature(Constants::FEATURE_QT_3D);
|
features.insert(Constants::FEATURE_QT_3D);
|
||||||
features |= Feature(Constants::FEATURE_QT_CANVAS3D);
|
features.insert(Constants::FEATURE_QT_CANVAS3D);
|
||||||
|
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_PREFIX, 2, 5);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_PREFIX, 2, 5));
|
||||||
features |= FeatureSet::versionedFeatures(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 4);
|
features.unite(versionedIds(Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1, 4));
|
||||||
|
|
||||||
if (qtVersion().matches(5, 5))
|
if (qtVersion().matches(5, 5))
|
||||||
return features;
|
return features;
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
#include <QVariantMap>
|
#include <QVariantMap>
|
||||||
|
|
||||||
namespace Utils { class Environment; }
|
namespace Utils { class Environment; }
|
||||||
namespace Core { class FeatureSet; }
|
namespace Core { class Id; }
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
class IOutputParser;
|
class IOutputParser;
|
||||||
@@ -68,7 +68,7 @@ public:
|
|||||||
QtVersionNumber(const QString &versionString);
|
QtVersionNumber(const QString &versionString);
|
||||||
QtVersionNumber();
|
QtVersionNumber();
|
||||||
|
|
||||||
Core::FeatureSet features() const;
|
QSet<Core::Id> features() const;
|
||||||
|
|
||||||
int majorVersion;
|
int majorVersion;
|
||||||
int minorVersion;
|
int minorVersion;
|
||||||
@@ -205,7 +205,7 @@ public:
|
|||||||
static QString defaultUnexpandedDisplayName(const Utils::FileName &qmakePath,
|
static QString defaultUnexpandedDisplayName(const Utils::FileName &qmakePath,
|
||||||
bool fromPath = false);
|
bool fromPath = false);
|
||||||
|
|
||||||
virtual Core::FeatureSet availableFeatures() const;
|
virtual QSet<Core::Id> availableFeatures() const;
|
||||||
virtual QString platformName() const;
|
virtual QString platformName() const;
|
||||||
virtual QString platformDisplayName() const;
|
virtual QString platformDisplayName() const;
|
||||||
virtual bool supportsPlatform(const QString &platformName) const;
|
virtual bool supportsPlatform(const QString &platformName) const;
|
||||||
|
@@ -82,11 +82,11 @@ QString DesktopQtVersion::description() const
|
|||||||
return QCoreApplication::translate("QtVersion", "Desktop", "Qt Version is meant for the desktop");
|
return QCoreApplication::translate("QtVersion", "Desktop", "Qt Version is meant for the desktop");
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet DesktopQtVersion::availableFeatures() const
|
QSet<Core::Id> DesktopQtVersion::availableFeatures() const
|
||||||
{
|
{
|
||||||
Core::FeatureSet features = BaseQtVersion::availableFeatures();
|
QSet<Core::Id> features = BaseQtVersion::availableFeatures();
|
||||||
features |= Core::FeatureSet(Constants::FEATURE_DESKTOP);
|
features.insert(Constants::FEATURE_DESKTOP);
|
||||||
features |= Core::Feature(Constants::FEATURE_QMLPROJECT);
|
features.insert(Constants::FEATURE_QMLPROJECT);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -51,7 +51,7 @@ public:
|
|||||||
|
|
||||||
QString description() const;
|
QString description() const;
|
||||||
|
|
||||||
Core::FeatureSet availableFeatures() const;
|
QSet<Core::Id> availableFeatures() const;
|
||||||
QString platformName() const;
|
QString platformName() const;
|
||||||
QString platformDisplayName() const;
|
QString platformDisplayName() const;
|
||||||
};
|
};
|
||||||
|
@@ -228,7 +228,7 @@ KitMatcher QtKitInformation::platformMatcher(const QString &platform)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
KitMatcher QtKitInformation::qtVersionMatcher(const Core::FeatureSet &required,
|
KitMatcher QtKitInformation::qtVersionMatcher(const QSet<Core::Id> &required,
|
||||||
const QtVersionNumber &min, const QtVersionNumber &max)
|
const QtVersionNumber &min, const QtVersionNumber &max)
|
||||||
{
|
{
|
||||||
return std::function<bool(const Kit *)>([required, min, max](const Kit *kit) -> bool {
|
return std::function<bool(const Kit *)>([required, min, max](const Kit *kit) -> bool {
|
||||||
@@ -264,10 +264,10 @@ QString QtKitInformation::displayNameForPlatform(const Kit *k, const QString &pl
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet QtKitInformation::availableFeatures(const Kit *k) const
|
QSet<Core::Id> QtKitInformation::availableFeatures(const Kit *k) const
|
||||||
{
|
{
|
||||||
BaseQtVersion *version = QtKitInformation::qtVersion(k);
|
BaseQtVersion *version = QtKitInformation::qtVersion(k);
|
||||||
return version ? version->availableFeatures() : Core::FeatureSet();
|
return version ? version->availableFeatures() : QSet<Core::Id>();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace QtSupport
|
} // namespace QtSupport
|
||||||
|
@@ -70,13 +70,13 @@ public:
|
|||||||
static void setQtVersion(ProjectExplorer::Kit *k, const BaseQtVersion *v);
|
static void setQtVersion(ProjectExplorer::Kit *k, const BaseQtVersion *v);
|
||||||
|
|
||||||
static ProjectExplorer::KitMatcher platformMatcher(const QString &availablePlatforms);
|
static ProjectExplorer::KitMatcher platformMatcher(const QString &availablePlatforms);
|
||||||
static ProjectExplorer::KitMatcher qtVersionMatcher(const Core::FeatureSet &required = Core::FeatureSet(),
|
static ProjectExplorer::KitMatcher qtVersionMatcher(const QSet<Core::Id> &required = QSet<Core::Id>(),
|
||||||
const QtVersionNumber &min = QtVersionNumber(0, 0, 0),
|
const QtVersionNumber &min = QtVersionNumber(0, 0, 0),
|
||||||
const QtVersionNumber &max = QtVersionNumber(INT_MAX, INT_MAX, INT_MAX));
|
const QtVersionNumber &max = QtVersionNumber(INT_MAX, INT_MAX, INT_MAX));
|
||||||
|
|
||||||
QSet<QString> availablePlatforms(const ProjectExplorer::Kit *k) const;
|
QSet<QString> availablePlatforms(const ProjectExplorer::Kit *k) const;
|
||||||
QString displayNameForPlatform(const ProjectExplorer::Kit *k, const QString &platform) const;
|
QString displayNameForPlatform(const ProjectExplorer::Kit *k, const QString &platform) const;
|
||||||
Core::FeatureSet availableFeatures(const ProjectExplorer::Kit *k) const;
|
QSet<Core::Id> availableFeatures(const ProjectExplorer::Kit *k) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void qtVersionsChanged(const QList<int> &addedIds,
|
void qtVersionsChanged(const QList<int> &addedIds,
|
||||||
|
@@ -64,13 +64,13 @@ QString WinRtQtVersion::description() const
|
|||||||
return tr("Windows Runtime");
|
return tr("Windows Runtime");
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::FeatureSet WinRtQtVersion::availableFeatures() const
|
QSet<Core::Id> WinRtQtVersion::availableFeatures() const
|
||||||
{
|
{
|
||||||
Core::FeatureSet features = QtSupport::BaseQtVersion::availableFeatures();
|
QSet<Core::Id> features = QtSupport::BaseQtVersion::availableFeatures();
|
||||||
features |= Core::FeatureSet(QtSupport::Constants::FEATURE_MOBILE);
|
features.insert(QtSupport::Constants::FEATURE_MOBILE);
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_CONSOLE));
|
features.remove(QtSupport::Constants::FEATURE_QT_CONSOLE);
|
||||||
features.remove(Core::Feature::versionedFeature(QtSupport::Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1));
|
features.remove(Core::Id::versionedId(QtSupport::Constants::FEATURE_QT_QUICK_CONTROLS_PREFIX, 1));
|
||||||
features.remove(Core::Feature(QtSupport::Constants::FEATURE_QT_WEBKIT));
|
features.remove(QtSupport::Constants::FEATURE_QT_WEBKIT);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -47,7 +47,7 @@ public:
|
|||||||
BaseQtVersion *clone() const;
|
BaseQtVersion *clone() const;
|
||||||
QString type() const;
|
QString type() const;
|
||||||
QString description() const;
|
QString description() const;
|
||||||
Core::FeatureSet availableFeatures() const;
|
QSet<Core::Id> availableFeatures() const;
|
||||||
QString platformName() const;
|
QString platformName() const;
|
||||||
QString platformDisplayName() const;
|
QString platformDisplayName() const;
|
||||||
QList<ProjectExplorer::Abi> detectQtAbis() const;
|
QList<ProjectExplorer::Abi> detectQtAbis() const;
|
||||||
|
Reference in New Issue
Block a user