Commit graph

13769 commits

Author SHA1 Message Date
Dirk Hohndel
0aa87687a8 Update libdivecomputer submodule
This is the flag-day update that goes along with the last three patches.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-24 17:55:29 -07:00
Linus Torvalds
c60d2ec3e3 use libdivecomputer 'fingerprint' to avoid downloading extra data
This opportunistically uses a cache of 'fingerprints' for already
downloaded dives.

As we download data from a dive computer, we save the fingerprint and
dive ID of the most recent dive in a per-divecopmputer fingerprint cache
file.

The next time we download from that dive computer, we will load the
cache file for that dive computer if it exists, verify that we still
have the dive that is referenced in that cachefile, and if so use the
fingerprint to let libdivecomputer potentially stop downloading dives
early.

This doesn't much matter for most dive computers, but some (like the
Scubapro G2) are not able to download one dive at a time, and need the
fingerprint to avoid doing a full dump.  That is particularly noticeable
over bluetooth, where a full dump can be very slow.

NOTE! The fingerprint cache is a separate entity from the dive log
itself.  Unlike the dive log, it doesn't synchronize over the cloud, so
if you download using different clients (say, your phone and your
laptop), the fingerprint cache entries are per device.

So you may still end up downloading dives you already have, because the
fingerprint code basically only works to avoid duplicate downloads on
the same installation.

Also, note that we only have a cache of one single entry per dive
computer and downloader, so if you download dives and then don't save
the end result, the fingerprint will now point to a dive that you don't
actually have in your dive list.  As a result, next time you download,
the fingerprint won't match any existing dive, and we'll resort to the
old non-optimized behavior.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-24 17:54:08 -07:00
Linus Torvalds
acc343834a Actually tie in the new libdivecomputer IO model to open the dive computer device
This creates a new libdivecomputer_device_open() helper, and makes
downloading and configuration use it to open the dive computer device
using the proper protocol.

The IRDA case was tested by Sébastien Dugué - I had initially left it
undone believing that "nobody uses IRDA".

Reported-and-tested-by: Sébastien Dugué <sebastien.dugue.subsurface@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-24 17:54:08 -07:00
Linus Torvalds
13f5c75ac4 Convert our custom IO model to new libdivecomputer IO model
This converts our old custom IO model to the new model that
libdivecomputer introduced.  This is partly based on Jef's rough patch
to make things build, with further work by me.

The FTDI code is temporarily disabled here, because it will need to be
integrated with the new way of opening devices.

The ble_serial code goes away entirely, since now libdivecomputer knows
about BLE transport natively, and doesn't need to have any serial
wrapper around it.

Signed-off-by: Jef Driesen <jef@libdivecomputer.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-24 17:54:08 -07:00
Dirk Hohndel
c07faa90f3 Travis: add building for iOS
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-24 15:47:49 -07:00
Dirk Hohndel
2137b21e1b iOS: allow building for the simulator & switch debug/release builds
It makes sense to be able to control this with command line options.
On Travis this avoids the signing problem and makes the build much faster.
Still should be enough to catch iOS breakage.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-24 15:47:25 -07:00
Dirk Hohndel
c145911767 Travis: add iOS build
Disable most warnings for iOS test build as otherwise the Travis log file will
exceed 4MB and the build will fail.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-24 15:45:44 -07:00
Dirk Hohndel
2cba24fa1a iOS: don't show all the libgit2 warnings
We aren't concerned about the code quality of libgit2 and with these warnings
the build log overflows.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-24 15:45:35 -07:00
jan Iversen
fdcc749c99 Updated with new round of comments.
Signed-off-by: Jan Iversen <jani@apache.org>
2018-04-24 15:38:15 +02:00
jan Iversen
953945f9f5 updated with review comments.
Signed-off-by: Jan Iversen <jani@apache.org>
2018-04-24 15:38:15 +02:00
jan iversen
4ac55611fc Incorporated review comments in INSTALL
updated INSTALL to reflect the review comments

