Commit graph

15173 commits

Author SHA1 Message Date
Jan Mulder
5f0ce37559 Android build: build openssl before libzip
On very clean builds not using the wrapper script, the compile of libzip
simply fails because it depend on openssl include files. Simply swap them
around.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Jan Mulder
7f4180a777 Android build: fix openssl build, no_asm
Mysteriously, openssl does not compile with clang with a
sha256-armv4.S:2638:2: error: invalid instruction, did you mean: adr?
The easiest way out is compiling without no_asm. This obviously lowers
the bandwidth on the SSL link (as the asm code is there for performance
reasons), but it has no visible performance loss in my tests.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Jan Mulder
b29a6e4cd2 Android build: add arm64 target and compile with clang
With a preparation done in the 4 commits before, now add the arm64 and
use clang instead of gcc as compiler infrastructure.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Jan Mulder
cd75fff054 Android build: openssl, do not move source tree
Very annoyingly, openssl is re-build and downloaded numerous times
when doing partial builds. Reason for this, is that the original checked
out git repo is moved away, and build in source (as openssl does ...).

So, this simple change leaves the checked out repo in place, and
copies the tree to build in.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Jan Mulder
c4aefc0d29 Android build: always install libzip.a in lib directory
A subtle one. When compiling for arm64, libzip is the only package we
use in mobile that installs its product in lib64. There is no reason for
this given the way our build process is. So, simply force the library to
reside in lib, independent if we are building arm or arm64
architectures.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Jan Mulder
a2fb9fde07 Android build: do not hard code armv7
Simple cleanup. Do not hard code armv7 as we have QT_ARCH. This
allows, in the future, for arm64 builds as well.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Jan Mulder
78d11ed687 Android build: set newer versions and parameterize ANDROID_PLATFORM
Hard coding desired ANDROID_PLATFORM on multiple places is simply bad.
Fix this. Further, set the variables to a much newer state.

CAVEAT: this will likely break android build, so be careful on
bisecting. All fixed in next, related commits.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 13:02:39 +13:00
Dirk Hohndel
1219225729 Travis: use Android docker image for build
This should make it easier to make changes to our build environment.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 13:02:39 +13:00
Dirk Hohndel
64528cd378 Android: cleanup build wrapper script
This way it can be run both to create the docker container or
independently for a full build.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 13:02:39 +13:00
Dirk Hohndel
295c323d51 Android: create docker container
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 13:02:39 +13:00
Dirk Hohndel
c8c6035d79 Android: add Dockerfile for build environment
We'll use that on Travis, but anyone can use that on their system.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 13:02:39 +13:00
Dirk Hohndel
e46fea155d Android: allow running android-build-wrapper without building
This way we can use it to fetch dependencies we need up front.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 13:02:39 +13:00
Berthold Stoeger
5819076130 Mobile: fix editing dive site
Commit 68961a169e made it impossible
to edit a dive site on mobile if a dive-site was already set: If
divesite was non-null, no actions were taken. Remove the conditional.

Reported-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-01-22 13:00:25 +13:00
Lubomir I. Ivanov
b0afca5815 windows.c: fix wrong usage of wcslen() for utf8 conversation
wcslen() returns the number of characters in a wchar_t string.
In the case of WideCharToMultiByte() an estimate for the size of
the utf8 buffer is needed. Using wcslen() is incorrect for such a buffer,
because for any non-ASCII character the estimate will be off by 1 byte.

Call the following instead to obtain the proper UTF8 buffer size
for the conversation:
  WideCharToMultiByte(CP_UTF8, 0, utf16, -1, NULL, 0, NULL, NULL);

Also fix some missing "\n" in fprintf() calls.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2019-01-22 12:59:23 +13:00
Jan Mulder
a5a191e850 Core: fix BT on Linux, workaround Qt bug on 5.12.0
After upgrading to Qt 5.12.0, download over BT from a DC did not work
any more. On the console the message "Connecting to port is not
supported (Uuid required)". Linus noticed earlier that we do rather
strange processing in this part of the code related to selecting port 1
or port 5. This all seems not needed (any more), but broader testing is
advised. This being stripped from the code, the mentioned error from Qt
persisted. That is strange in itself, as we did not reference port
numbers any more.

Step 2 in this commit is actually using an uuid to the call to
connectToService. Choosing an uuid seems relatively straightforward as
we can use the same one we already use for Android. That is the default
BT RFCOMM Serial Port Profile uuid. Interestingly, when changing to this
uuid we run immediately in a Qt runtime error telling us "QDBusPendingReply:
type ManagedObjectList is not registered with QtDBus.". For these 2
unexpected Qt messages, QTBUG-72742 was made. Studying the Qt source
code at this point reveals a possible workaround. Simply create a local
QBluetoothLocalDevice object, which, behind the scenes registers the Qt
internal ManagedObjectList with QtDBus.

In the meantime, Qt agrees that QTBUG-72742 is valid, and that a fix is
to be expected in a future version. At that point in time, the
declaration of the QBluetoothLocalDevice can be deleted again.

