summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/debuggeroptionspage.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2013-10-28 17:47:37 +0100
committerhjk <hjk121@nokiamail.com>2013-10-28 18:07:46 +0100
commitfd8f2c6cdb4ffa39da6ef89461260e3001f23ad9 (patch)
tree426ac749cfc5abe0cab7a381f27591b2c4e5ba87 /src/plugins/debugger/debuggeroptionspage.cpp
parentb17e8e3061aa449ae4cfd549228111c9c745b410 (diff)
downloadqt-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.cpp108
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);
}