summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Anton Lundin <glance@acc.umu.se>2013-05-02 20:35:21 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-05-03 11:43:50 -0700
commit935af9e8af58a58e3ae61731d1de452d67e82a49 (patch)
treefa76233755784634e740924295bf1ca8f5cbad55
parent587856d786c78dee13074e9774cb37cca2694a47 (diff)
downloadsubsurface-935af9e8af58a58e3ae61731d1de452d67e82a49.tar.gz
planning: Add option to have last stop at 6m/20ft
When diving in areas where there are risk of boats passing above you, its common practise to do the last stop at 6m to better stay out of harms way. When doing o2-deco, it doesn't matter for the deco time if you are doing all the time at 6m, due to that you don't have any inert gas in your breathing gas. This code is a reintroduction of 0b8462bd lost somehow between a70a8898..8fae0031 Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--planner-gtk.c21
-rw-r--r--planner.c8
-rw-r--r--planner.h1
3 files changed, 30 insertions, 0 deletions
diff --git a/planner-gtk.c b/planner-gtk.c
index 1b99fb391..d5fddec46 100644
--- a/planner-gtk.c
+++ b/planner-gtk.c
@@ -253,6 +253,16 @@ static gboolean gf_focus_out_cb(GtkWidget *entry, GdkEvent * event, gpointer dat
return FALSE;
}
+static gboolean last_stop_toggled_cb(GtkWidget *entry, GdkEvent * event, gpointer data)
+{
+ char *error_string = NULL;
+ set_last_stop(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(entry)));
+ show_planned_dive(&error_string);
+ if (error_string)
+ show_error(error_string);
+ return FALSE;
+}
+
static GtkWidget *add_gas_combobox_to_box(GtkWidget *box, const char *label, int idx)
{
GtkWidget *frame, *combo;
@@ -382,6 +392,17 @@ void input_plan()
add_entry_with_callback(hbox, 12, _("Dive starts when?"), "+60:00", starttime_focus_out_cb, NULL);
add_entry_with_callback(hbox, 12, _("Surface Pressure (mbar)"), SURFACE_PRESSURE_STRING, surfpres_focus_out_cb, NULL);
+ if (get_units()->length == METERS)
+ labeltext = _("Last stop at 6 Meters");
+ else
+ labeltext = _("Last stop at 20 Feet");
+
+ set_last_stop(FALSE);
+ content = gtk_check_button_new_with_label(labeltext);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(content), 0);
+ gtk_box_pack_start(GTK_BOX(hbox), content, FALSE, FALSE, 6);
+ g_signal_connect(G_OBJECT(content), "toggled", G_CALLBACK(last_stop_toggled_cb), NULL);
+
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
if (get_units()->volume == CUFT) {
diff --git a/planner.c b/planner.c
index 676afd45c..71273b3a1 100644
--- a/planner.c
+++ b/planner.c
@@ -47,6 +47,14 @@ void dump_plan(struct diveplan *diveplan)
}
#endif
+void set_last_stop(gboolean last_stop_6m)
+{
+ if (last_stop_6m == TRUE)
+ decostoplevels[1] = 6000;
+ else
+ decostoplevels[1] = 3000;
+}
+
void get_gas_from_events(struct divecomputer *dc, int time, int *o2, int *he)
{
struct event *event = dc->events;
diff --git a/planner.h b/planner.h
index 099f640fc..4de3c4669 100644
--- a/planner.h
+++ b/planner.h
@@ -11,6 +11,7 @@ extern timestamp_t current_time_notz(void);
extern void show_planned_dive(char **error_string_p);
extern int add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel);
extern void add_po2_to_nth_dp(struct diveplan *diveplan, int idx, int po2);
+extern void set_last_stop(gboolean last_stop_6m);
extern struct diveplan diveplan;
extern struct dive *planned_dive;