In the end, interfacing over BT works again.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 12:59:05 +13:00
Jan Mulder
873a4c8f07 Bluetooth: all states other than HostPoweredOff qualify as valid
This is an attempt to fix issue #1896. While this seems a Qt issue in
combination with very specific Android devices, this might be a fix. Do
not check for a very specific state of the local BT controller, but just
check if it is powered on.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 12:58:52 +13:00
John Plaxco
3865c1ec0a Improve error reporting when exporting a selection of 0 dives.
If no dives are selected when trying to export a selection, a message
is shown that no dives were selected, but it's immediately hidden
behind a message saying that a temporary file could not be created.
In fact, the creation of the temporary file wasn't never attempted,
so the message that the user actually sees is misleading.

The solution chosen here is to duplicate the check that at least some
dives are selected, and abort early if that case is detected, rather
than continuing on to show the additional misleading message. Not
elegant, but it gets the job done.

Better solutions to this include refactoring prepare_dives_for_divelogs
to return something more descriptive than a bool, remove that check
from prepare_dives_for_divelogs entirely since it doesn't seem to be
a good fit there, or switch to exceptions for handling these problems
rather than return values. I don't have sufficient familiarity with
the codebase to attempt these more invasive changes, but they
should be considered in the future.

On a final note, some of the other error messages in this file start
with a capital letter, but the one relevant to this particular PR
does not. Again, I'm not familiar enough with the codebase (or
translations) to know if that's safe to change, so I'll leave that
for another time or another developer.

Reported-by: John Plaxco
Signed-off-by: John Plaxco <john@johnplaxco.com>
2019-01-22 12:58:03 +13:00
Dirk Hohndel
db29fb4e68 Mobile: deal with BT name and address when tapping Download
Instead of trying to update this whenever the connection text changes,
instead deal with it right before it actually gets used.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 12:57:37 +13:00
Dirk Hohndel
0f350bef98 Mobile: add helper function to fill in the BT name
For some devices the BT device name is different from the product name.
Make sure that name is available to the mobile UI. This helper fills it
in from the scan data (based on the device address).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 12:57:26 +13:00
Dirk Hohndel
f7a4327cd4 core: recognize Oceanic Pro Plus X over BLE
Just like with the Aqualung i770R in 7697003498 this name follows the
pattern of a model number in ASCII encoding, followed by the serial
number of the device.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 12:57:13 +13:00
Jan Mulder
cfc4fca6ad core: shift dive time in correct direction
Unsure where this bug got introduced, but when asking for the dive
time to be shifted 1 hour later, the divelist and the dive details
showed 1 our earlier.

Fixes: #1893

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 12:56:49 +13:00
Jan Mulder
fa4dd05dfd Android build: use our own gradle build spec
At this point in time there seems something wrong with jcenter that
is used to download all Android build artifacts from. It simply does
not find the needed stuff on there and our build fails. Its unclear
if this is a temporary issue at jcenter, or its just an intended change.

This fix is a bit of a hack. It provides our own gradle build spec
instead of the one that is provided from Qt (which is pulled in using
androiddeployqt). Added is a working download link to maven, and a
newer com.android.tools.build:gradle is used compared to Qt.

All this makes Travis happy again.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 12:55:03 +13:00
Dirk Hohndel
0d69b420a4 Travis: fix the windows-container build
Call apt update before trying to install things.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-01-22 12:54:44 +13:00
Jan Mulder
18c9db16a5 Android build: explicitly install using sdkmanager
Make sure all required Android SDK components are explicitly installed
before starting the actual build.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 12:54:30 +13:00
Jan Mulder
97178896d1 Android build: buildtools version is automatically detected
With commit 0d8fc7ef970e of qt-android-cmake, the buildtools version
is automatically detected. So do not try to pass it any more, as
this breaks the build.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2019-01-22 12:54:18 +13:00
Daniel Krupp
ad7f4e8656 Fix Cressi interface ftdi opening bug
The Cressi specific PID was not used
when  serial_ftdi_open_device tried
to open the device.

Reported-by: Daniel Krupp
Signed-off-by: Daniel Krupp <daniel.krupp@gmail.com>
2019-01-22 12:52:06 +13:00
Berthold Stoeger
df1586da22 Dive list: correctly translate trip date
Adapt get_trip_date_string() to use the same logic as get_dive_date_string():
Use the static "loc" object to translate date. Before, the trip
date was shown in C locale.

Reported-by: Philippe Massart <philippe@philmassart.net>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-01-22 12:50:54 +13:00
Dirk Hohndel
82aa0da5ec Update README and ReleaseNotes for 4.8.4
Trim back CHANGELOG
Add entry for recent fix for multiple dive master in mobile.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-15 18:11:03 +08:00
Dirk Hohndel
97f56ae4f5 Latest translations
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-15 18:11:03 +08:00
Dirk Hohndel
2f6fb9b683 Update list of supported dive computers
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-15 18:11:03 +08:00
Dirk Hohndel
aaddeb3089 Update libdivecomputer
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-15 18:11:03 +08:00
Jocke
03143f1ef1 Mobile: Allow multiple divemasters
While not something that many will use, editing a dive on
Subsurface-mobile should not result in data loss.
This makes the divemaster field behave in the same way as the buddy
field with regards to multiple entries.

