From e4f6dede44f5a41cf6cb87bc84f962a9dc963c8b Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Tue, 26 Jul 2011 12:33:53 +0200 Subject: [PATCH] QtOptionsPage: Store selected toolchain for debugging helpers Keep selected toolchain when switching between Qt versions. Change-Id: I801e507d11b36b01888f016c35196fb098473bbf Reviewed-on: http://codereview.qt.nokia.com/2183 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Daniel Teske <daniel.teske@nokia.com> --- src/plugins/qtsupport/qtoptionspage.cpp | 37 +++++++++++++++++++++---- src/plugins/qtsupport/qtoptionspage.h | 5 +++- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index 9a6be2cc90f..356469e4c2f 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -58,7 +58,7 @@ #include <QtGui/QFileDialog> #include <QtGui/QMainWindow> -enum ModelRoles { VersionIdRole = Qt::UserRole, BuildLogRole, BuildRunningRole}; +enum ModelRoles { VersionIdRole = Qt::UserRole, ToolChainIdRole, BuildLogRole, BuildRunningRole}; using namespace QtSupport; using namespace QtSupport::Internal; @@ -172,6 +172,7 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<BaseQtVersion *> item->setText(0, version->displayName()); item->setText(1, QDir::toNativeSeparators(version->qmakeCommand())); item->setData(0, VersionIdRole, version->uniqueId()); + item->setData(0, ToolChainIdRole, defaultToolChainId(version)); const ValidityInfo info = validInformation(version); item->setIcon(0, info.icon); } @@ -204,6 +205,8 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<BaseQtVersion *> connect(m_debuggingHelperUi->showLogButton, SIGNAL(clicked()), this, SLOT(slotShowDebuggingBuildLog())); + connect(m_debuggingHelperUi->toolChainComboBox, SIGNAL(activated(int)), + this, SLOT(selectedToolChainChanged(int))); connect(m_ui->cleanUpButton, SIGNAL(clicked()), this, SLOT(cleanUpQtVersions())); userChangedCurrentVersion(); @@ -326,15 +329,30 @@ void QtOptionsPageWidget::toolChainsUpdated() { for (int i = 0; i < m_versions.count(); ++i) { QTreeWidgetItem *item = treeItemForIndex(i); - if (item == m_ui->qtdirList->currentItem()) + if (item == m_ui->qtdirList->currentItem()) { updateDescriptionLabel(); - else { + updateDebuggingHelperUi(); + } else { const ValidityInfo info = validInformation(m_versions.at(i)); item->setIcon(0, info.icon); } } } +void QtOptionsPageWidget::selectedToolChainChanged(int comboIndex) +{ + const int index = currentIndex(); + if (index < 0) + return; + + QTreeWidgetItem *item = treeItemForIndex(index); + QTC_ASSERT(item, return); + + QString toolChainId = m_debuggingHelperUi->toolChainComboBox->itemData(comboIndex).toString(); + + item->setData(0, ToolChainIdRole, toolChainId); +} + void QtOptionsPageWidget::qtVersionsDumpUpdated(const QString &qmakeCommand) { foreach (BaseQtVersion *version, m_versions) { @@ -424,6 +442,14 @@ QList<ProjectExplorer::ToolChain*> QtOptionsPageWidget::toolChains(const BaseQtV return toolChains.values(); } +QString QtOptionsPageWidget::defaultToolChainId(const BaseQtVersion *version) +{ + QList<ProjectExplorer::ToolChain*> possibleToolChains = toolChains(version); + if (!possibleToolChains.isEmpty()) + return possibleToolChains.first()->id(); + return QString(); +} + void QtOptionsPageWidget::buildDebuggingHelper(DebuggingHelperBuildTask::Tools tools) { const int index = currentIndex(); @@ -569,6 +595,7 @@ void QtOptionsPageWidget::addQtDir() item->setText(0, version->displayName()); item->setText(1, QDir::toNativeSeparators(version->qmakeCommand())); item->setData(0, VersionIdRole, version->uniqueId()); + item->setData(0, ToolChainIdRole, defaultToolChainId(version)); item->setIcon(0, version->isValid()? m_validVersionIcon : m_invalidVersionIcon); m_ui->qtdirList->setCurrentItem(item); // should update the rest of the ui m_versionUi->nameEdit->setFocus(); @@ -624,6 +651,7 @@ void QtOptionsPageWidget::editPath() item->setText(0, version->displayName()); item->setText(1, QDir::toNativeSeparators(version->qmakeCommand())); item->setData(0, VersionIdRole, version->uniqueId()); + item->setData(0, ToolChainIdRole, defaultToolChainId(version)); item->setIcon(0, version->isValid()? m_validVersionIcon : m_invalidVersionIcon); } @@ -780,8 +808,7 @@ void QtOptionsPageWidget::updateDebuggingHelperUi() & !isBuildingQmlObserver); QList<ProjectExplorer::ToolChain*> toolchains = toolChains(currentVersion()); - QString selectedToolChainId = m_debuggingHelperUi->toolChainComboBox->itemData( - m_debuggingHelperUi->toolChainComboBox->currentIndex()).toString(); + QString selectedToolChainId = currentItem->data(0, ToolChainIdRole).toString(); m_debuggingHelperUi->toolChainComboBox->clear(); for (int i = 0; i < toolchains.size(); ++i) { if (!toolchains.at(i)->isValid()) diff --git a/src/plugins/qtsupport/qtoptionspage.h b/src/plugins/qtsupport/qtoptionspage.h index 82d38b18b03..0a106fc69bd 100644 --- a/src/plugins/qtsupport/qtoptionspage.h +++ b/src/plugins/qtsupport/qtoptionspage.h @@ -111,9 +111,11 @@ private slots: void buildQmlDebuggingLibrary(); void buildQmlObserver(); void slotShowDebuggingBuildLog(); - void debuggingHelperBuildFinished(int qtVersionId, const QString &output, DebuggingHelperBuildTask::Tools tools); + void debuggingHelperBuildFinished(int qtVersionId, const QString &output, + DebuggingHelperBuildTask::Tools tools); void cleanUpQtVersions(); void toolChainsUpdated(); + void selectedToolChainChanged(int index); void qtVersionsDumpUpdated(const QString &qmakeCommand); @@ -125,6 +127,7 @@ private: }; ValidityInfo validInformation(const BaseQtVersion *version); QList<ProjectExplorer::ToolChain*> toolChains(const BaseQtVersion *version); + QString defaultToolChainId(const BaseQtVersion *verison); }; class QtOptionsPage : public Core::IOptionsPage -- GitLab