18910 Commits

Author SHA1 Message Date
Dirk Hohndel
a0057c06fb printing: convert to two stage approach
The double connect to onLoadFinished clearly was incorrect, but even with
that removed we still seemed to call the printer before the modified page
finished loading.

Moving the profilesMissing = false setting into the callback also seems
obviously correct, but also wasn't enough to make this work.

So in the end I went the brute force route.
We run the Javascript code to insert the profile images (which is done
in JS to stay compatible with existing templates - yes, this could be
reimplemented differently using Qt primitives - but that would result in
parsing HTML code and that really is what WebEngine is for and the JS
code is known to work...).
And then we write the new HTML out to a file and load that file.
And once THAT file finishes loading (now with all the profiles - if
there were any in the template in the first place), send that to be
printed.

This seems convoluted and silly - but I simply couldn't get a single
step flow to work on openSUSE (which is where this was tested and
implemented).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-28 17:43:27 -08:00
Dirk Hohndel
e5915ca4f2 printing: add more debug output
This makes it easier to see what's going on during the printing process.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-28 17:43:27 -08:00
Dirk Hohndel
47f52cd4d1 printing: use file:// paths for profile images
At least on openSUSE the profile images are otherwise not found.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-28 17:29:04 -08:00
Dirk Hohndel
38bfb3de16 macOS: correctly bundle QtWebEngineProcess.app
Once again macdeployqt doesn't get things right for us. It doesn't actually
copy this required helper into the bundle. Oh well, more manual magic.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-26 13:27:23 -08:00
Dirk Hohndel
528559334f build-system: allow building with WebEngine but not WebKit
This appears to be required on openSUSE Tumbleweed where QtWebKit has
disappeared, but QtWebEngine is available.

I'm not sure how to deal with the seemingly independent NO_USERMANUAL and
NO_PRINTING... this solution adds WebEngine if either of those is set.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-26 12:35:39 -08:00
Dirk Hohndel
042addc30a build-system: test Linux builds against WebEngine
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-26 12:35:39 -08:00
Dirk Hohndel
f620a2c09d build-system: enable builds against WebEngine in build.sh
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-26 12:35:39 -08:00
Robert C. Helling
9aced3f49a desktop: don't close edit dialog when save is cancelled
In the edit dialog, when OK is pressed, anotehr modal dialog opens and asks if
the template should be saved.  If the answer is negative, return to the edit
dialog rather than closing it abandoning the changes.

To abandon the changes, there is still the cancel buttton of the edit dialog.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-11-26 12:35:39 -08:00
Robert C. Helling
9583173425 desktop: implement template previewing for WebEngine
This allows the template editor to preview in a QWebEngineView. It also
improves the logic of the buttons (Apply updates the preview but does not force
a save first).

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-26 12:35:34 -08:00
Robert C. Helling
e7977ee280 desktop: re-add WebEngine support
This reverts commit 643f4a5726 and finishes the task of adding WebEngine as an
alternate backend to be used in printing.

The ultimate goal is to be able to build without QtWebKit (as that is no longer
supported in Qt6). WebKit was used in two places: The user manual and printing.
This patch makes printing work with WebEngine.

The main obstacle is that WebEngine no longer allows accessing HTML elements
from C++ code and rendering the page to a QPainter.

The old version used this to figure out dimensions and page breaks for the
pages and then in the QPainter placed the profile images. With WebEninge, you
need to access the elements using JavaScript which is now used to place the
profile in the html proplerly as an <img> tag. To this end, both html and
profile images are written to a temporary directory on disk.

This image replacement by JavaScript is only necessary to make old templates
still work. It could be replaced by actually putting <img> tags in the
templates (but this would break user edited templates).

In my experiments, the page breaking was done great by html/css, so the
additional magic seems superflous.

What remains to be done:
* remove empty page at the end of printout
* make preview great again (in particlar needed for template editing)

Note: since QtWebEngine currently cannot be built with our toolchain on
Windows, this patch keeps QtWebKit support around by making the QtWebEngine
compile-time conditional via #ifdefs.

