Fix the annoying tab order issue in the notes tab

This had been driving me crazy for a while, finally figured out how to fix
it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Use Planner dialog to add dive

Right now this is just calling the same code and setting a flag whether we
are planning or adding a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Rename createDecostops to drawProfile

After all, that's what the function does.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Only calculate deco stops in planner mode

In add dive mode simply bring the diver safely back to the surface
(currently with a fixed ascent rate of 30ft/min (or 9m/min)).

We should make that rate configurable (for the planner as well as the dive
add function). Also, the dive add function should offer to automatically
include a safety stop.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Don't show the planner widget when adding a dive

This looks like it might work, but since we keep recreating the dive, the
info entered in the info pane is actually lost. But it's a step in the
right direction.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix updateDiveInfo to clear coordinates when called with invalid dive

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Continous update of planner

Make the planner update its display continuously upon moving points
including deco. This appears fast enough on typical PCs. If this ends up
being to slow on some systems we may have to make it configurable.

[Dirk Hohndel: cleaned up the two patches and turned into one commit]

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix unbalanced braces issues in dive.h

The compiler doesn't warn about this, but this looks better.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fixes for gps coordinates handling.

Reset coordinates properly when clicking undo.

When auto-completing location, only copy coordinates if they have not
been manually edited.

Set the background to red if the gps coordinates won't change, e.g.
there is a parse error, the change is too small or only whitespace
changes.

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Identify below floor event type properly.

This event is on when accumulating deco time. Once you reach the floor
deco time will start decreasing and the event will stop. Going below the
floor again will re-activate the event.

Also identify event type 13 in DM4 imports as airtime.

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Hook up adding a dive

This gets things mostly right.

It creates a dive and uses the planner widget to create samples which are
copied into the dive. It fills in some reasonable defaults (DC model,
timestamp), but doesn't allow editing the timestamp (or the temperatures
and air pressure).

On accept the planner gets reset and the dive appears correctly in the
dive list.

Cancel still needs to be handled.

And I bet there are many subtle bugs lurking here and there. But it's a
start.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Hook up cancelling out of adding a dive

This was surprisingly easy - which of course has me worried that I'm
missing something that I should do when cancelling out of this dialog.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Merge branch 'addDive'

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Simplistic solution to add dive number to dive added

If this is the last dive and if the previous dive had a number, give this
dive the next number.

Of course there are a couple of issues with the current implementation. We
have no way of changing the date / time of the added dive, so we KNOW that
it will be the last one. But I put that check there so that once we add
the ability to change the date / time (and hopefully remember to then move
the dive to the correct spot in the dive_table), we only assign a number
if it is the last dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
When manually adding a dive, start with a simple dive

This is much friendlier than just showing an empty profile. I picked a
nice and simple three level dive. 25 minutes at 18m, 15 minutes at 9m, and
a safety stop.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
When adding a dive, make the final ascent slower

Simply trying to role-model safe behavior I guess. Fundamentally all this
should be configurable (so I added comments about that on the planner side
as well).

One of the interseting side effects of this implementation is that if the
user removes the safety stop and comes up directly from a deeper depth,
the slope of the ascent will change at 5m :-)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Adding a dive changes the dive list

Duh.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Allow editing of date & time and air & water temperatures

Add two more rows to the widget - this is getting quite busy.
There still is some weirdness where the focus isn't returned where it
should be and a few other details, but overall getting there.

Added helper functions to parse a temperature and to deal with the
timezone offset - with that latter one I also fixed the time offset bug in
the planner.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
In planner / add dive use 'ESC' to hide the gas selection popup

Not sure if there are other keys we should support.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Simplify the default dive profile given in add dive

Suggested-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>