aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2021-07-23core: recalculate CNS values on mergeGravatar Berthold Stoeger
When merging two dives, the higher CNS value was taken. This could result in inconsistent CNS values if two dives were merged where one dive's CNS was calculated from a "fake profile", i.e. a dive without dive-computer profile. In that case, the most conservative value (all time spent at the bottom) was assumed. The merged dive then consisted of the dive-computer profile and the conservative CNS estimate. This is fixed by setting the CNS value to "0" after merging, which means "unknown". The correct value will then be recalculated in "fixup_dive" from the actual sample data. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-23cleanup: don't NUL-terminate membuffer in uploadDiveLogsDEGravatar Berthold Stoeger
The data of the membuffer is passed as a data/length pair to xmlReadMemory(). There is no point in NUL-terminating it. Moreover, pass the data directly to xmlReadMemory() instead of via variables. These variables are reused later with a different meaning, making this super-confusing. The membuf variable is turned from "const char *" to "char *" to signal that we own the buffer. Amazingly, zip_source_buffer() frees the buffer, even though a "const void *" is passed in. This API is pure madness. Add a comment. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-23cleanup: replace membuffer by qasprintf_loc()Gravatar Berthold Stoeger
There is a function to format QString with C-format strings. Let's use it instead of doing a detour via membuffer. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-23cleanup: replace membuffer by membufferpp in C-codeGravatar Berthold Stoeger
Thus, the membuffer data is automatically freed when going out of scope - one thing less to worry about. This fixes one use-after-free bug in uploadDiveLogsDE.cpp and one extremely questionable practice in divetooltipitem.cpp: The membuffer was a shared instance across all instances of the DiveToolTipItem. Remves unnecessary #include directives in files that didn't even use membuffer. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-23core: C++-ify membufferGravatar Berthold Stoeger
C-style memory management is a pain and nearly nobody seems to get it right. Add a C++-version of membuffer that frees the buffer when it gets out-of-scope. Originally, I was thinking about conditionally adding a constructor/destructor pair when compiling with C++. But then decided to create a derived class membufferpp, because it would be extremely confusing to have behavioral change when changing a source from from C to C++ or vice-versa. Also add a comment about the dangers of returned pointer: They become dangling on changes to the membuffer. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-23core: use int16_t for sensor-idGravatar Berthold Stoeger
The sensor-id in the sample struct was a uint8_t, with all the known problems of unsigned integers. In the rest of the code cylinder ids are signed integers. To avoid confusion, make it a signed int. int8_t should be enough (max. 127 cylinders). To allow for degenerate cases, use an int16_t. 16k cylinders should be enough for everyone. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-23desktop: explicitly enable shortcutsGravatar Dirk Hohndel
The changes in commit 4daf687876 ("profile: remove [disable|enable]Shortcuts() signals") resulted in us no longer enabling the shortcuts on the desktop (at least on macOS where I debugged this). This placement of the call feels like a bit of overkill, but at least it shouldn't be wrong. Fixes #3293 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-20Update libdivecomputerGravatar Dirk Hohndel
- fix potential crash with Garmin Descent Mk2 - fix HW Sport and Mares Genius firmware update - Various parser updates: - sporasub depth, salinity and sample rate parsing - Atomics Cobalt atmospheric pressure parsing - unit cleanups (Uwatec, McLean Extreme) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-20core/ble: add auto detection for Aladin A2Gravatar Dirk Hohndel
This way it will be recognized as a dive computer when it is scanned via BLE. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-20cleanup: remove function static variablesGravatar Berthold Stoeger
There were two function-static variables in ToolTipItem::refresh(), which is a very scary proposition. Curently, there is only one ToolTipItem, but this may change on mobile, where there are multiple profiles at the same time. Remove this timebomb and make the two objects subobjects. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-19core: sanitize pressure-sensor cylinder ids in fixup_dive()Gravatar Berthold Stoeger
The code will happily perform out-of-bound accesses if pressure-sensors refer to non-existing cylinders. Therefore, sanitize these values in fixup_dive(), which is called everytime a dive is loaded or imported. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-19parser: don't create samples with invalid cylinder idsGravatar Berthold Stoeger
By default, the parser would create samples with cylinder ids 0 and 1. This creates out-of-bound accesses for the common one-cylinder (or even no-cylinder) dives. These were harmless when the cylinder-table was of a fixed size. Since changing to a dynamic cylinder-table, these became actual out-of-bound accesses. Don't create such samples in the parser. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-19core: add a special NO_SENSOR value for sample::sensorGravatar Berthold Stoeger
The sensor member of sample refers to a cylinder from which the pressure was read. However, some dives don't even have a cylinder. Therefore, introduce a special NO_SENSOR value for these dives. Since the cylinder is given as a uint8_t, 0xff seems to be a sensible choice. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-19Fix coverity reported memory leaksGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2021-07-18Export unused cylinders to divelogs.deGravatar Miika Turkia
When user has selected to show unused cylinders in equipment tab, respect this setting when exporting to divelogs.de. Fixes #3277 Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2021-07-11printing: remote incorrect scaling of event iconsGravatar Dirk Hohndel
It appears that this well intended change in commit 52aa7d83b6 ("Increase event icon size in print mode") actually causes the scaling of the event icons to be generally wrong. This removes the hard 4* scaling and also adds some debugging output in verbose mode. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-07cleanup: remove Printer::dpi member variableGravatar Berthold Stoeger
This variable is not used outside a single function, where it is reset every time the function runs. This can be realized by a function-local variable just as well. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-05snap: push regular updates of dependencies to stableGravatar Dirk Hohndel
We simply don't use release candidates in Subsurface these days, and no one then moves these builds to stable after testing, so stable has been getting stale while the builds that people SHOULD use have been sitting in candidate. Of course, this will only become the default after our next release (as I don't want four digit versions in a release build, so I can't simply add this to our snap-stable branch). Oh well - 5.0.3 will happen soon, given the print resolution issue for icons. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-04profile: scale dive event items according to font print scaleGravatar Berthold Stoeger
When printing with low DPI, the dive event items become comically large, because they are not resized like the fonts. Therefore, scale using the fontPrintScale. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-03Handle dives with no samplesGravatar Robert C. Helling
This occurs upon importing dives for example via CSV. Make sure the profile display is cleared when selecting such a dive rather than showing a different dive. Allow editing the profile for such a dive. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-07-03Update translation source stringsGravatar Dirk Hohndel
And update all the translated copyright notices. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-03profile: remove ProfileWidget2::ItemsGravatar Berthold Stoeger
This enum was an artifact from the primordial days of the profile widget. As far as I can see it was never used. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-03profile: rename ADD state to EDIT stateGravatar Berthold Stoeger
The ADD state is not used for adding dives since adding dives was made undoable. Therefore, rename it to EDIT state, since that is what it is used for. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-03cleanup: remove lost comment in profilewidget2.hGravatar Berthold Stoeger
Clearly, this comment got lost in code reshuffling, as it comments about ADD and PLAN mode, but is in front of picture declarations. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-03profile: remove EDIT_STATE from ProfileWidget2Gravatar Berthold Stoeger
This state is not used anywhere. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-03cleanup: update copyrightsGravatar Dirk Hohndel
That should have been done six months ago. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-03cleanup: remove long obsolete codeGravatar Dirk Hohndel
We have stopped playing with beta versions many many years ago. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-02Latest translations from Transifexv5.0.2Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-30Latest translations from TransifexGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-30update bundled mobile manual htmlGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-30mobile: update version to 3.2.1Gravatar Dirk Hohndel
I should do this right after pushing a release for mobile.
2021-06-30update README, ReleaseNotes, and supported dive computers for 5.0.2Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-29Latest translations from TransifexGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-29cleanup: remove unused item in ProfileWidget2's ItemPosGravatar Berthold Stoeger
This is most likely an artifact from a long time ago. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-28cleanup: remove dead code in ToolTipItem::refresh()Gravatar Berthold Stoeger
The code was downcasting the QGraphicsScene to ProfileWidget2, but then didn't use the result. *shrug* Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-27cleanup: factor out duplicate axis-initialization codeGravatar Berthold Stoeger
The axes of the profile are setup when switching into the "ProfileState" and also when the preferences are changed. The same code existed twice for both cases. Let's factor it out into a single function to avoid future divergence and confusion. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-07build-system: updates to processesGravatar Dirk Hohndel
This is mostly for my own use, but I think it makes sense to have it in the repo. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-07Update translation source stringsGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-05profile: remove internal event-copy (fix deleting/renaming events)Gravatar Berthold Stoeger
The DiveEventItem had an internal copy of the event. It passed that copy to the undo-machinery, which of course didn't work. Simply keep a pointer to the event. All changes to a dive no pass via the undo-machinery, which causes a reload of the profile, so this should be safe. Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-05profile: pass axes and model to DiveEventItem on constructionGravatar Berthold Stoeger
Firstly, there is no point in supporting DiveEventItems without model and axis. Secondly, this avoid pointless position- recalculations. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-05profile: pass event at construction time to DiveEventItemGravatar Berthold Stoeger
There is no point in having a dive event without an event. Let's pass the event at construction time to avoid having to handle "invalid" events. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-04desktop: add numerus translation for dive context menuGravatar Mark Stiebel
Add numerus translation lookup for the right-click context menu in the dive list to show proper singular/plural text. Fixes #3256 Signed-off-by: Mark Stiebel <mark@aretha.stiebel.me> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-04build-system: remove relative paths to iconsGravatar Dirk Hohndel
Asciidoc appears to insert './images' references when using the admonitionblock. Clean that up in the post processing of the user manual for HTML. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-04profile: remove unused function ProfileWidget2::getPrintMode()Gravatar Berthold Stoeger
The last user was removed in the previous commit. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-04profile: use printMode flag directly in DiveCartesianAxisGravatar Berthold Stoeger
The axis has a print-mode flag. There is no point in querying the widget. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-04profile: remove DiveCartesianAxis::maxChanged signalGravatar Berthold Stoeger
The last listener was removed in 0104b0a91588. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-03documentation: update the included html manualGravatar Dirk Hohndel
Forgot to do that when updating the user manual the last time. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-03cleanup: don't use colons in file namesGravatar Dirk Hohndel
While Subsurface doesn't build on Windows, we shouldn't prevent people from checking out the sources there... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-06-01documentation: update installation instructions for UbuntuGravatar Berthold Stoeger
Apparently, with Ubuntu 21.04 the qt5-default package doesn't exist anymore. Removing it from the list of installed packages makes things still work on a freshly installed system. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-06-01cleanup: strongly type DepthAxis::unitSystemGravatar Berthold Stoeger
This takes an enum of units::LENGTH, therefore declare it as such. Yes, this is kind of superfluous bike shedding, but since we have a strongly typed language, let's use it. On a side note, the enum should probably not be named with all-caps. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>