Desktop: Make "Edit dive" menu entry work for downloaded dives

Confusingly, "Edit dive" did only work for planned / manually
entered dives. Change this, but only start profile-editing for
planned / manually entered dives.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-05-03 16:50:46 +02:00 committed by Dirk Hohndel
parent d2d2e3af3d
commit 9d342d0e1a

View file

@ -1096,25 +1096,7 @@ void MainWindow::on_actionAddDive_triggered()
void MainWindow::on_actionEditDive_triggered() void MainWindow::on_actionEditDive_triggered()
{ {
if (information()->isEditing() || DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING) { editCurrentDive();
QMessageBox::warning(this, tr("Warning"), tr("Please, first finish the current edition before trying to do another."));
return;
}
const bool isTripEdit = dive_list()->selectedTrips().count() >= 1;
if (!current_dive || isTripEdit || (current_dive->dc.model && strcmp(current_dive->dc.model, "manually added dive"))) {
QMessageBox::warning(this, tr("Warning"), tr("Trying to edit a dive that's not a manually added dive."));
return;
}
DivePlannerPointsModel::instance()->clear();
disableShortcuts();
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
graphics()->setAddState();
MapWidget::instance()->endGetDiveCoordinates();
setApplicationState("EditDive");
DivePlannerPointsModel::instance()->loadFromDive(current_dive);
information()->enableEdition(MainTab::MANUALLY_ADDED_DIVE);
} }
void MainWindow::on_actionRenumber_triggered() void MainWindow::on_actionRenumber_triggered()
@ -1881,6 +1863,9 @@ void MainWindow::on_actionImportDiveLog_triggered()
void MainWindow::editCurrentDive() void MainWindow::editCurrentDive()
{ {
if (!current_dive)
return;
if (information()->isEditing() || DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING) { if (information()->isEditing() || DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING) {
QMessageBox::warning(this, tr("Warning"), tr("Please, first finish the current edition before trying to do another.")); QMessageBox::warning(this, tr("Warning"), tr("Please, first finish the current edition before trying to do another."));
return; return;
@ -1889,19 +1874,21 @@ void MainWindow::editCurrentDive()
struct dive *d = current_dive; struct dive *d = current_dive;
QString defaultDC(d->dc.model); QString defaultDC(d->dc.model);
DivePlannerPointsModel::instance()->clear(); DivePlannerPointsModel::instance()->clear();
disableShortcuts();
if (defaultDC == "manually added dive") { if (defaultDC == "manually added dive") {
disableShortcuts();
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD); DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::ADD);
graphics()->setAddState(); graphics()->setAddState();
setApplicationState("EditDive"); setApplicationState("EditDive");
DivePlannerPointsModel::instance()->loadFromDive(d); DivePlannerPointsModel::instance()->loadFromDive(d);
information()->enableEdition(MainTab::MANUALLY_ADDED_DIVE); information()->enableEdition(MainTab::MANUALLY_ADDED_DIVE);
} else if (defaultDC == "planned dive") { } else if (defaultDC == "planned dive") {
disableShortcuts();
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN); DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN);
setApplicationState("EditPlannedDive"); setApplicationState("EditPlannedDive");
DivePlannerPointsModel::instance()->loadFromDive(d); DivePlannerPointsModel::instance()->loadFromDive(d);
information()->enableEdition(MainTab::MANUALLY_ADDED_DIVE); information()->enableEdition(MainTab::MANUALLY_ADDED_DIVE);
} else {
setApplicationState("EditDive");
information()->enableEdition();
} }
} }