Commit graph

12022 commits

Author SHA1 Message Date
Dirk Hohndel
1ab6b50a34 QML UI: start BT discovery
So far all this does is list all the BT devices that it finds
(and I worry if this will have negative battery implications
on a mobile device), but this should allow us to connect to
a standard BT dive computer (but that will of course require
more code to pick the right device).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-29 12:00:27 -07:00
Dirk Hohndel
9bea9fcdb7 Fix typo
Don't manually edit diffs and then commit without compile test...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-29 10:49:23 -07:00
Dirk Hohndel
dd3edb0dcd QML UI: process freshly downloaded dives
This way they get correctly prepared and derived data fields
get populated. For example, the dive number gets updated if
these are indeed the newest dives.

Fixes #408

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-29 10:35:21 -07:00
Dirk Hohndel
57d01701aa Don't leak memory on downloaded dives not picked
I noticed this in the mobile download code when fixing an unrelated
issue - and then realized that the same was true in the desktop app
as well.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-29 10:35:21 -07:00
Jan Mulder
76a38b6326 More optimal search
The linear search to determine that a just downloaded dive was already
downloaded, started from the oldest dive in the logbook. It is, however
more likely that a just downloaded dive is one of the most recently
downloaded. So, just search backwards. Just a trivial performance
improvement.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-05-29 08:57:04 -07:00
Jan Mulder
88738ede30 mobile: dive_table.preexisting not set importing from mobile
Searching why the mobile app also downloads pre existing dives, it appears
that in the mobile app, the preexisting attribute is 0, where it should be the
number of dives before the download. This is easily solved by adding the correct
setting on the download thread. This solves the issue of downloading  pre existing
dives.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-05-29 08:57:04 -07:00
Jan Mulder
8d42d33f93 mobile: Prevent tripping assert on empty BT download
When (with mobile on desktop) loading from DC is called and the dive computer
to connect to is not in download mode, the repopulate() function is called
with an empty dive table. This trips the assert (obviously, debug compile only) in
DiveImportedModel::setImportedDivesIndexes(). This simple fix makes things just
more robust.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-05-29 08:57:04 -07:00
Dirk Hohndel
3f0d21046e QML UI: add downloaded dives to dive list
This already takes into account which of those dives were selected.
Right now all we have is select all or none - this needs actual support
in the UI, but once that's there, it will just work (famous last words).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-28 11:54:33 -07:00
Jan Mulder
84b1b63d46 Fix abort when Bluetooth mode is default
Commit dec47e11cd introduces a SIGSEGV in case the user has Bluetooth
download selected from its previous sessions. Accessing the "Import from
dive computer" crashes immediately. Reverting a small part of commit
dec47e11cd solves this.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-05-28 03:53:05 -07:00
Dirk Hohndel
057f46f854 QML UI: stub out saving downloaded dives
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-28 03:22:46 -07:00
Dirk Hohndel
4ad02634e9 QML UI: add some DC Download info to AppLog
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-28 02:50:55 -07:00
Dirk Hohndel
a492b8bbd0 QML UI: fix typo in component id
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-28 02:23:03 -07:00
Dirk Hohndel
e255a698cb QML UI: remove code that's commented out
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-28 02:21:05 -07:00
Dirk Hohndel
b400a5a855 Android build: rely on KEYSTORE environment for release build
With the gradle build it seems we automatically get a Debug build unless
the keystore is defined.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 18:54:03 -07:00
Dirk Hohndel
01d610b383 Update Android build scripts
- prepare for Qt 5.9
- remove references to ANT
- adjust to changed location of the resulting apk

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 17:41:28 -07:00
Dirk Hohndel
9d1ebffe1f QML UI: use QtQuick.Controls 2.0 everywhere
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 14:36:32 -07:00
Dirk Hohndel
271b4caddc Fix build error
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:21:57 -07:00
Dirk Hohndel
5a4485b63b Random whitespace cleanup
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:20 -07:00
Tomaz Canabrava
38e24512b7 QML UI: add the Downloaded Dive Model
Still to do:
 - select the dives to save
 - record the downloaded dives

but download is already working. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:20 -07:00
Tomaz Canabrava
7858376727 QML UI: add the DownloadThread
For this I had to also make the DCDeviceData accessible,
and for that it needed to be a pointer.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:20 -07:00
Tomaz Canabrava
85e92597b5 Set descriptor when starting thread.
Set the descriptor when starting the thread, this removes
code from the desktop code and makes everything in sync always.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
c370b876b2 Reduce the scope of variables
Those variables should have local scope, not class scope.
We are using it only inside of pickDump/LogFile metohds.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
09904ddff5 Extract the device_data_t into helper class
Keeping the Desktop and QML versions of Subsurface
using the same codebase will keep the code saner,
this change makes the Desktop version use the
DCDeviceData helper sturct that encapsulates
the device_data_t member for easy access on the
QML. This also helped move a bit of initializations
from the UI to the Core - and that's always good.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
acbe5de1cb New class DCDeviceData
this class encapsulates the device_data_t from libdivecomputer
in a way that permit us to use it on QML.
this will be needed to prepare the data for the download thread.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
54bb5ccf9e Display the dialog correctly
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
0e4c996f51 QML UI: Fill the product list
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
f78fdf3d0f QML UI: show the VendorList on the Download from DC
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
9951592216 QML UI: fix the layout for the Download from DC
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:19 -07:00
Tomaz Canabrava
8056e16589 QML UI: initial code for Download from Dive Computer
Add a new action on the drawer to display the
Download from Dive Computer options. Nothing works yet.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 11:07:01 -07:00
Tomaz Canabrava
a55efcf7d8 Move the fill_computer_list() out of widgets
fill_computer_list() creates a Qt friendly
structure that contains all of the necessary
information about dive computers and it's
devices, and it's needed both in Qml and Widgets
to allow the user to download their dives.

