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>
This commit is contained in:
Dirk Hohndel 2014-08-19 15:03:53 -05:00
parent 76f3c0f028
commit a85a219df3
4 changed files with 41 additions and 7 deletions

View file

@ -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();