diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2014-08-19 15:03:53 -0500 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-08-19 21:17:52 -0500 |
commit | a85a219df3250e9a4c4336ea4b6f4a59f4ee9963 (patch) | |
tree | f3fb6dbf29a50db233489127b04e7eb6938e99ad /qt-ui | |
parent | 76f3c0f028b2eb83fb8cc01cd60488f79752b799 (diff) | |
download | subsurface-a85a219df3250e9a4c4336ea4b6f4a59f4ee9963.tar.gz |
Add ability to replan a dive that we planned before
When doing this, all waypoints of the calculated ascent are now waypoints
in the plan - so the user has to remove the ascent part of the dive in
order to really replan the dive. That's a pain, but we don't keep the data
around that would tell us which waypoints are user input and which ones
were calculated.
Fixes #527
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/diveplanner.cpp | 4 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 37 | ||||
-rw-r--r-- | qt-ui/mainwindow.h | 1 | ||||
-rw-r--r-- | qt-ui/mainwindow.ui | 6 |
4 files changed, 41 insertions, 7 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index b5fee2970..8775196b7 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -1155,7 +1155,9 @@ void DivePlannerPointsModel::createPlan() //TODO: C-based function here? plan(&diveplan, &cache, isPlanner(), true); - record_dive(clone_dive(&displayed_dive)); + if (!current_dive || displayed_dive.id != current_dive->id) + // we were planning a new dive, not re-planning an existing on + record_dive(clone_dive(&displayed_dive)); mark_divelist_changed(true); // Remove and clean the diveplan, so we don't delete diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 74015c73f..92cc67f8f 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -404,11 +404,13 @@ void MainWindow::planCanceled() void MainWindow::planCreated() { // get the new dive selected and assign a number if reasonable - dive_list()->unselectDives(); - select_dive(dive_table.nr - 1); - dive_list()->selectDive(selected_dive); - set_dive_nr_for_current_dive(); - + if (displayed_dive.id == 0) { + // we might have added a new dive (so displayed_dive was cleared out by clone_dive() + dive_list()->unselectDives(); + select_dive(dive_table.nr - 1); + dive_list()->selectDive(selected_dive); + set_dive_nr_for_current_dive(); + } showProfile(); refreshDisplay(); } @@ -448,9 +450,32 @@ void MainWindow::setupForAddAndPlan(const char *model) DivePlannerPointsModel::instance()->setupCylinders(); } +void MainWindow::on_actionReplanDive_triggered() +{ + if (!plannerStateClean()) + return; + if (!current_dive || strcmp(current_dive->dc.model, "planned dive")) { + qDebug() << current_dive->dc.model; + return; + } + ui.ListWidget->endSearch(); + // put us in PLAN mode + DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN); + + ui.newProfile->setPlanState(); + ui.infoPane->setCurrentIndex(PLANNERWIDGET); + DivePlannerPointsModel::instance()->loadFromDive(current_dive); + reset_cylinders(&displayed_dive, true); + ui.diveListPane->setCurrentIndex(1); // switch to the plan output + ui.globePane->setCurrentIndex(1); +#ifdef NO_MARBLE + ui.globePane->show(); +#endif +} + void MainWindow::on_actionDivePlanner_triggered() { - if(!plannerStateClean()) + if (!plannerStateClean()) return; ui.ListWidget->endSearch(); diff --git a/qt-ui/mainwindow.h b/qt-ui/mainwindow.h index 5ef5eed4a..1340d9076 100644 --- a/qt-ui/mainwindow.h +++ b/qt-ui/mainwindow.h @@ -118,6 +118,7 @@ slots: void on_actionAboutSubsurface_triggered(); void on_actionUserManual_triggered(); void on_actionDivePlanner_triggered(); + void on_actionReplanDive_triggered(); void on_action_Check_for_Updates_triggered(); void current_dive_changed(int divenr); diff --git a/qt-ui/mainwindow.ui b/qt-ui/mainwindow.ui index dca59e706..52314d596 100644 --- a/qt-ui/mainwindow.ui +++ b/qt-ui/mainwindow.ui @@ -722,6 +722,7 @@ p, li { white-space: pre-wrap; } </property> <addaction name="actionAddDive"/> <addaction name="actionDivePlanner"/> + <addaction name="actionReplanDive"/> <addaction name="copy"/> <addaction name="paste"/> <addaction name="separator"/> @@ -1074,6 +1075,11 @@ p, li { white-space: pre-wrap; } <string>Configure Dive Computer</string> </property> </action> + <action name="actionReplanDive"> + <property name="text"> + <string>Re-plan dive</string> + </property> + </action> </widget> <customwidgets> <customwidget> |