Commit graph

7690 commits

Author SHA1 Message Date
Dirk Hohndel
d97c49ba39 When copying dives, make copies of samples/events in first DC
We carefully copied the dive computers and their samples and events, but
only for the second and later DCs. For the first DC we simply copied the
pointers but not what they were pointing at. So when the copied dive was
freed, those pointers in the original went to freed memory.

Not good.

Fixes #599

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-06 11:23:25 -07:00
Miika Turkia
0c24d7d6bd Show the gas mixing information only when needed
Recreational divers, especially ones diving with air, do not need to be
shown that their gas can be mixed with 0 liters of O2 and He. And
similarly Nitrox diver does not need to know about 0 liters of He.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-05 22:55:52 -07:00
Dirk Hohndel
9d97426e8e Planner: reset deco gas used member
Otherwise every recalculation will continue to incorrectly increase the
deco gas used value.

Fixes #598

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-05 07:49:06 -07:00
Robert C. Helling
b0da8c2707 When adding a waypoint, use the gasmix of the _next_ waypoint.
This corrects the logic of adding a waypoint actually meaning that
a previous segment is subdivided into two. Both new segments should
by default use the gas of the old one. Since the gas is stored
in the waypoint (divedatapoint) at the end, we need to use the _next_
gas.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-05 07:43:41 -07:00
Robert C. Helling
79cd5ce835 Remove gasmix_is_null
The semantic of fo2==fhe==0 to mean "same gasmix as before" apparently
is not used anywhere and gets in the way of the semantic "this is air".

If there is really need for mix meaning "same as before", please use another
value, e.g. one with a specific negative percentage.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-05 07:43:10 -07:00
Dirk Hohndel
aafd918169 Add dive: don't throw away the pressure data entered
Previously we were trying to get rid of the tracked gas pressures that
were added when using the plan infrastructure to create a dive. Now that
this isn't the case anymore we can stop doing that which magically makes
setting start and end pressure while adding a dive work as expected.

Fixes #582
Fixes #553

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 11:48:02 -07:00
Dirk Hohndel
cc86d68c86 Planner: don't set cylinder start and end pressure when adding dive
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 11:40:02 -07:00
Dirk Hohndel
d4e3745370 Planner: only track gas when planning a dive
When adding a dive we don't have SAC data so we should simply have the
user manually enter their gas consumption. That still doesn't work, but
this is one required step to get it to work.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 11:26:31 -07:00
Dirk Hohndel
75c9bcd726 Don't add a close button to KMessageWidget
Commit 77a55db9d3 ("Use QDialogButtonBox in KMessageWidget") added a
close button to all our uses of that widget.

As much as I stare at the code I can't figure out why. For now I'll simply
brute-force disable them...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 07:46:35 -07:00
Anton Lundin
77a55db9d3 Use QDialogButtonBox in KMessageWidget
QDialogButtonBox can auto-choose the order of the actions based on the
current interfaces guidelines, but in this case its a guessing game.

It does a half-decent job off guessing.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 07:33:08 -07:00
Anton Lundin
c16d4ca5d5 Make planner buttons consistent with Maintab
Move the Save/Abort buttons in the planner to the top left and change
them to Save/Cancel to be consistent with where our Save/Cancel
buttons are in the Maintab.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 07:28:41 -07:00
Dirk Hohndel
3c4439ee27 UI restructure: simplify setup of add and plan mode
Recreate the helper function (which now does something fairly different)
to share the common code between the two modes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 07:24:52 -07:00
Dirk Hohndel
0cfea5205d UI restructure: correctly setup planning
I had tested this mostly with add dive and completely forgot to track the
same changes in the planning routine. Oops.

This allowed to get rid of a no longer useful helper as well.

