From 0023ed78ba7a6b9bbfb341d841b4ab4d8f766723 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Thu, 31 Mar 2011 16:56:58 +0200 Subject: [PATCH] Qt: Add button to remove all invalid Qt versions Add a button to remove all invalid Qt versions. Task-number: QTCREATORBUG-3969 --- .../qt4projectmanager/qtoptionspage.cpp | 35 +++++++++++++++++++ src/plugins/qt4projectmanager/qtoptionspage.h | 1 + .../qt4projectmanager/qtversionmanager.ui | 7 ++++ 3 files changed, 43 insertions(+) diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 1a5532b5c2e..3aff7502408 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -60,6 +60,7 @@ #include <QtGui/QHelpEvent> #include <QtGui/QToolTip> #include <QtGui/QMenu> +#include <QtGui/QMessageBox> enum ModelRoles { VersionIdRole = Qt::UserRole, BuildLogRole, BuildRunningRole}; @@ -214,6 +215,7 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver connect(m_debuggingHelperUi->showLogButton, SIGNAL(clicked()), this, SLOT(slotShowDebuggingBuildLog())); + connect(m_ui->cleanUpButton, SIGNAL(clicked()), this, SLOT(cleanUpQtVersions())); showEnvironmentPage(0); updateState(); } @@ -300,6 +302,36 @@ void QtOptionsPageWidget::debuggingHelperBuildFinished(int qtVersionId, Debuggin showDebuggingBuildLog(item); } +void QtOptionsPageWidget::cleanUpQtVersions() +{ + QStringList toRemove; + foreach (const QtVersion *v, m_versions) { + if (!v->isValid()) + toRemove.append(v->displayName()); + } + + if (toRemove.isEmpty()) + return; + + if (QMessageBox::warning(0, tr("Remove invalid Qt Versions"), + tr("Do you want to remove all invalid Qt Versions?<br>" + "<ul><li>%1</li></ul><br>" + "will be removed.").arg(toRemove.join(QLatin1String("</li><li>"))), + QMessageBox::Yes, QMessageBox::No) == QMessageBox::No) + return; + + for (int i = m_versions.count() - 1; i >= 0; --i) { + if (!m_versions.at(i)->isValid()) { + QTreeWidgetItem *item = treeItemForIndex(i); + delete item; + + delete m_versions.at(i); + m_versions.removeAt(i); + } + } + updateState(); +} + void QtOptionsPageWidget::buildDebuggingHelper(DebuggingHelperBuildTask::Tools tools) { const int index = currentIndex(); @@ -592,11 +624,13 @@ void QtOptionsPageWidget::updateDebuggingHelperUi() void QtOptionsPageWidget::updateState() { + bool hasInvalidVersion = false; for (int i = 0; i < m_versions.count(); ++i) { QTreeWidgetItem *item = treeItemForIndex(i); if (!m_versions.at(i)->isValid()) { if (item) item->setIcon(0, m_invalidVersionIcon); + hasInvalidVersion = true; } else { if (item) item->setIcon(0, m_validVersionIcon); @@ -607,6 +641,7 @@ void QtOptionsPageWidget::updateState() const bool enabled = version != 0; const bool isAutodetected = enabled && version->isAutodetected(); m_ui->delButton->setEnabled(enabled && !isAutodetected); + m_ui->cleanUpButton->setEnabled(hasInvalidVersion); m_versionUi->nameEdit->setEnabled(enabled && !isAutodetected); m_versionUi->qmakePath->setEnabled(enabled && !isAutodetected); bool s60SDKPathEnabled = enabled && diff --git a/src/plugins/qt4projectmanager/qtoptionspage.h b/src/plugins/qt4projectmanager/qtoptionspage.h index 40ca1a83861..2329107027e 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.h +++ b/src/plugins/qt4projectmanager/qtoptionspage.h @@ -110,6 +110,7 @@ private slots: void buildQmlObserver(); void slotShowDebuggingBuildLog(); void debuggingHelperBuildFinished(int qtVersionId, DebuggingHelperBuildTask::Tools tools, const QString &output); + void cleanUpQtVersions(); private: void updateDescriptionLabel(); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.ui b/src/plugins/qt4projectmanager/qtversionmanager.ui index 626d52587b2..12db10607b6 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.ui +++ b/src/plugins/qt4projectmanager/qtversionmanager.ui @@ -80,6 +80,13 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="cleanUpButton"> + <property name="text"> + <string>Clean up</string> + </property> + </widget> + </item> </layout> </item> </layout> -- GitLab