aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-04-01QML UI: animate showing the dive edit sheetGravatar Dirk Hohndel
This requires a change to Kirigami so that a property change (instead of calling the open() function) can trigger the animation. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01QML UI: end editing mode when edit overlay is flicked offscreenGravatar Dirk Hohndel
Just changing the state isn't quite enough. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01QML UI: fix small bug in main menuGravatar Dirk Hohndel
One Action hadn't been converted to a Kirigami.Action. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01Merge branch 'mergeKirigamiPort'Gravatar Dirk Hohndel
2016-04-01Fix cylinder end pressure fixup from samplesGravatar Linus Torvalds
This bug admittedly hits almost nobody, but if you had multiple cylinder pressure sensors on the same cylinder (attached to multiple dive computers, of course), we would take the beginning pressure from the first dive computer, and the ending pressure from the last dive computer. That came about because we'd just walk all the dive computer samples in order, and the first time we see a relevant sample and we don't have a beginning pressure, we'd take that pressure. So the beginning pressure was from the first dive computer, and once we'd seen a valid beginning pressure, that would never change. But as we're walking along, we'd continue to update the ending pressure from the last relevant sample we see, which means that as we go on to look at the other dive computers, we'd continue to update the ending pressure with data from them. And mixing beginning/ending pressures from two different sensors just does not make sense. This changes the logic to be the same for beginning and ending pressures: we only update it once, with the first relevant sample we see. But we walk the samples twice: forwards from the beginning to find the first beginning pressure, and backwards from the end to find the ending pressure. That means that as we move on to the second dive computer, we've now filled in the ending pressure from the first one, and will no longer update it any more. NOTE! We don't stop scanning the samples (or the dive computers) just because we've found a valid pressure value. We'll always walk all the samples because there might be multiple different cylinders that get pressure data from different samples (and different dive computers). We could have some early-out logic when we've filled in all relevant cylinders, but since this just runs once per dive it's not worth it. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01Split up fixup_dive_dc() into multiple smaller independent functionsGravatar Linus Torvalds
fixup_dive_dc() is called for each dive computer when we add a new dive. It does various housekeeping functions, cleaning up the sample data, and fixing up dive details as a result of the sample data. The function has grown to be a monster over time, and particularly the central "walk every sample" loop has become an unreadable mess. And the thing is, this isn't even all that performance-critical: it's only done once per dive and dc, and there is no reason to have a single illegible and complex loop. So split up that loop into several smaller pieces that each will loop individually over the sample data, and do just one thing. So now we have separate functions for - fixing up the depth samples with interpolation - fixing up dive temperature data - correcting the cylinder pressure sensor index - cleaning up the actual sample pressures Yes, this way we walk the samples multiple times, but the end result is that the code is much easier to understand. There should be no actual behavioral differences from this cleanup, except for the fact that since the code is much more understandable, this cleanup also fixed a bug: In the temperature fixup, we would fix up the overall dive temperatures based on the dive computer temperatures. But we would then fix up the overall dive computer temperature based on the sample temperature *afterwards*, which wouldn't then be reflected in the overall dive temperatures. There was another non-symptomatic bug that became obvious when doing this cleanup: the code used to calculate a 'depthtime' over the dive that was never actually used. That's a historical artifact of old code that had become dead when the average depth calculations were moved to a function of their own earlier. This is preparatory for fixing the overall cylinder pressure stats, which are currently wrong for dives with multiple dive computers: we currently take the starting cylinder pressure from the *first* dive computer that has cylinder pressure information, but we take the ending cylinder pressure from the *last* dive computer with cylinder pressure information. This does not fix that bug, but without this cleanup fixing that would be a nightmare due to the previous complicated "do everything in one single loop" model. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01QML UI: avoid having the virtual keyboard show briefly at startupGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01Minor tweak to script to pull KirigamiGravatar Dirk Hohndel
This just allows the script to be used when you are working locally on Kirigami to test changes - no point in waiting for a pull from upstream then. The only goal is to copy the files over. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01QML UI: better visual arrangement of the dive listGravatar Dirk Hohndel
Make the lines that together form one dive move closer together so the dives visually stand out more. (this also includes small white space change, oops) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01QML UI: make the dive list font even darkerGravatar Dirk Hohndel
Still not black, though - there's an opacity setting somewhere that I must be missing. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01QML UI: use the new Kirigami option to control the title bar sizesGravatar Dirk Hohndel
I liked the default and the fact that it disappeared completely, but the big size was a bit too much... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01Disable kirigami plugin when copying the componentsGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-31Merge branch 'kirigamiPort' of https://github.com/sebasje/subsurface into ↵Gravatar Dirk Hohndel
mergeKirigamiPort This merge was a bit more challenging given how far things had diverged, but I hope I got it mostly right. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-31Update script to pull KirigamiGravatar Dirk Hohndel
Now with it's own repository and slightly different paths. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30QML UI: simplify the code to cancel edit / addGravatar Dirk Hohndel
This way we have one function that correctly ends both modes. As a positive side effect this fixes a bug where one could exit the add mode by tapping Dive list in the main menu which would not delete the partially created dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30QML UI: scroll to top of dive list when tapping title barGravatar Dirk Hohndel
This helps you get to the latest dive when you are stuck at the bottom of a dive list. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30QML UI: add property to reflect when dive list is shownGravatar Dirk Hohndel
This makes it easier to have actions that are only valid in this case. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30Revert "QML UI: make dive list fold dive trips"Gravatar Dirk Hohndel
This reverts commit 83c72e7a79458826b677e82f108f3e92022c58b6. The folding as implemented is too painfully slow and buggy on devices. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30Revert "QML UI: make dives outside of dive trips always visible"Gravatar Dirk Hohndel
This reverts commit a065b974723896df91a8da93803fbb47571201bf. The folding as implemented is too painfully slow and buggy on devices. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30Be smarter about dive renumbering when merging divesGravatar Linus Torvalds
We really have two different cases for merging dives: (a) downloading a new dive from a dive computer, and merging it with an existing dive that we had already created using a different dive computer. This is the "try_to_merge()" case, called from "process_dives() (b) merging two different dives into one longer dive. This is the "merge_two_dives()" case when you explicitly merge dives using the divelist. While a lot of the issues are the same, many details differ, and one of the details is how dive numbering should be handled. In particular, when you download from a dive computer and merge with an existing dive, you want too take the *maximum* dive number, because the dive computer notion of which dive it is may well not match what the user dive number is. On the other hand, when you explicitly merge in the dive list, you end up renumbering not just the dive you are merging, but also all subsequent dives, since you now have one fewer dives overall. So that case already has to be handled by the caller. Now, the simpler "download from dive computer" case was broken by commit ce3a78efcac2 ("Assign lower number to a merged dive instead of higher one"). It fixed the numbering for the divelist case, but broke the download case. So this commit reverts commit ce3a78efcac2, and instead extends and clarifies the dive renumbering that "merge_two_dives()" already did. It now explicitly renumbers not just the following dives, but also renumbers the merged dive itself, so now we can go back to the old "take the bigger dive number" for the core merging, which fixes the download case. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29QML UI: brute force password savingGravatar Dirk Hohndel
This is embarrassing. I should have done this in the first place instead of trying to hack around it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29QML UI: really force passwords to be savedGravatar Dirk Hohndel
The logic looked so easy, but the preference needs to be hard coded twice because there are two scenarios: - new install, make sure we load the password from settings (so it needs to be hard coded BEFORE we load preferences) - update where previously for some reason the user stored that they didn't want to store the password, so we need to also hard code it after the settings were loaded Looks odd, but that should do the trick. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29If the cache was valid, we don't want to reload just because of changesGravatar Dirk Hohndel
This was exactly backwards. If there already are changes we do NOT want to reload - that would overwrite those changes for no good reason; after all, the starting point was correct, so why throw the changes away? Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29QML UI: remove a few obsolete properties and referencesGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29QML UI: add SAC rate to dive detail viewGravatar Dirk Hohndel
Not sure why this wasn't there before, it's certainly one of the more interesting values for me. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29QML UI: make dives outside of dive trips always visibleGravatar Dirk Hohndel
Create small visible separation from the dive trip before. And make the dive trip header a slightly different color so they stand out between dives. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-29QML UI: make dive list fold dive tripsGravatar Dirk Hohndel
This makes it MUCH easier to deal with a lot of dives. Instead of needing a more complicated model we simply use the meta data that allows us to create the dive trip sections to hide (make invisible + height 0) all dives that aren't in the selected trip. I'll admit that this was much easier than I expected it to be. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-28Update mobile versionGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-28QML UI: take device pixel ratio into account when scaling pixmaps on iOSGravatar Dirk Hohndel
This way warning icons and tank change icons and other event markers are no longer ridiculously tiny on retina screens. Oddly this doesn't appear to be needed on Android, only on iOS. Fixes #1033 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-27QML UI: force local saving of passwordGravatar Dirk Hohndel
commit d99c9312195c ("QML UI: remove the checkbox for remembering the password") made the incorrect assumption that this would always be true by default when it actually was false by default. Oops. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-27QML UI: tighten credential input screenGravatar Dirk Hohndel
This way even on smaller screens both email and password should fit above the keyboard which makes data entry so much easier. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-26QML UI: add some diagnostics to App logGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-26QML UI: allow writing to App log from QMLGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-26QML UI: show keyboard when entering credential screenGravatar Dirk Hohndel
If the user goes to the credentials screen, they likely want to edit something. So put the focus on the first entry field and show the keyboard. We also need to hide the keyboard when the credential screen becomes invisble so that the keyboard doesn't stay around when the dive list is shown. Suggested-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-26Prevent unintentionally running as rootGravatar Robert C. Helling
Some users try to run Subsurface as root for example to get around permission problems with dive computer devices. This is a bad idea since config files get touched as root and then cannot be read as normal user anymore. This patch allows running as root only with verbose option on. We can assume if somebody manages to start subsurface as root this happens from the command line. For some reason, I couldn't get translation working at this stage. Windows version is a stub. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24QML UI: remove the checkbox for remembering the passwordGravatar Dirk Hohndel
In the context of the mobile app this simply makes no sense. If the user doesn't select this option, the app doesn't really work. So why have the option in the first place? Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24iOS build: fix typosGravatar Dirk Hohndel
Can't believe I didn't notice them earlier... I must have stared at these strings countless times. Reported-by: Scott Ireland <scott@sdj.ca> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24QML UI: add the position source reported to the logGravatar Dirk Hohndel
I've seen iPads without GPS report that they support satellite positioning. Seems like a Qt bug to me. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24Revert "iOS build: enable access to GPS location"Gravatar Dirk Hohndel
This reverts commit 78a8137963c848dc6ec6c8ff1b593902c5f8be64. These keys don't enable access, they require the device to have GPS support. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24QML UI: remove verbose option from Developer menuGravatar Dirk Hohndel
We now log everything that's relevant to the application log that is shown in the UI. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24Fix tests linkageGravatar Tomaz Canabrava
I wasn't linking the tests against the qrc library, which made trying to load the xslt transformation files for the parse test fail. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24QML UI: GPS location service - correctly calculate the deltaGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24QML UI: GPS location service - only show the fixes we storeGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24Read GPS location service thresholds from settingsGravatar Dirk Hohndel
We used to faithfully save them, but not restore them at start. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24QML UI: improve About screenGravatar Dirk Hohndel
This should actually give a correctly positioned logo. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24Give more information about the GPS location serviceGravatar Dirk Hohndel
On iOS it seems that I get a fix every second. Even though the QGeoPositionInfoSource is set up with an update interval of 5 minutes... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24iOS build: add another Info.plist key to enable positioningGravatar Dirk Hohndel
This key is needed so that the iOS app asks the user for permission to use the GPS position information. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-24iOS build: enable access to GPS locationGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-23iOS build: add missing iconGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-23QML UI: always convert the cloud user name to lower caseGravatar Dirk Hohndel
Mixed case user names cause the connection to the cloud storage to fail. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>