Fixes #594

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:53:33 -07:00
Dirk Hohndel
9b4bd80e84 UI restructure
Don't clear out the model after we already set up the cylinders.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:52:50 -07:00
Dirk Hohndel
c728b4b7bb Remove unused label
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:39:38 -07:00
Gehad elrobey
89f86a5745 HTML: depth value must be positive
Remove negative sign from the inverted y-axis

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:36:24 -07:00
Gehad elrobey
f46463ac53 Clean list_lib and remove unused code from canvas profile.
Comment some functions.
remove leftover code from list_lib.
Some code organization.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:35:43 -07:00
Gehad elrobey
db1f6092bf HTML: add temperature curve to profile.
Add temperature curve to profile view, The curve is tracable by mouse.
The temperature has a hidden axis that doesn't appear in the detailed
view.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:35:38 -07:00
Gehad elrobey
8ad6c61891 HTML: dive numbering starts from one instead of zero
since the practise is that the first dive is number 1.
so change the first dive number to 1 instead of 0.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:35:33 -07:00
Gehad elrobey
11d2364c12 HTML: add events to detailed profile view
Export events to detailed dive view and add events to the profile.
Events names must appear on mouse hover.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:35:18 -07:00
Miika Turkia
f7f8c0b1b2 Typo fixes on User Manual
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:35:15 -07:00
Miika Turkia
29f19c37b0 Minor edits on HTML export (User Manual)
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:35:11 -07:00
Gehad elrobey
8baa228b12 User manual: HTML export update
This patch updated the export section in the user manual.

Some changes to the description of the HTML export options.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:34:55 -07:00
Anton Lundin
9c6513b11d Clear out old events in create_dive_from_plan
Previous code where accumulating events from each iteration of the
planning. This code clears the old ones before adding new ones.

Fixes #595

[Dirk Hohndel: removed printf, updated comment, slightly moved the code,
               added parenthesis to silence warning]

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-04 06:28:21 -07:00
Dirk Hohndel
5f76185d37 Planner: initialize drop_stone_mode as false
Otherwise it could be used uninitialized when adding dives.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 21:37:47 -07:00
Dirk Hohndel
5fca5f421d UI restructure: when adding a dive via displayed_dive it needs valid id
Otherwise we have one (or - yikes - more) dives with id 0.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 21:33:44 -07:00
Dirk Hohndel
947d7b77df Don't crash if get_divenr is called with NULL argument
We shouldn't be doing that, but still, let's not crash.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 21:18:40 -07:00
Dirk Hohndel
da911993f1 Small cleanups
Add commented out options to subsurface.pro that enable debuging the planner.
Remove obsolete comment.
Clean up the selection tracking.
Force the re-sort of the divelist inside the reload instead of explicitly
calling it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 21:05:08 -07:00
Dirk Hohndel
5fb947681e Remove non-existant variable from debug statement
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 21:02:39 -07:00
Gaetan Bisson
6a57ce5c6b Autofill GPS coordinates for added dives.
Prior to commit 95cb4e, when a new dive was added with the same location
name as a previous dive, the GPS coordinates for that new dive would be
automatically set to that of the matching previous dive.

This restores this feature, by duplicating code further down
qt-ui/maintab.cpp that handles the case where multiple dives are
modified at once.

Signed-off-by: Gaetan Bisson <bisson@archlinux.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 17:59:09 -07:00
Dirk Hohndel
bb176e822a UI restructure: add back the missing plan dive notes
This was removed in the big rewrite by mistake.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 16:41:15 -07:00
Robert C. Helling
5db706d291 Planner: Add backgas breaks
If the corresponding checkbox is checked the planner does interrupt
pure O2 deco after 12min for 6min on cylinder 0.

To make this work for air I removed the gasmix_is_null logic.

I guess that makes the planner feature complete for the next release.

[Dirk Hohndel: trivial merge into latest master]

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 16:33:19 -07:00
Dirk Hohndel
611bae3441 UI restructure: use displayed_dive for add dive and plan dive
This gets rid of the stagingDive and stops the constant adding and
removing of dives from the divelist (that was an INSANE design,
seriously).

