diff --git a/src/DownloadRideDialog.cpp b/src/DownloadRideDialog.cpp index 3e25355ef..babc9262d 100644 --- a/src/DownloadRideDialog.cpp +++ b/src/DownloadRideDialog.cpp @@ -49,15 +49,18 @@ DownloadRideDialog::DownloadRideDialog(MainWindow *mainWindow, } downloadButton = new QPushButton(tr("&Download"), this); + eraseRideButton = new QPushButton(tr("&Erase Ride(s)"), this); rescanButton = new QPushButton(tr("&Rescan"), this); cancelButton = new QPushButton(tr("&Cancel"), this); connect(downloadButton, SIGNAL(clicked()), this, SLOT(downloadClicked())); + connect(eraseRideButton, SIGNAL(clicked()), this, SLOT(eraseClicked())); connect(rescanButton, SIGNAL(clicked()), this, SLOT(scanCommPorts())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked())); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(downloadButton); + buttonLayout->addWidget(eraseRideButton); buttonLayout->addWidget(rescanButton); buttonLayout->addWidget(cancelButton); @@ -81,6 +84,7 @@ DownloadRideDialog::setReadyInstruct() "unit is plugged into the computer,\n" "then click \"Rescan\" to check again.")); downloadButton->setEnabled(false); + eraseRideButton->setEnabled(false); } else { Device &device = Device::device(deviceCombo->currentText()); @@ -90,6 +94,8 @@ DownloadRideDialog::setReadyInstruct() else label->setText(inst + ", \nthen click Download."); downloadButton->setEnabled(true); + if (deviceCombo->currentText() == "SRM") // only SRM supports erase ride for now + eraseRideButton->setEnabled(true); } } @@ -133,6 +139,7 @@ void DownloadRideDialog::downloadClicked() { downloadButton->setEnabled(false); + eraseRideButton->setEnabled(false); rescanButton->setEnabled(false); downloadInProgress = true; CommPortPtr dev; @@ -211,6 +218,27 @@ DownloadRideDialog::downloadClicked() accept(); } +void +DownloadRideDialog::eraseClicked() +{ + downloadButton->setEnabled(false); + eraseRideButton->setEnabled(false); + rescanButton->setEnabled(false); + downloadInProgress = true; + CommPortPtr dev; + for (int i = 0; i < devList.size(); ++i) { + if (devList[i]->name() == portCombo->currentText()) { + dev = devList[i]; + break; + } + } + assert(dev); + Device &device = Device::device(deviceCombo->currentText()); + device.cleanup(dev); + downloadInProgress = false; + accept(); +} + void DownloadRideDialog::cancelClicked() { diff --git a/src/DownloadRideDialog.h b/src/DownloadRideDialog.h index 235c8e122..3586b0113 100644 --- a/src/DownloadRideDialog.h +++ b/src/DownloadRideDialog.h @@ -36,6 +36,7 @@ class DownloadRideDialog : public QDialog private slots: void downloadClicked(); + void eraseClicked(); void cancelClicked(); void setReadyInstruct(); void scanCommPorts(); @@ -44,7 +45,7 @@ class DownloadRideDialog : public QDialog MainWindow *mainWindow; QDir home; - QPushButton *downloadButton, *rescanButton, *cancelButton; + QPushButton *downloadButton, *eraseRideButton, *rescanButton, *cancelButton; QComboBox *portCombo, *deviceCombo; QLabel *label; diff --git a/src/SrmDevice.cpp b/src/SrmDevice.cpp index 19623143c..70a889532 100644 --- a/src/SrmDevice.cpp +++ b/src/SrmDevice.cpp @@ -135,8 +135,8 @@ SrmDevice::cleanup(CommPortPtr dev) if (!dev2path(dev, path, err)) assert(false); if (QMessageBox::question(0, "Powercontrol", - "Erase downloaded ride from device memory?", - "&Erase", "&Save Only", "", 1, 1) == 0) { + "Erase ride from device memory?", + "&Erase", "&Cancel", "", 1, 1) == 0) { SrmpcConn srm(path); if(!srm.d || (srmpc_clear_chunks(srm.d) < 0)) { QMessageBox::warning(0, "Error",