summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Keller <rainer.keller@digia.com>2014-06-18 12:46:15 +0200
committerRainer Keller <rainer.keller@digia.com>2014-06-19 14:00:58 +0200
commit53969701f60721be9456dfbed47f517b4ed893e7 (patch)
treea063071d47a31519f2c0051ca5005ce20dd4edef
parent12103e0f676f762658310b885f8d427cdd755a18 (diff)
downloadqt-creator-53969701f60721be9456dfbed47f517b4ed893e7.tar.gz
Show Qt Quick templates only when needed plugins are available
A Qt Quick template should only be visible if its required plugins are available. Change-Id: I932563cb9ffd2a2eca0e77e9945638573d07ba3e Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp7
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickapp.h1
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp22
3 files changed, 28 insertions, 2 deletions
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp
index 7ae6469615..f64789053f 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp
@@ -119,6 +119,7 @@ static bool parseTemplateXml(QXmlStreamReader &reader, TemplateInfo *info)
static const QLatin1String attribute_viewerclassname("viewerclassname");
static const QLatin1String attribute_qrcdeployment("qrcdeployment");
static const QLatin1String attribute_stubversionminor("stubversionminor");
+ static const QLatin1String attribute_requiredPlugins("requiredPlugins");
while (!reader.atEnd() && !reader.hasError()) {
reader.readNext();
@@ -145,6 +146,12 @@ static bool parseTemplateXml(QXmlStreamReader &reader, TemplateInfo *info)
if (reader.attributes().hasAttribute(attribute_stubversionminor))
info->stubVersionMinor = reader.attributes().value(attribute_stubversionminor).toString().toInt();
+ // This attribute is currently used in enterprise addons to filter out templates when the enterprise
+ // addon is not installed. This applies to the Boot To Qt addon for example.
+ if (reader.attributes().hasAttribute(attribute_requiredPlugins))
+ info->requiredPlugins = reader.attributes().value(attribute_requiredPlugins).toString()
+ .split(QLatin1Char(','), QString::SkipEmptyParts);
+
} else if (reader.name() == tag_displayName) {
if (!assignLanguageElementText(reader, locale, &info->displayName))
continue;
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h
index 676128eb61..72631b3a4b 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.h
@@ -63,6 +63,7 @@ public:
QString viewerClassName;
QString viewerDir;
QString qrcDeployment;
+ QStringList requiredPlugins;
int stubVersionMinor;
};
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp
index c76ff0fa76..78451eaf54 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp
@@ -30,6 +30,8 @@
#include "qtquickappwizardpages.h"
#include <utils/wizard.h>
+#include <extensionsystem/pluginmanager.h>
+#include <extensionsystem/pluginspec.h>
#include <QComboBox>
#include <QLabel>
@@ -55,8 +57,24 @@ QtQuickComponentSetPage::QtQuickComponentSetPage(QWidget *parent)
QLabel *label = new QLabel(tr("Qt Quick component set:"), this);
d->m_versionComboBox = new QComboBox(this);
- foreach (const TemplateInfo &templateInfo, QtQuickApp::templateInfos())
- d->m_versionComboBox->addItem(templateInfo.displayName);
+
+ QSet<QString> availablePlugins;
+ foreach (ExtensionSystem::PluginSpec *s, ExtensionSystem::PluginManager::plugins()) {
+ if (s->state() == ExtensionSystem::PluginSpec::Running && !s->hasError())
+ availablePlugins += s->name();
+ }
+
+ foreach (const TemplateInfo &templateInfo, QtQuickApp::templateInfos()) {
+ bool ok = true;
+ foreach (const QString &neededPlugin, templateInfo.requiredPlugins) {
+ if (!availablePlugins.contains(neededPlugin)) {
+ ok = false;
+ break;
+ }
+ }
+ if (ok)
+ d->m_versionComboBox->addItem(templateInfo.displayName);
+ }
l->addWidget(label);
l->addWidget(d->m_versionComboBox);