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>
This commit is contained in:
Dirk Hohndel 2013-11-19 20:35:15 -08:00
parent 28ad26e878
commit 36cb50fb37
3 changed files with 9 additions and 2 deletions

View file

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

View file

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

View file

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