summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-19 15:03:53 -0500
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-19 21:17:52 -0500
commita85a219df3250e9a4c4336ea4b6f4a59f4ee9963 (patch)
treef3fb6dbf29a50db233489127b04e7eb6938e99ad /qt-ui
parent76f3c0f028b2eb83fb8cc01cd60488f79752b799 (diff)
downloadsubsurface-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.cpp4
-rw-r--r--qt-ui/mainwindow.cpp37
-rw-r--r--qt-ui/mainwindow.h1
-rw-r--r--qt-ui/mainwindow.ui6
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>