This patch makes it possible to use the code
in QML without duplication.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 08:07:35 -07:00
Tomaz Canabrava
dec47e11cd Separate the download thread from the widget logic
This is important to not duplicate code for the Qml
view. Now the DownloadFromDiveComputer widget is mostly
free from important code (that has been upgraded to the
core folder), and I can start coding the QML interface.

There are still a few functions on the desktop widget
that will die so I can call them via the QML code later.

I also touched the location of a few globals (please, let's
stop using those) - because it was declared on the
desktop code and being used in the core.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:53:14 -07:00
Tomaz Canabrava
3c3f91dcb2 Move model code to models
This makes it easery to use it on Qml.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:46:01 -07:00
Dirk Hohndel
6bfd20a014 Whitespace and warning fixes for cochran.c
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:37:58 -07:00
Thiago Macieira
91d384d988 Don't use the deprecated CMake variable
The *_VERSION_STRING variable has been deprecated in Qt since 5.1.0. Use
the non-deprecated variable instead (which is not a string).

Qt 5.9.0 has a bug in the deprecated variable. Since it's deprecated,
it's probably not going to be fixed until 5.9.1. See
 https://bugreports.qt.io/browse/QTBUG-60936

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:34:17 -07:00
Willem Ferguson
c2930919af PATCH - Refplace the figures in user manual
Replace the figures in the user manual section that deals with preferences
selections.

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:34:06 -07:00
John Van Ostrand
f604089ae3 Added support for older Cochran models that have configurable sample intervals.
Corrected problem where dive profiles would include post dive
surface interval samples.

Added detection for corrupt dives.

Signed-off-by: John Van Ostrand <john@vanostrand.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:22:14 -07:00
Dirk Hohndel
c6bc88b50d Fix some warnings
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-27 07:21:37 -07:00
Jan Mulder
3d8c0b2771 Android build: remove references to ministro stuff
First, Ministro (an app to help installing Qt dependencies on
the mobile platform) is not needed in Subsurface context, as all
dependencies are part of the distribution. Secondly, it breaks the
build as the strings (removed here) are also defined in Qt, and
apparently the Gradle build is detecting this double define.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-05-27 07:09:27 -07:00
Jan Mulder
1df4b6c11b Android build: Add BUILDTOOLS_REVISION
The used cmake toolkit for building the Android Subsurface-mobile app
(qt-android-cmake) recently moved away from compiling with Ant in favor
of Gradle. The most recent Android SDK will not support Ant any more.

This calls for the addition of the Android SDK BUILDTOOLS_REVISION define
to the cmake of Subsurface-mobile. Without this, the build will fail.

The value has to be set to an existing directory in
.../android-sdk/build-tools/

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-05-27 07:09:27 -07:00
Robert C. Helling
0cf8ef6e2d Adopt O2 and He densities to 20degC
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:52:04 -07:00
Robert C. Helling
7c6f30a4b1 Reflect the gas density display in the user manual
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:52:04 -07:00
Robert C. Helling
05a7fe1d40 Gas denisity display improvement
This combines the display with EADD since this is the same
value with a different unit. And show it for air dives as
well.

Suggested by Jan Mulder & Anton Lundin

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:52:04 -07:00
Robert C. Helling
98a65b7157 Display gas density instead of SAC in planner
In the planner, the SAC is prescribed, so there is little
use in plotting it (as the color of the cylinder pressure
line). Rather use the color to show the density of breathing
gas.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:52:04 -07:00
Robert C. Helling
bb6ceba4ac Compute and display gas density
This appears to be critical for work of breathing so it might be
worthwhile to compute. So far only in infobox.

For background, see

https://www.youtube.com/watch?v=QBajM3xmOtc

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:52:04 -07:00
Stefan Fuchs
e6d884cf26 Creation of dive duration string and surface interval string
Update the function to create the dive duration string in a way that
it can be used also in info and stats tab and added some more flexibility.

Changed layout for <1h freedives to "0:05:35" (w/o units) or "5:35min"
(with units and :) or "5min 35sec" (with units with space).

Add a new function to create the surface interval string.

Completely remove old function get_time_string() and get_time_string_s().

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-05-26 15:50:52 -07:00
Robert C. Helling
53a8075bd8 Fix right boundary when moving last handle in planner
There was a bug in the old code due to confusion between minutes
and seconds as the unit of the time axis. But rather than limiting
the time for the last handle in terms of the time axis (which
potentially includes long deco and allowing that for bottom time
quickly leads to dives many many hours long) limit it to 150%
of the previous bottom time.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:46:41 -07:00
Robert C. Helling
7b18be2a50 Adopt planner state caching to new struct
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:44:36 -07:00
Robert C. Helling
57ee5a5477 Assemble global state of planner in a struct
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:44:36 -07:00
Robert C. Helling
b1ccd2fc43 Move planner notes to separate file
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-05-26 15:44:36 -07:00
Thiago Macieira
6bfb1f5200 Adapt build.sh if qmake is already in PATH on a Mac
Some people (like me) have Qt elsewhere. So long as qmake is in PATH,
we should be able to support it.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-05-20 12:20:48 -07:00