When adding or planning a dive all work is now done in the dedicated
displayed_dive.

Add dive mostly works - when the user clicks save the dive is added to the
dive list and selected.

Plan dive is mostly untested. It passed trivial "start planner, save"
testing so it's not entirely broken, but I'm sure there's more work to be
done there.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 14:45:01 -07:00
Dirk Hohndel
d8c3113584 UI restructure: don't use random dives from the divelist for data
Everything should come from the displayed_dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 14:43:32 -07:00
Dirk Hohndel
117b212cdd UI restructure: make planner act on displayed_dive
Instead of constantly creating and deleting dives and messing with the
dive list.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 13:39:06 -07:00
Dirk Hohndel
47f9f59c1a UI restructure: add clone_dive helper
This is kind of the inverse to copy_dive(). Instead of duplicating all the
data that the dive points to, it moves it to a new struct dive and zeroes
out the old one so there are no two sets of pointers to these data.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 13:34:27 -07:00
Dirk Hohndel
6b1b2bc919 UI restructure: get rid of "current" pointer in cylinders and weights
Instead always display the display_dive.

Now the only thing left to slay is the stagingDive...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
a86aca0378 UI restructure: only switch to edit mode if user made change
With this patch a simple click into the main tab does not start editing
mode. Only once a value is modified do we show the message box and disable
the other widgets.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
66870add77 UI restructure: track if any data was modified
Instead of comparing the dive structures (which doesn't work since the
strings are actually copies), track if the user made changes.

Cylinders and weights still need to be compared as they are handled in
different widgets.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
20d9fafd7c UI restructure: improve memory handling in maintab
Free strings before overwriting them. Use copy_dive() instead of just
copying the dive structure.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
2cfe97e4dd Add a "smart strdup" helper named copy_string()
If the string is non-NULL, copy it, otherwise return NULL.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
56501dda1e UI restructure: updateDiveInfo displays displayed_dive
Instead of passing in a divenr of -1 to make it clear things this changes
things to use an options "clear" flag.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
ce47683de8 UI restructure: always display pictures for displayed dive
The only time this is ever wrong is in print mode, so let's never show
pictures in print mode.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
635a7ab771 UI restructure: updateDiveInfo shows the selected dive by default
So don't be redundant.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:55 -07:00
Dirk Hohndel
2a55e55868 UI restructure: plotDive: plot current dive by default & use displayed_dive
No longer use the dive structure that is passed in but instead always use
the displayed_dive to display things.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:54 -07:00
Dirk Hohndel
cd65c8512d UI restructure: add helper function to copy and clear a dive
This way we can safely copy around dives (specifically, copy the dive to
be displayed / edited into the displayed_dive).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03 09:37:43 -07:00
Dirk Hohndel
b298306eb1 UI restructure: fix get_divenr to do the right thing on a copy of a dive
We should not care if the dive has the same address in memory. We care if
it is the same dive (by using the unique ID).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-02 12:50:00 -07:00
Dirk Hohndel
91086d08ad UI restructure: plotDive should just take one dive
We don't have a concept of what to do when plotting multiple dives, so
let's not pretend and remove all the messing around with lists.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-02 12:03:40 -07:00
Dirk Hohndel
a221a6e9f5 UI restructure: use a global variable to hold the dive we show / edit
There is massive confusion about what we display when and where and which
dive structure (or pointer to a dive structure) contains which information
at which stage. This is the first step towards restructuring all of this.

This creates a global variable displayed_dive which at any point in time
should be what is displayed on screen (both in the profile and in the
maintab). It removes the editedDive concept from MainTab.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-02 11:56:36 -07:00
Gehad Elrobey
d568f96d05 HTML: use Right/Left arrows to switch between dives
Use arrows to switch between dives in dive detailed view.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-01 19:41:11 -07:00