diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-11-19 20:35:15 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-19 20:35:15 -0800 |
commit | 36cb50fb37f8cede4f334b268406ebd55c12ece6 (patch) | |
tree | 475a1535d91cecce7158dce27d3166988fb6abc0 | |
parent | 28ad26e8787f966223e448aaf728918dff92149e (diff) | |
download | subsurface-36cb50fb37f8cede4f334b268406ebd55c12ece6.tar.gz |
Add gas change event from profile context menu
This allows to add missing gas change events to the currently shown dive
computer. Only gases defined in the Equipment section are offered.
Fixes: #250
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | planner.c | 2 | ||||
-rw-r--r-- | planner.h | 1 | ||||
-rw-r--r-- | qt-ui/profilegraphics.cpp | 8 |
3 files changed, 9 insertions, 2 deletions
@@ -76,7 +76,7 @@ static inline bool match_percent(int a, int b) return (a + 5) / 10 == (b + 5) / 10; } -static int get_gasidx(struct dive *dive, int o2, int he) +int get_gasidx(struct dive *dive, int o2, int he) { int gasidx = -1; @@ -12,6 +12,7 @@ extern timestamp_t current_time_notz(void); extern void show_planned_dive(char **error_string_p); extern void set_last_stop(bool last_stop_6m); extern void get_gas_from_events(struct divecomputer *dc, int time, int *o2, int *he); +extern int get_gasidx(struct dive *dive, int o2, int he); extern struct diveplan diveplan; extern struct dive *planned_dive; diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp index 06caa67be..e0e759dd4 100644 --- a/qt-ui/profilegraphics.cpp +++ b/qt-ui/profilegraphics.cpp @@ -26,6 +26,7 @@ #include "../profile.h" #include "../device.h" #include "../helpers.h" +#include "../planner.h" #include <libdivecomputer/parser.h> #include <libdivecomputer/version.h> @@ -167,7 +168,12 @@ void ProfileGraphicsView::changeGas() QPoint viewPos = mapFromGlobal(globalPos); QPointF scenePos = mapToScene(viewPos); QString gas = action->text(); - qDebug() << "Change Gas Event" << gas; + int o2, he; + validate_gas(gas.toUtf8().constData(), &o2, &he); + int seconds = scenePos.x() / gc.maxx * (gc.rightx - gc.leftx) + gc.leftx; + add_gas_switch_event(current_dive, current_dc, seconds, get_gasidx(current_dive, o2, he)); + mark_divelist_changed(TRUE); + plot(current_dive, TRUE); } void ProfileGraphicsView::hideEvents() |