[Dirk Hohndel: merged a few commits to make this more logical - the resulting
commit is fairly big, but IMHO preferrable]

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-26 12:32:10 -08:00
Dirk Hohndel
1e527fb9f0 mobile: correctly store manually entered GPS
If there was no pre-existing dive site for a dive, manually entered GPS
information didn't get saved.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-24 11:13:46 -08:00
Robert C. Helling
07745893e5 Don't attempt to compute SAC for CCR dives
CCRs are different. It does not make sense to compute
a depth dependent SAC. You could compute the rate of O2
consumption but even that is likely wrong (as O2 in the
diluent would enter that as well), so simply don't attempt
it.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-11-24 11:03:51 -08:00
Dirk Hohndel
cfd6a1634f cleanup: fix SkipEmptyParts warning for mobile
And while doing that, have all the cases where we already include
qthelper.h simply use a define in that header file - but keep the two
other instances of the define where the C++ source don't need qthelper.h
otherwise.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-24 10:53:26 -08:00
Dirk Hohndel
d15ecef706 small whitespace fix
Just because QtCreator auto-fixed it for me...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-24 10:53:26 -08:00
Dirk Hohndel
343ed43581 update ReleaseTasks
I keep forgetting to do things...
This tries to help me get things right when I make releases.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-20 12:01:27 -08:00
Dirk Hohndel
0262deec16 Pull latest translations from Transifex
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
v5.0.5
2021-11-19 08:55:34 -08:00
Dirk Hohndel
16e9174007 update README and ReleaseNotes for 5.0.5
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-19 08:54:51 -08:00
Dirk Hohndel
b87cbed53c Android: target API level 30
As of November 20201 the Google Play store now requires that new apps
target API level 30. The minimum API level remains 21 so we should
continue to support devices all the way back to Android 5.0 (Lollipop).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-12 15:32:31 -08:00
Dirk Hohndel
da2ee24121 mobile: update version to 3.4.1
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-12 15:21:47 -08:00
Dirk Hohndel
31e688ec00 core: load and save fingerprint to cloud storage
Very similar structure to the XML format. Raw data is again saved as a
hex string (which implicitly provides us with its length). The rest of
components are in a more human readable format.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-12 12:45:22 -08:00
Dirk Hohndel
2b1db9da82 core: load and save fingerprints to XML
We always use the global fingerprint table - maybe this should just not
be a parameter of the accessor functions?

