diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2013-10-28 17:47:37 +0100 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2013-10-28 18:07:46 +0100 |
commit | fd8f2c6cdb4ffa39da6ef89461260e3001f23ad9 (patch) | |
tree | 426ac749cfc5abe0cab7a381f27591b2c4e5ba87 /src/plugins/debugger/debuggeroptionspage.cpp | |
parent | b17e8e3061aa449ae4cfd549228111c9c745b410 (diff) | |
download | qt-creator-fd8f2c6cdb4ffa39da6ef89461260e3001f23ad9.tar.gz |
Debugger: Make cancel work in DebuggerOptionsPage
Change-Id: I09735507703e9a2c55aff68a25a4405cf12c9ab4
Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'src/plugins/debugger/debuggeroptionspage.cpp')
-rw-r--r-- | src/plugins/debugger/debuggeroptionspage.cpp | 108 |
1 files changed, 47 insertions, 61 deletions
diff --git a/src/plugins/debugger/debuggeroptionspage.cpp b/src/plugins/debugger/debuggeroptionspage.cpp index 06b1c084cf..3c5aa436c6 100644 --- a/src/plugins/debugger/debuggeroptionspage.cpp +++ b/src/plugins/debugger/debuggeroptionspage.cpp @@ -64,10 +64,8 @@ class DebuggerItemConfigWidget : public QWidget public: explicit DebuggerItemConfigWidget(DebuggerItemModel *model); - void loadItem(); - void saveItem(); - void connectDirty(); - void disconnectDirty(); + void setItem(const DebuggerItem &item); + void apply(); private: QLineEdit *m_displayNameLineEdit; @@ -102,43 +100,19 @@ DebuggerItemConfigWidget::DebuggerItemConfigWidget(DebuggerItemModel *model) : formLayout->addRow(m_cdbLabel); formLayout->addRow(new QLabel(tr("Path:")), m_binaryChooser); formLayout->addRow(new QLabel(tr("ABIs:")), m_abis); - - connectDirty(); -} - -void DebuggerItemConfigWidget::connectDirty() -{ - connect(m_displayNameLineEdit, SIGNAL(textChanged(QString)), - m_model, SLOT(markCurrentDirty())); - connect(m_binaryChooser, SIGNAL(changed(QString)), - m_model, SLOT(markCurrentDirty())); -} - -void DebuggerItemConfigWidget::disconnectDirty() -{ - disconnect(m_displayNameLineEdit, SIGNAL(textChanged(QString)), - m_model, SLOT(markCurrentDirty())); - disconnect(m_binaryChooser, SIGNAL(changed(QString)), - m_model, SLOT(markCurrentDirty())); } -void DebuggerItemConfigWidget::loadItem() +void DebuggerItemConfigWidget::setItem(const DebuggerItem &item) { - const DebuggerItem *item = DebuggerItemManager::findById(m_model->currentDebugger()); - if (!item) - return; - - disconnectDirty(); - m_displayNameLineEdit->setEnabled(!item->isAutoDetected()); - m_displayNameLineEdit->setText(item->displayName()); + m_displayNameLineEdit->setEnabled(!item.isAutoDetected()); + m_displayNameLineEdit->setText(item.displayName()); - m_binaryChooser->setEnabled(!item->isAutoDetected()); - m_binaryChooser->setFileName(item->command()); - connectDirty(); + m_binaryChooser->setEnabled(!item.isAutoDetected()); + m_binaryChooser->setFileName(item.command()); QString text; QString versionCommand; - if (item->engineType() == CdbEngineType) { + if (item.engineType() == CdbEngineType) { #ifdef Q_OS_WIN const bool is64bit = winIs64BitSystem(); #else @@ -159,15 +133,18 @@ void DebuggerItemConfigWidget::loadItem() m_cdbLabel->setVisible(!text.isEmpty()); m_binaryChooser->setCommandVersionArguments(QStringList(versionCommand)); - m_abis->setText(item->abiNames().join(QLatin1String(", "))); + m_abis->setText(item.abiNames().join(QLatin1String(", "))); } -void DebuggerItemConfigWidget::saveItem() +void DebuggerItemConfigWidget::apply() { - const DebuggerItem *item = DebuggerItemManager::findById(m_model->currentDebugger()); - QTC_ASSERT(item, return); - DebuggerItemManager::setItemData(item->id(), m_displayNameLineEdit->text(), - m_binaryChooser->fileName()); + DebuggerItem item = m_model->currentDebugger(); + QTC_ASSERT(item.isValid(), return); + + item.setDisplayName(m_displayNameLineEdit->text()); + item.setCommand(m_binaryChooser->fileName()); + item.reinitializeFromFile(); + m_model->updateDebugger(item); } // -------------------------------------------------------------------------- @@ -253,21 +230,23 @@ QWidget *DebuggerOptionsPage::createPage(QWidget *parent) void DebuggerOptionsPage::apply() { - m_itemConfigWidget->saveItem(); - debuggerModelChanged(); + m_itemConfigWidget->apply(); + m_model->apply(); } void DebuggerOptionsPage::cloneDebugger() { - const DebuggerItem *item = DebuggerItemManager::findById(m_model->currentDebugger()); - QTC_ASSERT(item, return); + DebuggerItem item = m_model->currentDebugger(); + if (!item.isValid()) + return; + DebuggerItem newItem; - newItem.setCommand(item->command()); - newItem.setEngineType(item->engineType()); - newItem.setAbis(item->abis()); - newItem.setDisplayName(DebuggerItemManager::uniqueDisplayName(tr("Clone of %1").arg(item->displayName()))); + newItem.setCommand(item.command()); + newItem.setEngineType(item.engineType()); + newItem.setAbis(item.abis()); + newItem.setDisplayName(DebuggerItemManager::uniqueDisplayName(tr("Clone of %1").arg(item.displayName()))); newItem.setAutoDetected(false); - DebuggerItemManager::addDebugger(newItem); + m_model->addDebugger(newItem); m_debuggerView->setCurrentIndex(m_model->lastIndex()); } @@ -277,14 +256,14 @@ void DebuggerOptionsPage::addDebugger() item.setEngineType(NoEngineType); item.setDisplayName(DebuggerItemManager::uniqueDisplayName(tr("New Debugger"))); item.setAutoDetected(false); - DebuggerItemManager::addDebugger(item); + m_model->addDebugger(item); m_debuggerView->setCurrentIndex(m_model->lastIndex()); } void DebuggerOptionsPage::removeDebugger() { - QVariant id = m_model->currentDebugger(); - DebuggerItemManager::removeDebugger(id); + QVariant id = m_model->currentDebuggerId(); + m_model->removeDebugger(id); m_debuggerView->setCurrentIndex(m_model->lastIndex()); } @@ -314,8 +293,10 @@ void DebuggerOptionsPage::debuggerSelectionChanged() mi = mi.sibling(mi.row(), 0); m_model->setCurrentIndex(mi); - m_itemConfigWidget->loadItem(); - m_container->setVisible(m_model->currentDebugger().isValid()); + DebuggerItem item = m_model->currentDebugger(); + + m_itemConfigWidget->setItem(item); + m_container->setVisible(item.isValid()); updateState(); } @@ -323,8 +304,13 @@ void DebuggerOptionsPage::debuggerModelChanged() { QTC_ASSERT(m_container, return); - m_itemConfigWidget->loadItem(); - m_container->setVisible(m_model->currentDebugger().isValid()); + QVariant id = m_model->currentDebuggerId(); + const DebuggerItem *item = DebuggerItemManager::findById(id); + if (!item) + return; + + m_itemConfigWidget->setItem(*item); + m_container->setVisible(m_model->currentDebuggerId().isValid()); m_debuggerView->setCurrentIndex(m_model->currentIndex()); updateState(); } @@ -337,11 +323,11 @@ void DebuggerOptionsPage::updateState() bool canCopy = false; bool canDelete = false; - if (const DebuggerItem *item = DebuggerItemManager::findById(m_model->currentDebugger())) { - canCopy = item->isValid() && item->canClone(); - canDelete = !item->isAutoDetected(); - canDelete = true; // Do we want to remove auto-detected items? - } + DebuggerItem item = m_model->currentDebugger(); + + canCopy = item.isValid() && item.canClone(); + canDelete = !item.isAutoDetected(); + m_cloneButton->setEnabled(canCopy); m_delButton->setEnabled(canDelete); } |