diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.pro b/src/plugins/qt4projectmanager/qt4projectmanager.pro index c9bab49f48d06e9717385d36e0cfd50bea10e153..448067a9e85c7b191a562237e505ae31bb0aafc1 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.pro +++ b/src/plugins/qt4projectmanager/qt4projectmanager.pro @@ -92,7 +92,8 @@ FORMS += makestep.ui \ qtversionmanager.ui \ showbuildlog.ui \ gettingstartedwelcomepagewidget.ui \ - wizards/testwizardpage.ui + wizards/testwizardpage.ui \ + wizards/targetsetuppage.ui RESOURCES += qt4projectmanager.qrc \ wizards/wizards.qrc DEFINES += PROPARSER_THREAD_SAFE diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp index 1302cec8fb1240de033521f97e9e08caf86dd054..61de3d88ca7ff5912a60e3cc54f7491422740f87 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp @@ -29,6 +29,8 @@ #include "targetsetuppage.h" +#include "ui_targetsetuppage.h" + #include "qt4project.h" #include "qt4projectmanagerconstants.h" #include "qt4target.h" @@ -45,40 +47,26 @@ using namespace Qt4ProjectManager::Internal; TargetSetupPage::TargetSetupPage(QWidget *parent) : QWizardPage(parent), - m_preferMobile(false) + m_preferMobile(false), + m_ui(new Ui::TargetSetupPage) { - resize(550, 500); - setTitle(tr("Set up targets for your project")); - - QVBoxLayout *vbox = new QVBoxLayout(this); - - m_importLabel = new QLabel(this); - m_importLabel->setText(tr("Qt Creator can set up the following targets:")); - m_importLabel->setWordWrap(true); - vbox->addWidget(m_importLabel); + m_ui->setupUi(this); + m_ui->versionTree->header()->setResizeMode(0, QHeaderView::ResizeToContents); + m_ui->versionTree->header()->setResizeMode(1, QHeaderView::ResizeToContents); - m_treeWidget = new QTreeWidget(this); - m_treeWidget->setColumnCount(3); - m_treeWidget->header()->setResizeMode(0, QHeaderView::ResizeToContents); - m_treeWidget->header()->setResizeMode(1, QHeaderView::ResizeToContents); - m_treeWidget->setHeaderLabels(QStringList() << tr("Qt Version") << tr("Status") << tr("Directory")); - vbox->addWidget(m_treeWidget); - - m_addDirectoryButton = new QPushButton(tr("Add shadow build location...")); - vbox->addWidget(m_addDirectoryButton); - - connect(m_addDirectoryButton, SIGNAL(clicked()), + connect(m_ui->importButton, SIGNAL(clicked()), this, SLOT(addShadowBuildLocation())); } TargetSetupPage::~TargetSetupPage() { resetInfos(); + delete m_ui; } void TargetSetupPage::setImportInfos(const QList<ImportInfo> &infos) { - disconnect(m_treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), + disconnect(m_ui->versionTree, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(itemWasChanged())); // Create a list of all temporary Qt versions we need to delete in our existing list @@ -124,11 +112,13 @@ void TargetSetupPage::setImportInfos(const QList<ImportInfo> &infos) } qSort(targets.begin(), targets.end()); - m_treeWidget->clear(); + m_ui->versionTree->clear(); Qt4TargetFactory factory; foreach (const QString &t, targets) { - QTreeWidgetItem *targetItem = new QTreeWidgetItem(m_treeWidget); - targetItem->setText(0, factory.displayNameForId(t)); + QTreeWidgetItem *targetItem = new QTreeWidgetItem(m_ui->versionTree); + const QString targetName = factory.displayNameForId(t); + targetItem->setText(0, targetName); + targetItem->setToolTip(0, targetName); targetItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable); targetItem->setData(0, Qt::UserRole, t); targetItem->setExpanded(true); @@ -142,8 +132,12 @@ void TargetSetupPage::setImportInfos(const QList<ImportInfo> &infos) QTreeWidgetItem *versionItem = new QTreeWidgetItem(targetItem); QPair<QIcon, QString> issues = reportIssues(i.version); + QString toolTip = i.version->displayName(); + if (!issues.second.isEmpty()) + toolTip.append(QString::fromLatin1("<br><br>%1").arg(issues.second)); + // Column 0: - versionItem->setToolTip(0, issues.second); + versionItem->setToolTip(0, toolTip); versionItem->setIcon(0, issues.first); versionItem->setText(0, i.version->displayName()); versionItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); @@ -165,15 +159,19 @@ void TargetSetupPage::setImportInfos(const QList<ImportInfo> &infos) versionItem->setCheckState(0, shouldCheck ? Qt::Checked : Qt::Unchecked); // Column 1 (status): - versionItem->setText(1, i.isExistingBuild ? tr("Import", "Is this an import of an existing build or a new one?") : - tr("New", "Is this an import of an existing build or a new one?")); + const QString status = i.isExistingBuild ? tr("Import", "Is this an import of an existing build or a new one?") : + tr("New", "Is this an import of an existing build or a new one?"); + versionItem->setText(1, status); + versionItem->setToolTip(1, status); // Column 2 (directory): - versionItem->setText(2, QDir::toNativeSeparators(i.directory)); + const QString dir = QDir::toNativeSeparators(i.directory); + versionItem->setText(2, dir); + versionItem->setToolTip(2, dir); } } - connect(m_treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), + connect(m_ui->versionTree, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(itemWasChanged())); emit completeChanged(); @@ -186,8 +184,8 @@ QList<TargetSetupPage::ImportInfo> TargetSetupPage::importInfos() const bool TargetSetupPage::hasSelection() const { - for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) { - QTreeWidgetItem * current = m_treeWidget->topLevelItem(i); + for (int i = 0; i < m_ui->versionTree->topLevelItemCount(); ++i) { + QTreeWidgetItem * current = m_ui->versionTree->topLevelItem(i); for (int j = 0; j < current->childCount(); ++j) { QTreeWidgetItem * child = current->child(j); if (child->checkState(0) == Qt::Checked) @@ -199,8 +197,8 @@ bool TargetSetupPage::hasSelection() const bool TargetSetupPage::isTargetSelected(const QString &targetid) const { - for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) { - QTreeWidgetItem * current = m_treeWidget->topLevelItem(i); + for (int i = 0; i < m_ui->versionTree->topLevelItemCount(); ++i) { + QTreeWidgetItem * current = m_ui->versionTree->topLevelItem(i); if (current->data(0, Qt::UserRole).toString() != targetid) continue; for (int j = 0; j < current->childCount(); ++j) { @@ -217,8 +215,8 @@ bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project) Q_ASSERT(project->targets().isEmpty()); QtVersionManager *vm = QtVersionManager::instance(); - for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) { - QTreeWidgetItem *current = m_treeWidget->topLevelItem(i); + for (int i = 0; i < m_ui->versionTree->topLevelItemCount(); ++i) { + QTreeWidgetItem *current = m_ui->versionTree->topLevelItem(i); QString targetId = current->data(0, Qt::UserRole).toString(); QList<BuildConfigurationInfo> targetInfos; @@ -273,8 +271,8 @@ bool TargetSetupPage::isComplete() const void TargetSetupPage::setImportDirectoryBrowsingEnabled(bool browsing) { - m_addDirectoryButton->setEnabled(browsing); - m_addDirectoryButton->setVisible(browsing); + m_ui->importButton->setEnabled(browsing); + m_ui->importButton->setVisible(browsing); } void TargetSetupPage::setImportDirectoryBrowsingLocation(const QString &directory) @@ -284,7 +282,7 @@ void TargetSetupPage::setImportDirectoryBrowsingLocation(const QString &director void TargetSetupPage::setShowLocationInformation(bool location) { - m_treeWidget->setColumnCount(location ? 3 : 1); + m_ui->versionTree->setColumnCount(location ? 3 : 1); } void TargetSetupPage::setPreferMobile(bool mobile) @@ -296,8 +294,8 @@ void TargetSetupPage::setProFilePath(const QString &path) { m_proFilePath = path; if (!m_proFilePath.isEmpty()) { - m_importLabel->setText(tr("Qt Creator can set up the following targets for project <b>%1</b>:", - "%1: Project name").arg(QFileInfo(m_proFilePath).baseName())); + m_ui->descriptionLabel->setText(tr("Qt Creator can set up the following targets for project <b>%1</b>:", + "%1: Project name").arg(QFileInfo(m_proFilePath).baseName())); } // Force regeneration of tree widget contents: QList<ImportInfo> tmp = m_infos; @@ -428,7 +426,7 @@ void TargetSetupPage::addShadowBuildLocation() void TargetSetupPage::resetInfos() { - m_treeWidget->clear(); + m_ui->versionTree->clear(); foreach (const ImportInfo &info, m_infos) { if (info.isTemporary) delete info.version; diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h index edf2adb52e282442fada29970816a891c59a3fb1..a60c38639571fc885df34156a321b4d347387e41 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h @@ -51,6 +51,10 @@ class Qt4Project; namespace Internal { +namespace Ui { +class TargetSetupPage; +} + class TargetSetupPage : public QWizardPage { Q_OBJECT @@ -120,12 +124,11 @@ private: QPair<QIcon, QString> reportIssues(QtVersion *version); QList<ImportInfo> m_infos; - QLabel *m_importLabel; - QTreeWidget *m_treeWidget; - QPushButton *m_addDirectoryButton; bool m_preferMobile; QString m_proFilePath; QString m_defaultShadowBuildLocation; + + Ui::TargetSetupPage *m_ui; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui b/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui new file mode 100644 index 0000000000000000000000000000000000000000..6ecdf59fd62055100454a27114498dc438fd7ffe --- /dev/null +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.ui @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Qt4ProjectManager::Internal::TargetSetupPage</class> + <widget class="QWidget" name="Qt4ProjectManager::Internal::TargetSetupPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>550</width> + <height>450</height> + </rect> + </property> + <property name="windowTitle"> + <string>Setup targets for your project</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="descriptionLabel"> + <property name="text"> + <string>Qt Creator can set up the following targets:</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="textInteractionFlags"> + <set>Qt::NoTextInteraction</set> + </property> + </widget> + </item> + <item> + <widget class="QTreeWidget" name="versionTree"> + <property name="columnCount"> + <number>3</number> + </property> + <column> + <property name="text"> + <string>Qt Version</string> + </property> + </column> + <column> + <property name="text"> + <string>Status</string> + </property> + </column> + <column> + <property name="text"> + <string>Build Directory</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QPushButton" name="importButton"> + <property name="text"> + <string>Import existing shadow build...</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui>