summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2012-12-13Add the ability to set a nickname for a dive computerGravatar Dirk Hohndel
We maintain a list of dive computers that we know about (by deviceid) and their nicknames in our config. If the user downloads dive from a dive computer that we haven't seen before, we give them the option to set a nickname for that dive computer. That nickname is displayed in the profile (and stored in the XML file, assuming it is not the same as the model). This implementation attempts to make sure that it correctly deals with utf8 nicknames. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-12Change the empty product model to be index 0Gravatar Dirk Hohndel
A vendor of -1 indicates that we should have no product selection in the dive download dialog. Having the empty product model be the last made it hard to keep the correct index for that empty model around (and we got it wrong by default). With this change the product models are offset by one, so the unset vendor (-1) turns into index 0 which is where we now store the empty model. Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-12Ensure default dive computer strings can be freedGravatar Dirk Hohndel
We don't want to directly use the strings returned to us from libdivecomputer. Fixes bug 34 Reported-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Add crypto library to Windows installer fileGravatar Dirk Hohndel
This dependency was brought in by commit 3e51d56f87a3 "Improve on divecomputer data handling". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Only display a depth scale appropriate for the depth of the diveGravatar Dirk Hohndel
Showing the depth scale all the way to the bottom of the profile plot looks strange when there are partial pressure graphs down there. So instead we only plot down to the next marker below the maximum depth of the actual dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Show CNS value in the profile mouseoverGravatar Dirk Hohndel
If we have per-sample CNS values, then show them in the profile tooltip. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Correctly merge cns, ndl and deco informationGravatar Dirk Hohndel
I keep forgetting to do that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Fix minor indentation issueGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Merge branch 'cns' into cns-mergeGravatar Dirk Hohndel
I foolishly changed visible_columns in both the (ill-named) cns branch and master... Signed-off-by: Dirk Hohndel <dirk@hohndel.org> Conflicts: divelist.c gtk-gui.c profile.c
2012-12-11Update to the new deco / ndl code in libdivecomputerGravatar Dirk Hohndel
Early in the libdivecomputer 0.3 development cycle Jef and I implemented deco and ndl as events. That wasn't a wise design choice and we agreed to switch this to be instead new sample types which makes much more sense (and is much more aligned with the way we are handling them inside Subsurface). So this commit tracks the change in libdivecomputer. Since this happened during the development cycle there isn't a way to detect this at compile time - so you need to make sure you have a matching version of libdivecomputer when compiling Subsurface. To make this easier: this commit of Subsurface requires a libdivecomputer version that includes the libdivecomputer commit d5d44c1e0ffd "Convert decostop / ndl to samples". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-11Calculate dive maxima/minima independent of dive computerGravatar Linus Torvalds
This splits the dive time, depth, pressure and temperature maxima and minima setup from the per-dive-computer "create_plot_info()" function into one setup function that walks _all_ the dive computers, so that we have a global maxima and minima. That way the graph scaling we set up will now fit the data from all dive computers rather than just the particular one we are plotting. So if you switch back-and-forth between computers, the scale (which is defined by the extremes) remains the same. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Display maximum CNS in the divelistGravatar Dirk Hohndel
We either pick the CNS reported by the dive computer at the end of the dive, or the maximum of that and the CNS values in the samples, if any. As usual, this column in the dive list defaults to off and it is controlled by a setting in the tec page of the preferences. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Add the ability to edit the date/time of a diveGravatar Dirk Hohndel
This can cause some fun unintended side effects - especially when the dive is part of a trip and the new date/time moves this into a different trip. Instead, trips get split and the overall result is consistent, but a bit unexpected. But since this is designed to help people right after a dive import in case the clock on the dive computer was wrong, my guess is this won't ever be a problem for actual users. Fixes ticket 18 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Fix incorrect index for dive computer listGravatar Dirk Hohndel
I don't understand how this ever worked... Fixes ticket 32 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Don't draw tooltips if no profile is displayedGravatar Dirk Hohndel
This fixes ticket 33 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Apply preference changes right awayGravatar Dirk Hohndel
This allows you to open the preference dialog, play with settings and see their effect right away. Press OK and you keep them, press Cancel and you are back to the previous state. As it should be. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-10Move global variables covered by Preferences into one structureGravatar Dirk Hohndel
Now we can simply remember the state of all the preferences at the beginning of preferences_dialog() and restore them if the user presses 'Cancel'. Fixes #21 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Rename on_delete function in statistics.cGravatar Dirk Hohndel
We made the one in gtk-gui.c a global function and now had a clash with the static one in statistics.c Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Add tank data to the print.Gravatar Salvador Cuñat
Add info of the used tanks, which isn't displayed by the dive plot, with a new function. The relative width and height are fixed in print(), so the function needs: - Modify the font size depending on the number of tanks. - As it uses translations, return to the original coords when ends. Modify print() acordingly with the new function. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Separate show_dive_text() in two diferent functions.Gravatar Salvador Cuñat
Create a function show_dive_header() and show_dive_notes() as a first step to introduce other infos in diferent funcs. Modify print() acordingly to the new funcs. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Consistent Quit behavior on the MacGravatar Dirk Hohndel
We were responding to the wrong Quit signal on MacOS. The one we picked was the one that basically told us "it's too late to stop me, I'm quitting". I switched this to the one asking "should I prevent the app from quitting" and now we can indeed cancel the Quit, regardless which method was used to close the app. Also removes to unused variables. Fixes #22 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-09Don't print partial pressure values in the profileGravatar Dirk Hohndel
Instead provide a scale on the right in a highly transparent grey and rely on the tooltip available with mouse-over to pinpoint the value at certain spots with much better accuracy. Fixes #30 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Don't print an initial gaschange event that just tells us the gas usedGravatar Dirk Hohndel
Some dive computers appear to tell us the gas used in a gaschange event right at the beginning of the dive. We arbitrary have a cut-off that says "a gas change in the first 30 seconds shouldn't get a marker". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Correct partial pressure calculationsGravatar Dirk Hohndel
Regardless what the dive computer tells us, don't believe that pO2 was higher than the ambient pressure. This gives much more realistic values. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Correctly parse the two different gas change eventsGravatar Dirk Hohndel
This now takes the He percentage into account when matching tanks. Given the encoding of fO2 and fHe in the GASCHANGE2 event, we can simply mask and shift as if we have a GASCHANGE2 event and things will automatically work correctly for the regular GASCHANGE event. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Draw pO2 profile lastGravatar Dirk Hohndel
This way it sits on top of the other partial pressure plots and is a bit easier to read. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Make sure pO2 and cns are filled in all samplesGravatar Dirk Hohndel
This allows things to work for dive computers like the OSTC that give us setpoint information in the sample, but not constant pO2 readings. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Make changes to some of the preference immediately visibleGravatar Dirk Hohndel
This is just a small part of the solution to the bigger problem with the preferences. See ticket 21 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-08Show two decimal digits in pO2, pN2 and pHe in the tooltipGravatar Dirk Hohndel
Tec divers seem to like a little bit more precision - and the dive computers certainly provide it (or we can calculate it). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Plot pO2 graph based on sample information, if availableGravatar Dirk Hohndel
This should give closed circuit divers with a supported dive computer correct partial pressure plots. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Add CNS and pO2 tracking in the samplesGravatar Dirk Hohndel
This adds the new members to the sample structure and fills them from supported dive computers (Uemis SDA and OSTC / Shearwater Predator, assuming you have libdivecomputer 0.3). Save relvant values of this to the XML file and load it back. Handle the new fields when merging dives. At this stage we don't DO anything with this, all we do is extract them from the dive computer, save them to the XML file and load them back. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Initialize helper structure to 0sGravatar Dirk Hohndel
We check the pointers that are part of this structure for NULL before accessing them - but that means we need to zero out the structure for this to work. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Fix potential uninitialized readGravatar Dirk Hohndel
When analyzing the buffer that is handed to the first_object_id function we carefully check to make sure that we don't read past the end of the input buffer but there was still one code path that could have us do just that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Fix off by one errorGravatar Dirk Hohndel
We increment i twice - which causes us to access memory past the end of the allocated array. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Fix embarrassing cut and paste bugsGravatar Dirk Hohndel
The previous commit 871d7ae0cdf5 "Add option to make ceiling visually stand out more in the profile" contained not one but two stupid cut and paste bugs. I cannot begin to explain how this could have worked when I first tested it. Reported-by: Jan Schubert <Jan.Schubert@GMX.li> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Add option to make ceiling visually stand out more in the profileGravatar Dirk Hohndel
While having the background "come down" seemed like a good visualization of the ceiling, some divers appear to prefer something more dramatic. This adds an option to the Tec Settings to have the ceiling shown in red instead of the default background color. Suggested-by: Jan Schubert <Jan.Schubert@GMX.li> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Move partial pressure plots up slightlyGravatar Dirk Hohndel
This way they don't clash with the dive computer model information that was added by commit a23ec27ca7bb "Add dive computer name to the dive plot". Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Move 'plot_info' into 'struct graphics_context'Gravatar Linus Torvalds
.. and then allocate just the plot-info entry array dynamically. We want to have a longer lifetime for the basic plot_info data structure, because we want to do computer selection and maximum time/depth/temperature computations *before* we start plotting anything, and before we allocate the plot entry array. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Add dive computer name to the dive plotGravatar Linus Torvalds
I want to have some way to show multiple dive computers, so start off by adding the name of the current one. So if we change dive computers, we'll see it. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Tune the dive joining surface event insert codeGravatar Linus Torvalds
From 178a3f0d6d5112f76943fec5f8c1c1f3b173a7f4 Mon Sep 17 00:00:00 2001 From: Linus Torvalds <torvalds@linux-foundation.org> Date: Fri, 7 Dec 2012 09:34:18 -0800 Subject: [PATCH 2/2] Tune the dive joining surface event insert code So this makes us do surface events only if the samples are more than one minute apart, and are shallow enough (randomly selected at 5m). We can add more heuristics. Maybe we should compare the 1-minute sample time limit of the previous sample to the time to the sample before that: if some computer (or manually entered dive) has a long time between *all* samples, we'd make the cut-off time longer. Baby steps. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07When merging downloaded dives, strive to keep old dive in 'a'Gravatar Linus Torvalds
This doesn't really change the logic of the merging, but it does mean that the end result tends to be less unexpected: when downloading dives that end up being merged with pre-existing dives (because you have multiple dive computers, for example), the newly downloaded dive data will tend to be appended to the old dive data, rather than showing up first. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-07Sort the divecomputers alphabetically and have fixed width dropdownGravatar Dirk Hohndel
Instead of just taking the vendors and products for the supported divecomputers in the order libdivecomputer provides them to us we sort them as we add them to our list of lists. While doing this we also track the longest product name and try to make sure that the combobox for the product is set to a fixed width that's wider then the longest product name. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-06Add two test dives that triggered the bug fixed in the previous commitGravatar Dirk Hohndel
Loading these two XML files created a divelist with two trips that each started at the same time but that were NOT linked together (because the code in insert_trip detected that they started at the same time). Since the trips were not linked together, trying to then merge those two trips from the UI got us into an infinite loop, trying to move a dive from one trip into the same trip (as the code couldn't find the trip that wasn't linked into the dive_trip_list). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-06Fix insert_trip to correctly deal with trips that start at the same timeGravatar Dirk Hohndel
The existing code did not move the dives that are part of the second trip to the first trip (and forgot to keep the 'better' notes as well). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-06Fix SIGSEGV when joining dives without dive computer informationGravatar Linus Torvalds
Handle the case where we have no divecomputer information. Reported-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-05Prevent crash when no default device is setGravatar Dirk Hohndel
We were dereferencing the default device, even if not set. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-05Split dive computer selection into seperate vendor and product combo boxesGravatar Dirk Hohndel
The length of that combo box got increasingly insane as libdivecomputer supported more and more models. To make this more scalable we now have two combo boxes. One with just the vendors and a second one with the products depending on the vendor selected. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-05Fix deco/ndl support for libdivecomputerGravatar Dirk Hohndel
Several blatant mistakes prevented this from ever working. Now we correctly record ndl / stoptime / stopdepth in every sample and no longer issue bogus events. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-05Fix retrieval of object_id value in Uemis downloaderGravatar Dirk Hohndel
The existing code could read past the end of the buffer that was handed to it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2012-12-05Improve reading of extra dive data for UemisGravatar Dirk Hohndel
When starting from the first dive on the dive computer we called getDive for every dive starting with id 0 instead of figuring out which id is actually the first one that we downloaded. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>