summaryrefslogtreecommitdiffstats
path: root/core
AgeCommit message (Collapse)Author
2016-09-25Clean up group handling in SettingsObjectWrapperGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-25Make sure we remember the dive computer vendor and modelGravatar Dirk Hohndel
Preferences work best if you not only write them, but read them again as well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-24Separate VPM-B conservatism preference for planner and profileGravatar Rick Walsh
Separate the VPM-B conservatism preference into diveplan.vpmb_conservatism for planning dives and prefs.vpmb_conservatism for profile ceiling display of saved dives. Signed-off-by: Rick Walsh <rickmwalsh@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-24Rename conservatism_level to vpmb_conservatismGravatar Rick Walsh
Make the variable purpose less ambiguous Signed-off-by: Rick Walsh <rickmwalsh@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-22Correctly pick up the UI language from settingsGravatar Dirk Hohndel
While Linux can set the locale from the language text, Windows needs the correct locale value (which makes more sense to use, anyway - that's why we save it). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-22Revert "Add a simple cp2130 libusb driver"Gravatar Dirk Hohndel
This reverts commit 93ef223a3131db838abc7c390ddce3fae8be5f7c.
2016-09-20Language preference: once we figure out the locale, remember itGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-20Don't look up the setting againGravatar Dirk Hohndel
This caused us to do the wrong thing if the setting wasn't set at all. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-20Preferences: remember both the locale name and the user friendly textGravatar Dirk Hohndel
Currently we are confused which it is we are looking at and so setting the language is broken. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-20Second attempt to fix crashGravatar Dirk Hohndel
Linus pointed out that it might be another call site (and looking at his proposed patch I noticed a logic error in my earlier attempt) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-20Prevent possible NULL pointer dereferenceGravatar Dirk Hohndel
Not sure if this will fix the crash for Henrik, but it's worth a try. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-18Fix compile error on WindowsGravatar Dirk Hohndel
We need to return a DC_STATUS here. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-18Add a simple cp2130 libusb driverGravatar Anton Lundin
This adds a simple cp2130 userspace driver. Its probably unusable in the real world but its a great base to build upon. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-18Fix warning about incompatible pointerGravatar Anton Lundin
The set_halfduplex function takes a unsigned int, not a int. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-17Rewrite libdivecomputer custom serial codeGravatar Anton Lundin
This rewrites the custom serial code to use the new api which I implemented in the Subsurface-branch of libdivecomputer. This is a bit to big patch but I haven't had the time to break it down into more sensible patches. This rewrite enables us to support more ftdi based divecomputer communication and is tested with both a OSTC3, OSTC2N and a Suunto Vyper, all over the libftdi driver. The bluetooth code paths are tested to, and should work as before. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-17QML UI: deal with multiple buddies correctlyGravatar Joakim Bygdell
When editing adive in Subsurface-mobile we can only handle one buddy due to the limitations of the combobox. To prevent loss of data when editing a dive with more than one buddy we display "Multiple Buddies" in the buddy field. This creates a special case where no changes are written to the buddy field unless the user changes buddy for that dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-17Compute total tissue saturation for all deco modelsGravatar Robert C. Helling
... and not just for Buehlmann. This makes the saturation graphs meaningful for VPM-B. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-17Cosmetic changes to Buehlmann codeGravatar Robert C. Helling
Change runtime table string from ZHL-16B to ZHL-16C to reflect he fact that we use 5min as half-time for the fastest compartment rather than 4min. Further more trade pow(2.0, ...) for exp(). Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-04Fix some warningsGravatar Dirk Hohndel
At least the warnings about size potentially being uninitialized seem correct and valid. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-04iOS build: Fix compile failureGravatar Dirk Hohndel
Without this moc_SubsurfaceObjectWrapper doesn't compile. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-04Stop trying to fix up pressure sensor indexesGravatar Linus Torvalds
This removes 'fixup_dc_cylinder_index()', which was added to fix up the pressure sensor indexes from the Atomic Cobalt dive computer. Even for the Cobalt it really shouldn't matter, because the libdivecomputer backend for the Cobalt actually tries to do the right thing. See for example commit 8853a1ccd422 ("Associate the pressure samples with the primary tank.") in libdivecomputer. Some historical digging shows that the subsurface sample pressure index code came in from commit e32ba4d6d811 ("Improve tank handling for Cobalt"), dated Tue Oct 28 13:48:15 2014. And the libdivecomputer "use the right cylinder" code was around the same time (Fri Oct 10 20:29:17 2014 +0200). So I suspect that subsurface needed the fixup based on an older version of libdivecomputer. Jef's patch is a couple of weeks before, but we may not have tracked libdivecomputer religiously. The reason to remove this code is because it can (and does) mess up the sensor index when it is actually reliable, like in the multi-sensor case of the Suunto EON Steel. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-04Remove hacks regarding multiple gasmixes and cylindersGravatar Joakim Bygdell
Enabling cylinder edit in Subsurface-mobile our previous hacks regarding multiple cylinders and gasmixes must be removed. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-04QML UI: Enable cylinder editGravatar Joakim Bygdell
This adds the option to select a cylinder when adding or editing a dive. Due to limited screen size we restrict the editing to the first cylinder only. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-09-04Settings fixup: gflow and gfhigh are intGravatar Rick Walsh
With the recent setting cleanup, gradient factors were set to bool, so were saved as 1/1, rather than say 50/80. This commit fixes that. Signed-off-by: Rick Walsh <rickmwalsh@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-29Teach 'interpolate()' about zero-sized rangesGravatar Linus Torvalds
No, they don't make sense. We should normally not have multiple samples that are on the same second. But they seem to happen on the EON Steel under some circumstances, and instead of dividing by zero when trying to interpolate across such a sample, do something sane. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-29Make sure DC_FIELD_TANK starts from a clean slate for each cylinderGravatar Linus Torvalds
We used to clear the 'dc_tank_t' for each dive, but then only clear the volume field in between each cylinder. That means that if the libdivecomputer back-end does not touch a field, it might contain the stale value from the previous tank information. I'm not sure this is actually much of an issue, since I'd expect back-ends do seem to initialize the fields fully (at least the EON Steel back-end does). But it's inconsistent. Also, the code was actually buggy because of the odd indentation: it would only ask for new tank information up to 'ntanks' tanks, but because of the final fixup that was done outside of the conditional, it would actually update the cylinder begin/end pressure data *beyond* 'ntanks', and just re-use the last libdivecomputer data for the rest of the cylinders. Again, in practice, that probably never really happened, but it is a real bug. The fixed-up code actually looks better too, imho, and is one line shorter because of the initialization now being done in one place rather than two. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-29Hacky workaround for multiple gas pressures per sampleGravatar Linus Torvalds
In subsurface, we only have one cylinder pressure per sample (well, technically two: we have a separate o2 pressure for rebreather diving). Which makes things "interesting" if the dive computer can actually have multiple pressure sensors, and can report them all concurrently. Like the Suunto EON Steel. We used to just take the last one (each sensor reading would just overwrite any previous ones), and this quick hack just changes the logic to prefer the "current" cylinder instead. It's wrong, and it's stupid, but it's the best we can do without major surgery. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-28Settings update: Fix git_local_only loadingGravatar Tomaz Canabrava
Thanks to the unittesting. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-28Settings update: Fix cloud_git_urlGravatar Tomaz Canabrava
I was freeing data segment, sigh. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-28Settings update: Fix loading "show pictures" in profile testsGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Fix missing groups and Language initializationGravatar Tomaz Canabrava
There's one function named uiLanguage() that should return the current uiLanguage() that subsurface is running, but it actually sets a whole lot of preferences, I think that the general idea of that function is okay, but it seems broken for me. still, I used it to load the correct language from the preferences since it's what this function is currently doing right now. Also, a lot of missing groups where added. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Only set if value changed + bugfixes.Gravatar Tomaz Canabrava
Only set the settings if it actually changes, when the user clicked on the save button on the preferences, the code would run in every dialog saving each preferences on disk, but this is uneeded if the value didn't changed. Also, while doing that, I found a couple of places where I used the wrong field, which are now fixed. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Fix broken UpdateManger logicGravatar Dirk Hohndel
In commit b76c1846bbfd ("Settings update: Simplify Update Manager") the logic for when to show the UpdateManger question to the user got broken. Unintuitively, a boolean setting actually has three possible values. True, False, and Unset. This patch fixes things to work as designed again. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Remember to load the "UpdateManager" settingsGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Move loadPreferences out of qt-helper.cppGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Move preferences sync / initializationGravatar Tomaz Canabrava
Move Preferences sync / initialization out of the planner widget prerferences to the ObjectWrapper. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Remove uneeded includesGravatar Tomaz Canabrava
and comment out questionable code. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Correct commentGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Remove unused include and add FIXME commentGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Add "Dive Computer" settings to SettingsObjectWrapperGravatar Tomaz Canabrava
For some reason, the dive computer settings weren't in the settings prefs. This moves it, makes the boilerplate on Settings ObjectWrapper and make things compile. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Add UpdateManagerSettings to SettingsObjectWrapperGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-27Settings update: Clean up save user id localGravatar Tomaz Canabrava
So, prefs.save_userid_local is being set outside of a preferences set (it's set to true and false while loading the files via xml or git) and because of that I had to bypass a few method calls. When something triggers a preferences change, the application will be notified that the preferences changed, thing that I couldn't do while reading the xml or git because that should be local-only. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-16Hide compile time warningGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-14Fill in divecomputer serial number and firmware version on loadingGravatar Linus Torvalds
We have the serial number and firmware version fields in "struct divecomputer", but we don't actually fill them in when loading the data from git or xml, because we save all that information in the separate device table instead. But in order to always have the serial number associated with a device, let's make sure to fill those fields in. It won't hurt, and this way we have the information available whether we just loaded the dive from a file, or imported it from the dive computer. One less semantic difference to worry about. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-14Fix cloud storage authentication attempt countingGravatar Linus Torvalds
The authentication count was a static counter in the authentication callback, which gets incremented until we consider the authentication to have failed. The problem with that is that it doesn't get incremented for just _one_ authentication operation, it gets incremented each time you try to load or save, so eventually the code considers authentication to have failed even if nothing ever went wrong. This fixes it by making it static to the whole git-access file, and have each operation clear it before starting a new remote access. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-10Add HP117 to the cylinder listGravatar Brian Weber
Reported-by: Brian Weber Signed-off-by: weber311@gmail.com Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-10Include full year for trip on divelistGravatar Miika Turkia
Having only the last 2 digits of the year is somewhat confusing as one can easily think that to be the day. Thus it is more clear to use full year for the trip header. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-10Replace the "stop" symbol in deco planGravatar Robert C. Helling
Windows Server 2008 seems to be missing the heavy dash in Courier New. This replaces the symbol by an ordinary dash. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-10Copy salinity and ambient pressure from diveplan to diveGravatar Robert C. Helling
... otherwise it does not get saved. Fixes #967 Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-08-10Unify handling of QDateTime time zone informationGravatar Robert C. Helling
Subsurface uses "local time" which in particular means we never display time zone information to the user. The user (and our file format) only sees times like 5pm or 17:00. A better name than local time (which could mean "local at the dive spot) would be "watch time", the time displayed by the diver's watch when she entered the water. Internally, we store times as time_t, seconds since Jan 1 1970 0:00 UTC. Our convention for conversion between 5pm and time_t as always been to treat 5pm as if it were UTC. Then confusion arose since Qt's QDateTime (which is tied to UI elements like QTimeEdit and similar) is time zone aware and by default assumes the system time zone. So when we set a QDateTime to 5pm and then later convert it to time_t we have to take care about the difference between UTC and the system time zone. This patch unifies our solution to this problem: With it, we set all QDateTime's time zone to UTC. This means we don't have to correct for a time zone anymore when converting to time_t (note, however, the signedness issue: Qt's idea of time_t is broken since it assumes it to be unsigned thus not allowing for dates before 1970. Better use the millisecont variants). We only need to be careful about time zones when using the current time. With this convention, when assigning the current time to a QDateTime, we need to shift for the time zone since its value in UTC should actually be the watch time of the user who is most likely used to the system time zone. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>