summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/projectwizardpage.cpp
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2009-07-17 18:06:08 +1000
committerKai Koehne <kai.koehne@nokia.com>2009-07-17 18:06:08 +1000
commit063f0476da4dea527e6739f5ef45a5ef07298a09 (patch)
treefa5f62e4c6bf2741cbe613eee6d312454427a1db /src/plugins/projectexplorer/projectwizardpage.cpp
parent0f7394323d653854623763eab5e2a073ed17df7e (diff)
downloadqt-creator-063f0476da4dea527e6739f5ef45a5ef07298a09.tar.gz
Fix selection of project files to add new files/classes to
Commit ac8e371486cb69fb did reorder the path list in ProjectWizardPage, while ProjceFileWizardExtension still assumed that the list displayed to the user is exactly the same as passed to ProjectWizardPage. The patch removes the index based communication between the classes altogether and directly stores the ProjectNode in the UserRole of the ComboBox entry.
Diffstat (limited to 'src/plugins/projectexplorer/projectwizardpage.cpp')
-rw-r--r--src/plugins/projectexplorer/projectwizardpage.cpp36
1 files changed, 27 insertions, 9 deletions
diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp
index ff4d2b6060..57c1d512c7 100644
--- a/src/plugins/projectexplorer/projectwizardpage.cpp
+++ b/src/plugins/projectexplorer/projectwizardpage.cpp
@@ -29,13 +29,17 @@
#include "projectwizardpage.h"
#include "ui_projectwizardpage.h"
+#include "projectnodes.h"
#include <QtCore/QDebug>
+#include <QtCore/QFileInfo>
#include <QtCore/QTextStream>
using namespace ProjectExplorer;
using namespace Internal;
+Q_DECLARE_METATYPE(ProjectExplorer::ProjectNode*)
+
ProjectWizardPage::ProjectWizardPage(QWidget *parent) :
QWizardPage(parent),
m_ui(new Ui::WizardPage)
@@ -51,13 +55,19 @@ ProjectWizardPage::~ProjectWizardPage()
delete m_ui;
}
-void ProjectWizardPage::setProjects(const QStringList &l)
+void ProjectWizardPage::setProjects(const QList<ProjectNode*> &projectNodes)
{
- QStringList list = l;
- list.removeDuplicates();
- list.sort();
+ QMap<QString,ProjectNode*> projectMap;
+ foreach (ProjectNode *node, projectNodes) {
+ QString name = QFileInfo(node->path()).fileName();
+ if (!projectMap.contains(name))
+ projectMap.insert(name, node);
+ }
+
m_ui->projectComboBox->clear();
- m_ui->projectComboBox->addItems(list);
+ foreach (const QString &name, projectMap.keys()) {
+ m_ui->projectComboBox->addItem(name, qVariantFromValue(projectMap.value(name)));
+ }
}
void ProjectWizardPage::setAddToProjectEnabled(bool b)
@@ -69,14 +79,22 @@ void ProjectWizardPage::setAddToProjectEnabled(bool b)
m_ui->projectComboBox->setEnabled(b);
}
-int ProjectWizardPage::currentProjectIndex() const
+ProjectNode *ProjectWizardPage::currentProject() const
{
- return m_ui->projectComboBox->currentIndex();
+ QVariant variant = m_ui->projectComboBox->itemData(m_ui->projectComboBox->currentIndex());
+ return qVariantValue<ProjectNode*>(variant);
}
-void ProjectWizardPage::setCurrentProjectIndex(int i)
+void ProjectWizardPage::setCurrentProject(ProjectNode *projectNode)
{
- m_ui->projectComboBox->setCurrentIndex(i);
+ if (!projectNode)
+ return;
+ for (int i = 0; i < m_ui->projectComboBox->count(); ++i) {
+ if (qVariantValue<ProjectNode*>(m_ui->projectComboBox->itemData(i)) == projectNode) {
+ m_ui->projectComboBox->setCurrentIndex(i);
+ return;
+ }
+ }
}
bool ProjectWizardPage::addToProject() const