From 87280a11ff5fbc01e46a5e87f8dd84c5e62df34f Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Fri, 1 Aug 2014 15:29:51 +0200 Subject: [PATCH] Remove templates from static list if plugin is unavailable Removing those only from combobox is not sufficient because the template list is accessed by current index of the combobox at several places. Change-Id: I1127159d010d87dff55c14b7ee1ce5497a1cc05c Reviewed-by: Jarek Kobus --- .../wizards/qtquickapp.cpp | 20 +++++++++++++++++- .../wizards/qtquickappwizardpages.cpp | 21 ++----------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp index f64789053f1..931c214ab30 100644 --- a/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/qtquickapp.cpp @@ -31,6 +31,8 @@ #include #include +#include +#include #include #include @@ -173,6 +175,12 @@ class TemplateInfoList public: TemplateInfoList() { + QSet availablePlugins; + foreach (ExtensionSystem::PluginSpec *s, ExtensionSystem::PluginManager::plugins()) { + if (s->state() == ExtensionSystem::PluginSpec::Running && !s->hasError()) + availablePlugins += s->name(); + } + QMultiMap multiMap; foreach (const QString &templateName, templateNames()) { const QString templatePath = templateRootDirectory() + templateName; @@ -185,7 +193,17 @@ public: info.templateName = templateName; info.templatePath = templatePath; QXmlStreamReader reader(&xmlFile); - if (parseTemplateXml(reader, &info)) + if (!parseTemplateXml(reader, &info)) + continue; + + bool ok = true; + foreach (const QString &neededPlugin, info.requiredPlugins) { + if (!availablePlugins.contains(neededPlugin)) { + ok = false; + break; + } + } + if (ok) multiMap.insert(info.priority, info); } m_templateInfoList = multiMap.values(); diff --git a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp index 78451eaf54d..1dd36a63ef0 100644 --- a/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/qtquickappwizardpages.cpp @@ -30,8 +30,6 @@ #include "qtquickappwizardpages.h" #include -#include -#include #include #include @@ -58,23 +56,8 @@ QtQuickComponentSetPage::QtQuickComponentSetPage(QWidget *parent) QLabel *label = new QLabel(tr("Qt Quick component set:"), this); d->m_versionComboBox = new QComboBox(this); - QSet 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); - } + foreach (const TemplateInfo &templateInfo, QtQuickApp::templateInfos()) + d->m_versionComboBox->addItem(templateInfo.displayName); l->addWidget(label); l->addWidget(d->m_versionComboBox);