The syntax is very simple - the raw data is encoded as a hex string, the
rest of the components are hex numbers.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-12 12:45:22 -08:00
Dirk Hohndel
33527cb9e5 core: add more C interfaces for fingerprint table
These are used to read/write fingerprint records as git or XML data from
C code.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-12 12:45:22 -08:00
Dirk Hohndel
02c770d997 core: use fingerprint table and on disk fingerprints
In order to not break existing behavior, we still store fingerprints on disk, but
we first check the data in the in-memory table, and we remember the fingerprint data
in the fingerprint table as well (which is then saved as part of the dive log data).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-12 12:45:22 -08:00
Dirk Hohndel
fa250906c9 core: add structures for handling fingerprints
This just adds the basic structures and the accessor functions needed to
manage a table of fingerprint data. The table is indexed by the hash of
the model name and binary serial number as created by libdivcecomputer.
This way the data is accessible when libdivecomputer fist accesses a
dive computer (which is the point in time when we need to use the
fingerprint.

The table also contains the corresponding device id and dive id so we
can verify that the current dive table still contains that dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-11-05 10:36:56 -07:00
Dirk Hohndel
95192bdf83 core: move has_dive helper function
This way it can be used by other code that needs this capability.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-30 20:22:52 -07:00
Dirk Hohndel
9891bdc9ee mobile manual: update version and date
Also update the rendered version.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-30 08:50:30 -07:00
Dirk Hohndel
838151835b dc-download: use short date string
In both places in the UI where we show the date of a dive during
download we are actually pressed for space. So let's use the short
version of the date string to save some space.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-29 15:14:59 -07:00
Dirk Hohndel
44691dae10 dc-download: fingerprint details are debug info
In the normal use of the app this information is simply too verbose.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-29 15:14:59 -07:00
Dirk Hohndel
10e6519ad5 dc-download: give progress update for long downloads
Most divecomputers download data dive by dive - so we get reasonably
frequent updates during the download (as new dives are found and posted
in the progress text area). But some (like the G2) download all of the
new dives at once and only then start parsing them. As a result the
download can look like it is hung.

As a compromise this shows updates on the data received in 10kB
increments. Which for most cases should never be shown and therefore not
make the user experience any worse - but for cases like the G2 will make
a huge difference.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-29 15:14:59 -07:00
Dirk Hohndel
ee87d28d7b cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

The exactMatch in getVersion() was rather bogus, given the pattern.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:38:11 -07:00
Dirk Hohndel
7d6552ff65 cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

The syntax for matches and captures has changed and needed to be
adjusted.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:37:54 -07:00
Dirk Hohndel
73e9c099eb cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

The syntax for matches has changed and needed to be adjusted.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:37:31 -07:00
Dirk Hohndel
bb5866f49e cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:36:49 -07:00
Dirk Hohndel
7a6f2581e8 cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

The syntax for matches and captures has changed and needed to be
adjusted.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:36:27 -07:00
Dirk Hohndel
8e4b2d9b82 cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

Much of this is a simple replacement of one class with the other, but
there are some changes to the way matches are tracked and captures are
created. Also, the exactMatch now needs to be implemented via anchors in
the regular expression itself.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:35:09 -07:00
Dirk Hohndel
4d0c863d61 cleanup: replace QRegExp with QRegularExpression
Qt 6 will drop support for QRegExp.
Use QRegularExpression instead.

This is a straight forward replacement without any other code changes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:33:20 -07:00
Dirk Hohndel
b2d5350bb1 cleanup: remove use of QRegExp in TeX export
Qt 6 will drop support for QRegExp.

When looking at replacing this use of a QRegExp it seemed like a much
better idea to simply switch to utilizing the taxonomy data instead.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-27 12:30:46 -07:00
Dirk Hohndel
ba1564fddb build-system: stop using openSUSE Tumbleweed
The docker container for Tumbleweed has been broken for a while now.
Given the Hirsuite gives us Qt 5.15 testing, I guess it makes sense to
drop Tumbleweed for now.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-22 10:45:28 -07:00
Dirk Hohndel
94136db4e1 Android: use more recent usb library
Builds started to fail because v2.2.2 (about 18 months old) couldn't be
found anymore. That issue seems to have been fixed, but it was a good
reminder not to get completely disconnected from upstream here.

This switches things to the currently latest version of the Android USB
library (which coincidentally will also provide support for additional
USB-serial chipset - not that I think that any dive computers will
benefit from that).

Some of the interfaces changed in the upstream Java library and our code
had to be adjusted to accomodate this.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-22 10:35:57 -07:00
Dirk Hohndel
c3a5cf3315 build-system: update Ubuntu releases
groovy has been rejecting updates for a while, but impish should now be
available.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-19 12:26:09 -07:00
Dirk Hohndel
ff694af92b build-system: prevent recursive symbolic links
If cmake is called multiple times we can end up with a recursive set of
symbolic links that can confuse package build scripts.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-19 12:19:18 -07:00
Dirk Hohndel
ef5c94bb81 Android: fix broken permissions
In trying to avoid the wrath of the Google Play police I ended up giving
up too many permissions. And while in my test installs things continued
to work, in new installs on Android 10 or newer the lack of
FINE_LOCATION permission resulted in BLE scans no longer working.

The frustrating thing is that apparently installing an update with a
different set of permissions isn't enough to trigger either the bug or
the fix (at least not reliably). What appears to work is to uninstall
the existing app and then do a fresh install of a new app with the
correct permissions.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-18 20:32:47 +00:00
Dirk Hohndel
c2a9da89cc mobile: update version to 3.4.0
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-18 19:59:52 +00:00
Berthold Stoeger
540e4437d5 cleanup: fix conversion warning
Fix a pair of warnings, which annoyed me for a long time:
For some reasons prefs.bottompo2 is an integer (mbar)
whereas prefs.modpO2 is a float (bar). This results
in mixed integer/floating point arithmetics when
conditionally using either of them. And ultimately
a warning, when storing a mbar value as an integer.
Fix this by an explicit cast to int after converting
modpO2 to mbar.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-10-16 15:32:56 -07:00
Dirk Hohndel
ac91eccbdd Pull latest translations from transifex
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
v5.0.4
2021-10-15 11:53:36 -07:00
Dirk Hohndel
9c900415f3 Update README and ReleaseNotes for 5.0.4
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-14 19:35:27 -07:00
Dirk Hohndel
afdfccd274 Android: allow user installed root certificates
On Android devices that no longer get updates to the system installed
SSL root certificates, the user can easily install the updated Let's
Encrypt root certificate, but that is only used by Subsurface-mobile if
we explicitly allow the use of those user installed root certificates.

Fixes #3335

Suggested-by: Greg Hunter
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-14 15:53:10 +00:00
Tim Segers
b618d93241 desktop: fix div-by-zero when selecting multiple invalid dives
Signed-off-by: Tim Segers <tsegers@pm.me>
2021-10-11 20:53:41 +03:00
Tim Segers
f3a02d7049 Ignore invalid dives in subsurface-mobile dive summary
Match subsurface-desktop's invalid dive behavior

Signed-off-by: Tim Segers <tsegers@pm.me>
2021-10-11 20:20:20 +03:00
Dirk Hohndel
18c0fa37d1 Update translations and source strings
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-10-09 13:43:14 -07:00