diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 033ae8b1b0d9be05ad7c28ea1c963e96be8c1fe6..eba4226c704fbf4be032b7ca687843d51b14ec57 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -64,44 +64,6 @@ static const char *QtVersionsSectionName = "QtVersions"; static const char *defaultQtVersionKey = "DefaultQtVersion"; static const char *newQtVersionsKey = "NewQtVersions"; -DebuggingHelperWidget::DebuggingHelperWidget() -{ - setLayout(new QHBoxLayout()); - m_statusLabel = new QLabel(this); - - layout()->addWidget(m_statusLabel); - - m_showLog = new QPushButton(this); - m_showLog->setText("Show Log"); - layout()->addWidget(m_showLog); - - m_rebuild = new QPushButton(this); - m_rebuild->setText("Rebuild"); - layout()->addWidget(m_rebuild); - - connect(m_showLog, SIGNAL(clicked()), this, SIGNAL(showLogClicked())); - connect(m_rebuild, SIGNAL(clicked()), this, SIGNAL(rebuildClicked())); -} - -void DebuggingHelperWidget::setState(State s) -{ - if (s & InvalidQt) { - m_statusLabel->setVisible(false); - m_showLog->setVisible(false); - m_rebuild->setVisible(false); - return; - } else { - m_statusLabel->setVisible(true); - m_statusLabel->setText(""); - m_showLog->setVisible(true); - m_rebuild->setVisible(true); - if (s & Error) - m_statusLabel->setPixmap(QPixmap(":/extensionsystem/images/error.png")); - else - m_statusLabel->setPixmap(QPixmap(":/extensionsystem/images/ok.png")); - m_showLog->setVisible(s & ShowLog); - } -} QtVersionManager::QtVersionManager() @@ -445,20 +407,15 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defau item->setText(1, version->path()); item->setData(0, Qt::UserRole, version->uniqueId()); - DebuggingHelperWidget *dhw = new DebuggingHelperWidget(); - m_ui.qtdirList->setItemWidget(item, 2, dhw); if (version->isValid()) { if (version->hasDebuggingHelper()) - dhw->setState(DebuggingHelperWidget::Ok); + item->setData(2, Qt::DecorationRole, QIcon(":/extensionsystem/images/ok.png")); else - dhw->setState(DebuggingHelperWidget::Error); + item->setData(2, Qt::DecorationRole, QIcon(":/extensionsystem/images/error.png")); } else { - dhw->setState(DebuggingHelperWidget::InvalidQt); + item->setData(2, Qt::DecorationRole, QIcon()); } - connect(dhw, SIGNAL(rebuildClicked()), this, SLOT(buildDebuggingHelper())); - connect(dhw, SIGNAL(showLogClicked()), this, SLOT(showDebuggingBuildLog())); - m_ui.defaultCombo->addItem(version->name()); if (i == m_defaultVersion) m_ui.defaultCombo->setCurrentIndex(i); @@ -491,6 +448,11 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defau connect(m_ui.msvcComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(msvcVersionChanged())); + connect(m_ui.rebuildButton, SIGNAL(clicked()), + this, SLOT(buildDebuggingHelper())); + connect(m_ui.showLogButton, SIGNAL(clicked()), + this, SLOT(showDebuggingBuildLog())); + showEnvironmentPage(0); updateState(); } @@ -498,47 +460,37 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList<QtVersion *> versions, int defau void QtDirWidget::buildDebuggingHelper() { // Find the qt version for this button.. - int index = indexForWidget(qobject_cast<QWidget *>(sender())); - if (index == -1) + QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); + if (!currentItem) return; - QString result = m_versions.at(index)->buildDebuggingHelperLibrary(); - - QTreeWidgetItem *item = m_ui.qtdirList->topLevelItem(index); - item->setData(2, Qt::UserRole, result); - DebuggingHelperWidget *dhw = - qobject_cast<DebuggingHelperWidget *>(m_ui.qtdirList->itemWidget(item, 2)); - if (dhw) { + int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); + QtVersion *version = m_versions[currentItemIndex]; - if (m_versions.at(index)->hasDebuggingHelper()) - dhw->setState(DebuggingHelperWidget::State(DebuggingHelperWidget::Ok | DebuggingHelperWidget::ShowLog)); - else - dhw->setState(DebuggingHelperWidget::State(DebuggingHelperWidget::Error | DebuggingHelperWidget::ShowLog)); - } -} + QString result = m_versions.at(currentItemIndex)->buildDebuggingHelperLibrary(); + currentItem->setData(2, Qt::UserRole, result); -int QtDirWidget::indexForWidget(QWidget *widget) const -{ - int index = -1; - for (int i = 0; i < m_ui.qtdirList->topLevelItemCount(); ++i) { - if (m_ui.qtdirList->itemWidget(m_ui.qtdirList->topLevelItem(i), 2) == widget) { - index = i; - break; - } + if (version->hasDebuggingHelper()) { + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap(":/extensionsystem/images/ok.png")); + currentItem->setData(2, Qt::DecorationRole, QIcon(":/extensionsystem/images/ok.png")); + } else { + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap(":/extensionsystem/images/error.png")); + currentItem->setData(2, Qt::DecorationRole, QIcon(":/extensionsystem/images/error.png")); } - return index; + m_ui.showLogButton->setEnabled(true); } void QtDirWidget::showDebuggingBuildLog() { - int index = indexForWidget(qobject_cast<QWidget *>(sender())); - if (index == -1) + QTreeWidgetItem *currentItem = m_ui.qtdirList->currentItem(); + if (!currentItem) return; + int currentItemIndex = m_ui.qtdirList->indexOfTopLevelItem(currentItem); QDialog dlg; Ui_ShowBuildLog ui; ui.setupUi(&dlg); - ui.log->setPlainText(m_ui.qtdirList->topLevelItem(index)->data(2, Qt::UserRole).toString()); + ui.log->setPlainText(m_ui.qtdirList->topLevelItem(currentItemIndex)->data(2, Qt::UserRole).toString()); dlg.exec(); } @@ -556,16 +508,7 @@ void QtDirWidget::addQtDir() item->setText(0, newVersion->name()); item->setText(1, newVersion->path()); item->setData(0, Qt::UserRole, newVersion->uniqueId()); - - DebuggingHelperWidget *dhw = new DebuggingHelperWidget(); - m_ui.qtdirList->setItemWidget(item, 2, dhw); - if (newVersion->hasDebuggingHelper()) - dhw->setState(DebuggingHelperWidget::Ok); - else - dhw->setState(DebuggingHelperWidget::Error); - connect(dhw, SIGNAL(rebuildClicked()), this, SLOT(buildDebuggingHelper())); - connect(dhw, SIGNAL(showLogClicked()), this, SLOT(showDebuggingBuildLog())); - m_ui.qtdirList->setItemWidget(item, 2, dhw); + item->setData(2, Qt::DecorationRole, QIcon()); m_ui.qtdirList->setCurrentItem(item); @@ -579,8 +522,6 @@ void QtDirWidget::addQtDir() void QtDirWidget::removeQtDir() { QTreeWidgetItem *item = m_ui.qtdirList->currentItem(); - - int index = m_ui.qtdirList->indexOfTopLevelItem(item); if (index < 0) return; @@ -607,8 +548,24 @@ void QtDirWidget::updateState() m_ui.nameEdit->setEnabled(enabled && !isSystemVersion); m_ui.qtPath->setEnabled(enabled && !isSystemVersion); m_ui.mingwPath->setEnabled(enabled); -} + bool hasLog = enabled && !m_ui.qtdirList->currentItem()->data(2, Qt::UserRole).toString().isEmpty(); + m_ui.showLogButton->setEnabled(hasLog); + + QtVersion *version = 0; + if (enabled) + version = m_versions.at(m_ui.qtdirList->indexOfTopLevelItem(m_ui.qtdirList->currentItem())); + if (version) { + m_ui.rebuildButton->setEnabled(version->isValid()); + if (version->hasDebuggingHelper()) + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap(":/extensionsystem/images/ok.png")); + else + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap(":/extensionsystem/images/error.png")); + } else { + m_ui.rebuildButton->setEnabled(false); + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap()); + } +} void QtDirWidget::makeMingwVisible(bool visible) { m_ui.mingwLabel->setVisible(visible); @@ -781,16 +738,20 @@ void QtDirWidget::updateCurrentQtPath() showEnvironmentPage(currentItem); - DebuggingHelperWidget *dhw = qobject_cast<DebuggingHelperWidget *>(m_ui.qtdirList->itemWidget(currentItem, 2)); if (m_versions[currentItemIndex]->isValid()) { - DebuggingHelperWidget::State s = DebuggingHelperWidget::Ok; - if (!m_versions[currentItemIndex]->hasDebuggingHelper()) - s = DebuggingHelperWidget::State(s | DebuggingHelperWidget::Error); - if (!currentItem->data(2, Qt::UserRole).toString().isEmpty()) - s = DebuggingHelperWidget::State(s | DebuggingHelperWidget::ShowLog); - dhw->setState(s); + bool hasLog = !currentItem->data(2, Qt::UserRole).toString().isEmpty(); + bool hasHelper = m_versions[currentItemIndex]->hasDebuggingHelper(); + if (hasHelper) { + currentItem->setData(2, Qt::DecorationRole, QIcon(":/extensionsystem/images/ok.png")); + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap(":/extensionsystem/images/ok.png")); + } else { + currentItem->setData(2, Qt::DecorationRole, QIcon(":/extensionsystem/images/error.png")); + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap(":/extensionsystem/images/error.png")); + } + m_ui.showLogButton->setEnabled(hasLog); } else { - dhw->setState(DebuggingHelperWidget::InvalidQt); + currentItem->setData(2, Qt::DecorationRole, QIcon()); + m_ui.debuggingHelperStateLabel->setPixmap(QPixmap()); } } diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 0d61ac22d191dcba9998fb8e24cf0ebc3e081aaa..867f24875ed62f27b8fec0d1fcb617f271262e30 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -223,27 +223,6 @@ private: int m_idcount; }; -class DebuggingHelperWidget : public QWidget -{ - Q_OBJECT -public: - DebuggingHelperWidget(); - enum State { - Ok = 0, - Error = 1, - ShowLog = 2, - InvalidQt = 4 - }; - void setState(State s); -signals: - void rebuildClicked(); - void showLogClicked(); -private: - QLabel *m_statusLabel; - QPushButton *m_showLog; - QPushButton *m_rebuild; -}; - } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qtversionmanager.ui b/src/plugins/qt4projectmanager/qtversionmanager.ui index fd61e92f4bbb6286bb83eeed45105a210b1a7b53..2dd168325cef1211a516d5954cad18087bc2e83a 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.ui +++ b/src/plugins/qt4projectmanager/qtversionmanager.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>823</width> - <height>929</height> + <width>811</width> + <height>505</height> </rect> </property> <property name="windowTitle"> @@ -61,7 +61,7 @@ </property> <property name="sizeHint" stdset="0"> <size> - <width>20</width> + <width>10</width> <height>40</height> </size> </property> @@ -137,6 +137,38 @@ <item row="3" column="1" colspan="2"> <widget class="Core::Utils::PathChooser" name="mingwPath" native="true"/> </item> + <item row="5" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Debugging Helper:</string> + </property> + </widget> + </item> + <item row="5" column="1" colspan="2"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QLabel" name="debuggingHelperStateLabel"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="showLogButton"> + <property name="text"> + <string>Show &Log</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="rebuildButton"> + <property name="text"> + <string>&Rebuild</string> + </property> + </widget> + </item> + </layout> + </item> </layout> </widget> </item>