summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qt4projectmanager/wizards/qtwizard.cpp7
-rw-r--r--src/plugins/qt4projectmanager/wizards/qtwizard.h3
-rw-r--r--src/plugins/qt4projectmanager/wizards/targetspage.cpp38
-rw-r--r--src/plugins/qt4projectmanager/wizards/targetspage.h5
4 files changed, 49 insertions, 4 deletions
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index b4c3bddcfb..3cec15fef8 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -203,11 +203,16 @@ void BaseQt4ProjectWizardDialog::addModulesPage(int id)
}
}
-void BaseQt4ProjectWizardDialog::addTargetsPage(int id)
+void BaseQt4ProjectWizardDialog::addTargetsPage(QSet<QString> targets, int id)
{
if (!m_targetsPage)
return;
+ m_targetsPage->setValidTargets(targets);
+
+ if (!m_targetsPage->needToDisplayPage())
+ return;
+
if (id >= 0)
setPage(id, m_targetsPage);
else
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.h b/src/plugins/qt4projectmanager/wizards/qtwizard.h
index ae9d5a3da5..67a5b3a2c8 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.h
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.h
@@ -35,6 +35,7 @@
#include <coreplugin/basefilewizard.h>
+#include <QtCore/QSet>
namespace Qt4ProjectManager {
namespace Internal {
@@ -101,7 +102,7 @@ protected:
QWidget *parent = 0);
void addModulesPage(int id = -1);
- void addTargetsPage(int id = -1);
+ void addTargetsPage(QSet<QString> targets = QSet<QString>(), int id = -1);
public:
QString selectedModules() const;
diff --git a/src/plugins/qt4projectmanager/wizards/targetspage.cpp b/src/plugins/qt4projectmanager/wizards/targetspage.cpp
index 366c86a291..eca5cf9ea6 100644
--- a/src/plugins/qt4projectmanager/wizards/targetspage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/targetspage.cpp
@@ -100,11 +100,28 @@ TargetsPage::TargetsPage(QWidget *parent)
emit completeChanged();
}
+void TargetsPage::setValidTargets(const QSet<QString> &targets)
+{
+ if (targets.isEmpty())
+ return;
+
+ for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) {
+ QTreeWidgetItem *currentTargetItem = m_treeWidget->topLevelItem(i);
+ QString currentTarget = currentTargetItem->data(0, Qt::UserRole).toString();
+ if (targets.contains(currentTarget))
+ currentTargetItem->setHidden(false);
+ else
+ currentTargetItem->setHidden(true);
+ }
+}
+
QSet<QString> TargetsPage::selectedTargets() const
{
QSet<QString> result;
for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) {
- QString target = m_treeWidget->topLevelItem(i)->data(0, Qt::UserRole).toString();
+ QTreeWidgetItem * targetItem = m_treeWidget->topLevelItem(i);
+ QString target = targetItem->data(0, Qt::UserRole).toString();
+
QList<int> versions = selectedVersionIdsForTarget(target);
if (!versions.isEmpty())
result.insert(target);
@@ -118,7 +135,7 @@ QList<int> TargetsPage::selectedVersionIdsForTarget(const QString &t) const
for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) {
QTreeWidgetItem * current = m_treeWidget->topLevelItem(i);
QString target = current->data(0, Qt::UserRole).toString();
- if (t != target)
+ if (t != target || current->isHidden())
continue;
for (int j = 0; j < current->childCount(); ++j) {
@@ -140,3 +157,20 @@ bool TargetsPage::isComplete() const
{
return !selectedTargets().isEmpty();
}
+
+bool TargetsPage::needToDisplayPage() const
+{
+ int targetCount = 0;
+ for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) {
+ QTreeWidgetItem * current = m_treeWidget->topLevelItem(i);
+ if (current->isHidden())
+ continue;
+ ++targetCount;
+ if (targetCount > 1)
+ return true;
+
+ if (current->childCount() > 1)
+ return true;
+ }
+ return false;
+}
diff --git a/src/plugins/qt4projectmanager/wizards/targetspage.h b/src/plugins/qt4projectmanager/wizards/targetspage.h
index cf7c30486c..e85f5e4944 100644
--- a/src/plugins/qt4projectmanager/wizards/targetspage.h
+++ b/src/plugins/qt4projectmanager/wizards/targetspage.h
@@ -50,15 +50,20 @@ class TargetsPage : public QWizardPage
public:
explicit TargetsPage(QWidget* parent = 0);
+ void setValidTargets(const QSet<QString> &targets);
+
QSet<QString> selectedTargets() const;
QList<int> selectedVersionIdsForTarget(const QString &) const;
bool isComplete() const;
+ bool needToDisplayPage() const;
+
private slots:
void itemWasClicked();
private:
+ QSet<QString> m_validTargets;
QTreeWidget * m_treeWidget;
bool m_isComplete;
};