aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2021-09-13mobile: remove clearGpsData interfaceGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-13mobile: remove getCurrentPosition interfaceGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-13mobile: remove GpsListModelGravatar Dirk Hohndel
This is only needed to show the list of GPS fixes obtained with the now removed location service. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-13mobile: remove GPS list UIGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-13mobile: remove current location checkbox from dive editGravatar Dirk Hohndel
Since we no longer access the device location, we can't do that any longer, either. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-13mobile: remove long disabled planner UIGravatar Dirk Hohndel
This was never functional. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-13mobile: remove GPS related item in main mobile UIGravatar Dirk Hohndel
Given the nonsense that Google and Apple makes us go through in order to support this feature, it's time to cut our losses and walk away. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-07Adding changelog entry for rich text supportGravatar Josh Torres
Signed-off-by: Josh Torres <torres.josh.j@gmail.com>
2021-09-07Support rich text on mobile notes fieldGravatar Josh Torres
When viewing dives on mobile the notes field does not support rich text. User formatting, output from the planning feature, etc will render html as plain text. Adding qml tag to support rich text Signed-off-by: Josh Torres <torres.josh.j@gmail.com>
2021-09-06Add changelog entryGravatar Josh Torres
Signed-off-by: Josh Torres <torres.josh.j@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-06core: fix off-by-one causing incorrect profile displayGravatar Josh Torres
In commit 4724c88 get_plot_details_new was updated to pass an index instead of the entry into plot_string. This means we are passing "i" to plot_string after the final increment of the for loop, instead of getting the entry[i] within the loop before the final increment. This means if we are mousing over the far right of the graph, where the time based break is not hit, we will end up passing an index equal to nr-2 instead of nr-3, which is intended to shave off the final two rows containing data not useful to the display. There are a handful of ways to fix this. This commit intends to be consistent with stylistic choices made elsewhere in the project. Signed-off-by: Josh Torres <torres.josh.j@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-03undo: renumber cylinders when deleting a cylinderGravatar Berthold Stoeger
Removal of a cylinder requires a renumbering of cylinders in the core data structures (samples, etc.). The renumbering was performed in the undo-action of cylinder removal, but not during actual cylinder removal. What a mess! Add the missing call. Attention: this makes the deletion of sensor-readings on cylinder-deletion non-undoable! Undo will have to be fixed in upcoming commits. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-09-03desktop: warn when deleting a cylinder with sensor readingsGravatar Berthold Stoeger
This makes the sensors pointless and in the future, they will be removed. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-09-03core: add a function to test for sensors of a given cylinderGravatar Berthold Stoeger
We want to prevent the user from accidentally deleting a cylinder with sensor readings. Therefore, we need such a function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-09-03parser: XML_PARSE_RECOVER to xmlReadMemory()Gravatar Berthold Stoeger
Due to changes in the handling of sensor-ids, invalid XMLs were generated. In particular, these contained duplicate attributes in the sample tags. Even though these files shouldn't exist, let's try to parse them anyway. Some data will be lost, but that's better than not opening the file. libxml2 can be told to try to recover from such petty(?) errors by passing the XML_PARSE_RECOVER flag. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-09-02mobile: update version to 3.3.1Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-09-02mobile: fix broken cylinder name tracking in dive editGravatar Dirk Hohndel
Prior to this change, we had two different cylinder lists as models for drop down boxes - one that prepends the "no default cylinder" entry (which we need for setting up no default cylinder to be used in the app), and another one that only includes actual cylinders. The problem occured if a dive is created before the first time we edit an existing dive: in this case we are applying indices across the two models, but the indices are of course off by one; this results in actually picking the wrong cylinder. So each time we try to edit a dive, we end up with the previous cylinder in the list. This commit simplifies the code by having only one place where we create list of cylinder names (which is then used as the model for the combo box). It also uses more logical names for the two 'flavors' of this list to make it clear which one is supposed to be used (the regular list when editing or adding dives, the one with the "no default cylinder" entry prependet for the Settings page). Reported-by: Brian Fransen Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-20update README and ReleaseNotes for 5.0.3v5.0.3Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-20Update list of supported dive computersGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-20Pull latest translations from transifexGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-20another libdivecomputer updateGravatar Dirk Hohndel
- add string serial numbers for Suunto Vyper and Mares IconHD type dive computers - add support for Cressi Neon Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-19update libdivecomputerGravatar Dirk Hohndel
Add support for new gas change data from EON Steel with FW 2.5 Fixes #3254 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-19Adopt tests to updated CNS and OTU calculationsGravatar Robert C. Helling
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-08-19Planner: Correctly compute CNS and OTU for bailout segmentsGravatar Robert C. Helling
For dives with mixed divemode, one needs to check sample.setpoint to figure out if the segment is an OC segment and the po2 needs to be computed from the gasmix and ambient pressure. This fixes #3310 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-08-18mobile: update version to 3.3.0Gravatar Dirk Hohndel
New minor numbers are always arbitrary... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18mobile: don't quit on back button in Statistics modeGravatar Dirk Hohndel
Fixes #3192 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18mobile: tweak line spacingGravatar Dirk Hohndel
When strings in dive details wrap, the line spacing is too tight in some circumstances. While not perfect, this change improves the situation somewhat. See #3263 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18mobile: add ability to edit tagsGravatar Dirk Hohndel
We already showed the tags, but we didn't allow the user to edit them. This tries hard not to create inconsistent or illogical tags by trimming white space and being careful with how the tags are added. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18mobile: make cloud timeouts more consistentGravatar Dirk Hohndel
In the mobile version we should always allow a little more wait time for the cloud server - there just seem to be more issues with response times on mobile devices, especially when in places with poor data reception (which isn't uncommon for dive sites). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18update Changelog and user manualGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18profile: use undo infrastructure for editing nicknamesGravatar Dirk Hohndel
This does the right thing even when removing a nickname by setting it to an empty string. The oddly named DiveListNotifier handles the need to redraw the profile when the name changes. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18undo/device: adjust device management infrastructureGravatar Dirk Hohndel
We no longer need the remove infrastructure, and the edit nickname function becomes much more intuitive to use by passing in the dive computer for which we want to create a nickname instead of the internal index into the array of devices. This also removes / simplifies the device list update signals in the DiveListNotifier. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18core: add get_or_add helper for dc tableGravatar Dirk Hohndel
This makes it much easier to manipulate dc nickname entries. In order for that to work we can't simply remove entries with empty nickname (but that isn't needed, anyway, as the code that saves XML or git already handles that case correctly). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18Don't share dive computer data allocationsGravatar Linus Torvalds
... it just causes problems later when we free them, since we don't do any reference counting. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-18WIP profile: add UI to edit dc nicknameGravatar Dirk Hohndel
This is just a quick first implementation - it will need to use the undo code in the future, but for now this is a reasonable first step. It's also missing the code to redraw the profile with the updated DC name. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-18Update the serial number and deviceid in sync when loadingGravatar Linus Torvalds
When we save the divecomputer data, we never actually save the serial value as a field. We used to rely on saving the very dodgy 'deviceid', and then look up the serial number from there. And that never really worked reliably, but we didn't really notice, because we never really _used_ the serial number anywhere. The only place the serial number is actually reliably displayed is in the "Extra data" tab, which contains the key value pairs, and that's where the original dive download code got the serial number from. So just parse that at load time too, the same way we parsed it at dive download time. In fact, do the firmware version the same way, and remove the code from the downloader, since it too can rely on 'add_extra_data()' just picking up the information directly. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-18Add (nonfunctional) dive computer rename hooksGravatar Linus Torvalds
This adds the menu item to rename a dive computer (ie create a nickname for it) when right-clicking on the dive computer name of a dive computer that has a serial number (indicated by having a non-zero ->deviceid). It is nonfunctional because it's really just the skeleton code: it needs the UI to actually ask for a new nickname, and then it needs to actually do the proper "create_device_node(model,serial,nickname)" to set it (or remove the nickname if empty). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-18Remove the divecomputermodel codeGravatar Linus Torvalds
This is no longer reachable, since the divecomputer tab is gone. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-18Remove the divecomputer naming tabGravatar Linus Torvalds
The TabDiveComputer model won't work in the new world order, where you can't even insert a new device entry without a nickname to be edited. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-18Clean up divecomputer 'device' handlingGravatar Linus Torvalds
We have this odd legacy notion of a divecomputer 'device', that was originally just basically the libdivecomputer 'EVENT_DEVINFO' report that was associated with each dive. So it had firmware version, deviceid, and serial number. It had also gotten extended to do 'nickname' handling, and it was all confusing, ugly and bad. It was particularly bad because it wasn't actually a 'per device' thing at all: due to the firmware field, a dive computer that got a firmware update forced a new 'device'. To make matters worse, the 'deviceid' was also almost random, because we've calculated it a couple of different ways, and libdivecomputer itself has changed how the legacy 32-bit 'serial number' is expressed. Finally, because of all these issues, we didn't even try to make the thing unique, so it really ended up being a random snapshot of the state of the dive computer at the time of a dive, and sometimes we'd pick one, and sometimes another, since they weren't really well-defined. So get rid of all this confusion. The new rules: - the actual random dive computer state at the time of a dive is kept in the dive data. So if you want to know the firmware version, it should be in the 'extra data' - the only serial number that matters is the string one in the extra data, because that's the one that actually matches what the dive computer reports, and isn't some random 32-bit integer with ambiguous formatting. - the 'device id' - the thing we match with (together with the model name, eg "Suunto EON Steel") is purely a hash of the real serial number. The device ID that libdivecomputer reports in EVENT_DEVINFO is ignored, as is the device ID we've saved in the XML or git files. If we have a serial number, the device ID will be uniquely associated with that serial number, and if we don't have one, the device ID will be zero (for 'match anything'). So now 'deviceid' is literally just a shorthand for the serial number string, and the two are joined at the hip. - the 'device' managament is _only_ used to track devices that have serial numbers _and_ nicknames. So no more different device structures just because one had a nickname and the other didn't etc. Without a serial number, the device is 'anonymous' and fundamentally cannot be distinguished from other devices of the same model, so a nickname is meaningless. And without a nickname, there is no point in creating a device data structure, since all the data is in the dive itself and the device structure wouldn't add any value.. These rules mean that we no longer have ambiguous 'device' structures, and we can never have duplicates that can confuse us. This does mean that you can't give a nickname to a device that cannot be uniquely identified with a serial number, but those are happily fairly rare (and mostly older ones). Dirk said he'd look at what it takes to give more dive computers proper serial numbers, and I already did it for the Garmin Descent family yesterday. (Honesty in advertizing: right now you can't add a nickname to a dive computer that doesn't already have one, because such a dive computer will not have a device structure. But that's a UI issue, and I'll sort that out separately) Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-08-16update libdivecomputerGravatar Dirk Hohndel
Garmin: add extra-info for serial number and firmware version Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-16desktop: avoid crash when changing dive logsGravatar Dirk Hohndel
If the last displayed dive had events, those DiveEventItems had slots connected that would update those icons if things changed. When closing the dive log and switching to a different one, those slots were still called and would then access freed memory (the event structure from that old dive that is long gone by then). This code explicitly deletes those DiveEventItems which also removes those signal slot connections. Fixes #3305 Sugested-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-15core: add downloaded GPS to existing dive siteGravatar Dirk Hohndel
If we download a first dive computer and add a dive site to the dive (by setting a location name for example), and then download from another dive computer that provides us with GPS data, we should keep the existing dive site information, but add the GPS data from the freshly downloaded dive computer. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-08-12desktop: fix crash when right-clicking of trip headersGravatar Berthold Stoeger
Commit e42fc1a1e9a13c77d3474dbcb26b68b8772b8c6d introduced a crash condition. Apparently the code attempts to test whether the clicked-on item is a top-level dive. The "Collapse others" menu item should not be shown in that case. It does this by testing "d->divetrip". However, "d" might quite logically be null if clicking on an unexpanded trip header. Therefore, check explicitly for the trip header case (which should show the menu item) and for good measure prevent the nullpointer access (that should be caught by testing for trip, but who knows). Fixes #3301. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-08-06export: clean up temp file after divelogs.de uploadGravatar Richard Fuchs
This adds a cleanup function to be called after a divelogs.de upload finishes (successful or not) to make sure the temporary zip file is closed and removed. Signed-off-by: Richard Fuchs <dfx@dfx.at>
2021-08-03export: use unique temporary file for divelogs.de uploadGravatar Richard Fuchs
On multi-user systems with a shared directory for temporary files, using a static file name can lead to permissions problems and subsequent errors due to collisions. Use a random unique file name for each generated file to avoid these problems. Note: the temporary file generated from the divelogs.de upload is still left behind after the upload finishes. Signed-off-by: Richard Fuchs <dfx@dfx.at>
2021-07-30cleanup: remove DiveCalculatedCeiling::profileWidgetGravatar Berthold Stoeger
The DiveCalculatedCeiling had a back-pointer to the profileWidget. This was used for weird control-flow shenanigans, which were removed in 975c123a30de95eafd9b3c2ce2a625a1d05a79dc. Remove this now useless member variable. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-30cleanup: unify the ProfileWidget2::shouldCalculateMax* variablesGravatar Berthold Stoeger
The shouldCalcluateMaxTime and shouldCalculateMaxDepth member variables of ProfileWidget2 are set to false during drag-mode to avoid strange shrinking of the graph. They always adopt the same value. Therefore, replace by a single shouldCalculateMax boolean. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-07-28mobile: update version to 3.2.1Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-07-28build-system: fail with Qt6Gravatar Dirk Hohndel
I thought that explicitly requesting Qt5 should be enough, but we have a report from a user who tried to build against Qt6 and cmake happily let them proceed. So let's fail this explicitly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>