Among others made homebrew / manual install equal choices as well
as Xcode / QtCreator.

Signed-off-by: Jan Iversen <jani@apache.org>
2018-04-24 15:38:15 +02:00
jan Iversen
61f613cd6b Updated INSTALL, based on first time building experience.
INSTALL is updated to reflect how to install/build subusurface
on Mac. It has also been updated with several generic parts.

3 parts are still outstanding (to come soon):
QtWebKit, need to document how to download/build
Mac, final touches
iOS, need to document the build process

Signed-off-by: Jan Iversen <jani@apache.org>
2018-04-24 15:38:15 +02:00
Allen Hall
d4d99b0116 Add -libpath argument for qtmacdeploy
Resolves ERROR: no file at "/usr/lib/libgit2.dylib" when building on MacOS.

[Dirk Hohndel: SOB in PR #1201 - copying it into the commit for consistenty]

Signed-off-by: Allen Hall <revenant83@hotmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-23 09:31:11 -07:00
Dirk Hohndel
09edf25366 iOS: build Release by default
And add -debug option to build.sh for debug builds.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-23 09:28:41 -07:00
jan Iversen
50b8044d56 Updated doc. for handling of libdc
git.subsurface-divelog.org no longer exist.

Signed-off-by: Jan Iversen <jani@apache.org>
2018-04-22 15:53:54 +02:00
Miika Turkia
4186733740 CSV import: fix setpoint (typo)
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-04-19 15:09:02 +03:00
Berthold Stoeger
529d407933 Cleanup: Make local function waitFor() of static linkage
Moreover, remove it from the `extern "C"` block, since extern/static
is oxymoronic.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-04-19 15:08:12 +03:00
Berthold Stoeger
8f4604ead8 Coding style: remove superfluous semicolons
Remove a semicolon after Q_OBJECT and a few others after the closing
braces of while loops.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-04-19 15:08:12 +03:00
Dirk Hohndel
d2d46d848a QML UI: fix incorrect icon references
Not sure why this has worked in the past - it was simply wrong.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 18:57:08 -07:00
Dirk Hohndel
bb03bd862b QML UI: ensure delegate height is not a fraction
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 14:11:31 -07:00
Dirk Hohndel
c1bcba46f0 QML UI: dive list performance: enable caching
We had turned this off since it caused rendering issues, but that
appears to be fixed now - and it should help to get us smoother
rendering of the dive list.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 14:11:22 -07:00
Dirk Hohndel
95c9a505c6 QML UI: dive list performance: no background rectangle
This is one of the suggested performance enhancement to reduce redundant
painting.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 14:10:04 -07:00
Dirk Hohndel
2529529ff9 QML UI: make the code easier to read
And maybe this will make it faster as well? Depends on how the binding
is implemented, I guess.
But at least it's less confusing to read now.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 09:40:14 -07:00
Dirk Hohndel
f8742a48b2 QML UI: show offline notice when going offline
The logic was backwards and showed the notice when the user switched to
auto sync mode.

Fixes #1204

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 08:12:56 -07:00
Dirk Hohndel
6b9a1f3850 QML UI: change auto cloud sync menu texts
This way the menu items describe what happens when you tap on that menu
item.  That seems more consistent and intuitive.

See #1204

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-16 08:08:24 -07:00
Dirk Hohndel
e10b252153 QML UI: suppress warnings when showing GPS fixes
Kirigami gets unhappy if a SwipeListItem isn't named listItem.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 18:27:02 -07:00
Dirk Hohndel
96611c630f Travis: make qt55 build report build failures correctly
The proxy for this is a check to see if the Subsurface binary was
created (in which case we assume that the build succeeded).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 16:05:50 -07:00
Dirk Hohndel
40755987ed Qt: don't use member function that requires Qt 5.8
This should have been caught by our build check, but it turns out that
that one isn't correctly reflected in its Travis status.

Oops.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 14:46:56 -07:00
Dirk Hohndel
aba4b1d390 Update CHANGELOG
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 10:15:36 -07:00
Dirk Hohndel
dcc308e929 QML UI: recalculate derived information after editing dive
For example, when changing the cylinder, the SAC rate wasn't updated.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 10:05:41 -07:00
Dirk Hohndel
24a798a5c3 QML UI: update to latest Kirigami
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 08:16:59 -07:00
Dirk Hohndel
026e90df3d QML UI: don't show a vertical scrollbar in dive list
With the folding trips it just looks confusing as it changes size.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 08:16:59 -07:00
Dirk Hohndel
a47bcbb3e7 QML: remove unused property
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-15 08:16:59 -07:00
Dirk Hohndel
f28266bb19 iOS: fix info.plist
Xcode happily accepted the incorrect plist syntax for a boolean and the app
did the right thing when installed locally - but once you upload to the
iTunes store the error causes that to fail.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 21:05:49 -07:00
Dirk Hohndel
8508fa5be8 QML UI: always show dives that aren't in a trip
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 21:04:56 -07:00
Dirk Hohndel
cc319ad8b1 QML UI: allow collapsing the open trip
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 20:32:40 -07:00
Dirk Hohndel
a454b4fd19 QML UI: animate trip folding
This looks much nicer.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 17:39:40 -07:00
Dirk Hohndel
6a51c14365 DiveObjectHelper: expose number of dives in a trip
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 17:39:40 -07:00
Dirk Hohndel
4923aecc9d QML UI: bring back folding trips
In older versions of Kirigami this caused all kinds of problems so we
eventually gave up on it in commit 13c49276d1 (Revert "QML UI: make
dive list fold dive trips").

Now this seems to work much better, so let's bring back trip folding!

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 17:39:40 -07:00
Jeremie Guichard
0ceb7e01d8 Convert CodingStyle file to Markdown notations
Rename CodingStyle into CodingStyle.md
Update markups to use the ones used in other md files
Move external link reference to the bottom of the file

Signed-off-by: Jeremie Guichard <djebrest@gmail.com>
2018-04-14 13:41:41 -07:00
Dirk Hohndel
e107abba23 Debug location saving
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 13:37:44 -07:00
Dirk Hohndel
1de4321ca1 GPS: untangle the timestamp comparison
And calculate the correct time since last fix.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 13:38:19 -07:00
Dirk Hohndel
1d95cc4cbf QML UI: if we don't have a current position, update it later
Once we get a new fix we asynchronously update the text.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 13:37:44 -07:00
Dirk Hohndel
ca3be8f376 GPS: add signal to show that a new fix has been acquired
This way if we don't have a current enough position we can wait for a
current fix to be acquired.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 13:37:44 -07:00
Dirk Hohndel
82a3d2be95 QML UI: better debug messages for getting current location
Also, show GPS refresh interval in seconds; it's confusing if this is
reported in ms.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-14 13:37:44 -07:00
Dirk Hohndel
0df43252be iOS: log messages
So far we only wrote messages to subsurface.log on Android (since we couldn't
figure out how to make that file user accessible on iOS). Now that that's
fixed, we also need to actually write to the file in the first place.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-13 17:07:43 -07:00
Dirk Hohndel
27b921fb1d iOS: make logfile accessible to user
By creating it in the Documents path and setting the two magic keys,
iOS will make the log file available to the user.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-13 17:07:43 -07:00
Dirk Hohndel
114904a48f iOS: always create subsurface.log file
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-13 17:07:43 -07:00
Dirk Hohndel
f693678235 iOS: create our own OS support file
Up until now we just reused the macos.c file for convenience, hard coding a
specific file path that may or may not work on iOS.  Instead get the preferred
path from Qt and for this we need to be able to call into Qt, so this needs to
be a C++ file.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-13 17:07:43 -07:00
Dirk Hohndel
a529381af2 iOS: fix build script
The code for building libxml2 and libxslt was broken.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-04-13 17:07:43 -07:00