Fixes #1853

Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-15 18:10:13 +08:00
Dirk Hohndel
15c7ee5db0 MXE: respect an MXE build type already defined
And use that to have our Travis build still work with the existing MXE
build container as well as the even older, pre-compiled MXE binaries
used in the windows build.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-14 17:06:10 +08:00
Dirk Hohndel
5963a15bbd MXE: add missing Qt5PositioningQuick.dll
Without this the map won't load.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-14 00:20:18 -08:00
Dirk Hohndel
cb89ee49a3 MXE: switch to i686-w64-mingw32.shared.posix.dw2
This allows us to build QtWebKit again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-13 20:43:13 -08:00
Dirk Hohndel
9da3988ec6 Android: pick the correct C++ runtime
Yet another fallout of the switch to the NDK toolchain.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-13 17:17:54 +08:00
Dirk Hohndel
c608cfd643 Android: build for android-16
That's the minimum platform that we have used for a while now,
corresponding to Android 4.1 and newer (i.e., quite ancient).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-13 16:45:29 +08:00
Dirk Hohndel
a250642479 Android: find Qt cmake modules
With a recent change to the qt-android-cmake project we are now using
the toolchain file bundled with the NDK, and that forces all cmake
modules to be part of the NDK tree - which breaks the way we find our Qt
installation.  This is a hack to work around this as it undoes this
setting, which I'm sure is well intentioned to prevent host system
issues in this cross build scenario.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-13 15:51:17 +08:00
Dirk Hohndel
a58cd3eb13 Android: explicitly build with gcc
Our Android build currently fails with clang.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-13 15:51:17 +08:00
Dirk Hohndel
1868bd38b6 Android: qt-android-cmake no longer ships a toolchain file
Instead use the one that comes as part of the NDK.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-13 13:16:29 +08:00
Dirk Hohndel
a316ed6e6c Latest translations
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-12 21:12:45 -08:00
Berthold Stoeger
bef756073a Coding style: remove stray ';'
There was a stray semi-colon on the beginning of a line in
DiveObjectHelper.cpp. Remove it.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-12 20:55:41 -08:00
Berthold Stoeger
282e6a9f48 Cleanup: remove unsused flags in struct dive_trip
Usage of the flags expanded, selected and fixup was removed some
time ago. Remove the flags too.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-12 20:55:41 -08:00
Dirk Hohndel
63b47ff530 Latest translations
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-11-05 07:57:30 -08:00
Berthold Stoeger
da3ea59a25 Dive list: let sort arrows reflect sort order for NR and DATE
The old code always sorted by "ascending" by default. But
because users typically want their new dives top, "ascending"
was defined for NR and DATE, such that it is actually descending.
Turn these around and intitialize these two fields as
default-descending.

This is possible using the Qt::InitialSortOrderRole role
in DiveTripModel::headerData().

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-05 07:55:53 -08:00
Berthold Stoeger
64a1a50e10 Dive list: remove sortColumn and currentOrder members
Since the QHeaderView of DiveListView is now the authority
over sort-column and sort-order, it makes little sense
to keep these as member variables. That would only risk
inconsistencies. Remove them and query the QHeaderView
instead.

We still need to keep track of currentLayout, as we
have to detect if it changes to change the underlying
model from tree to list or vice-versa.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-05 07:55:53 -08:00
Berthold Stoeger
f2f18b4e16 Dive list: split reload() in reload() and setSortOrder()
The DiveListView code had a very fundamental problem with its
header: Each had its own idea of who is responsible for sorting.
Since we can't easily change QHeaderView, accept QHeaderView
as the authority on sort-column and order.

To make this possible, split the reload() function in two
distinct functions:
 - reload() reloads the model and sorts according to the
   current sort criterion.
 - setSortOrder() tells the header to display a certain
   sort criterion. If this is a new criterion, it will then
   emit a signal. In this signal, resort according to that
   criterion.

Thus, the actual sorting code has to be moved from the
headerClicked() to a new sortIndicatorChanged() slot.
Morover, the sorting of the QHeaderView has to be used.

Reported-by: Stefan Fuchs <sfuchs@gmx.de>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-05 07:55:53 -08:00
Guillaume GARDET
236373b6ba Documentation: update and merge french manuals
Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
2018-11-05 07:49:40 -08:00
Berthold Stoeger
83ed75f4ab Dive list: use proper comparison when comparing dive to trip
The DiveTripModels are sorted in *reverse* chronological order.
Therefore, when comparing a dive against a trip, the dive has
to be inserted if the dive has a *later* date. Change the
comparison accordingly.

Reported-by: Jan Mulder <jlmulder@xs4all.nl>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-04 08:04:27 -08:00
Berthold Stoeger
a2b3d0ff06 Undo: fix addition of multiple dives
The generic addInBatches() function is used to add batches of
contiguous sets of dives to the dive-list models. The loop
searching for the end of the batch used the wrong index and
would therefore not properly cut the batches.

Fix this.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-11-04 08:04:27 -08:00