Commit graph

9468 commits

Author SHA1 Message Date
Dirk Hohndel
aeedc2a619 Add helper function to safely move away file or directory
Try numberical suffix until you find one that isn't used yet.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-23 05:10:43 -07:00
Dirk Hohndel
c7ae8c8655 Update MXE cross build script
Small addition for completeness

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-23 05:01:19 -07:00
Dirk Hohndel
3b15ab5f28 MXE build: small tweaks
While this should be fixed in cmake, for now just manuallt get
libssrfmarblewidget.dll and QtXml.dll in place

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 20:23:30 -07:00
Dirk Hohndel
e66f0895c6 Dive merging: make sure that the profile is redrawn
This uses the just introduced refreshProfile() function.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 19:59:58 -07:00
Dirk Hohndel
aeac5fcb6d Add refreshProfile member function to MainWindow class
While the whole idea of calling these functions through the MainWindow
instance is atrocious, until we change the architecture of all this
refreshProfile() is a useful function to have.

In order to make this cleaner to implement I allowed an argument to
ProfileWidget's replot() which allows picking a specific dive. By
defaulting this to 0 we get the previous behavior when calling replot()
without an argument.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 19:58:14 -07:00
Willem Ferguson
a761a33069 User manual: Bluetooth UI description
1) Inser Bluetooth UI description at end of section dealing with dive download.
2) Delete existing text in appendices that detail pairing a Bluetooth device with
   the Subsurface computer.

One image is added to the manual.

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 19:36:54 -07:00
Anton Lundin
113ab59d81 qtbluetooth: Break read/write loops on bad state
This introduces a state check to only continue to try to read/write from
the bluetooth device while its in a sane state.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 19:36:54 -07:00
Anton Lundin
8417e84e82 qtbluetooth: add a read timeout
This adds a read timeout to the qt serial bluetooth code. This is needed
for error handling and error recovery purposes.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 19:36:54 -07:00
Linus Torvalds
34da4801f4 Be much more careful about merging dives
This patch changes the dive merging to be much more careful about
things, because it turns out that we had several small oddities that
caused big merge issues.

The oddities are:

 - the dive "duration" is actually how long we spend under water.

   But that means that when we do "dive->when + dive.duration.seconds"
   to calculate the end of the dive, that is nonsensical if you came up
   to the surface in the middle of a dive.

   Now, normally you don't see profiles like that, but once you start
   merging dives together, it can go from "small detail" to "dominant
   factor".

 - We have two different cases of merging: the automatic "merge new dive
   computer download if it looks like the same dive" (which always has a
   merge offset of 0, since we merge it as a new dive computer) and the
   "merge two different dives into one longer dive.

   The code assumed that it could look at the "downloaded" flag for the
   dive to check one or the other, but that doesn't really work.
   Reading a dive from an XML file isn't any different from downloading
   it.

   So we need to change the logic to determine what kind of merge it is
   to actually check the passed-in time offset.

With this, Stuart Vernon's test-case of eight dives with short surface
intervals in between end up merging correctly into one dive.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Reported-by: Stuart Vernon <stuartv@force2.net>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 19:36:54 -07:00
Dirk Hohndel
000a93fb64 Cmake: fix installation of translations
Umm, that one's embarrassing.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 09:32:38 -07:00
Rick Walsh
084b4152e4 TestPlan: Add test for repeating dive
If variables were accidentally carried through from a previous calculated plan,
subsequent plan could be affected.  This test aims to detect if this happens.
Commit 8994270 corrected such a bug.  If it were reverted, this test would fail
(as it should).

Signed-off-by: Rick Walsh <rickmwalsh@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 07:36:37 -07:00
Guillaume GARDET
236713efaa Documentation: update french translation of user-manual
Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 07:28:03 -07:00
Lubomir I. Ivanov
0b0e203dbd Cmake: add LIBMARBLE_FROM_PKGCONFIG and some Marble related fixes
This patch adds the option to retrive Marble with pkg-config in a
similar way to Grantlee, libgit2, etc.

It reorganizes the "if(NO_MARBLE)" case to be the "else()" of
if(NOT NO_MARBLE).

Also, it adds the "-r" option to "rm" here:
add_custom_target(link_marble_data ALL COMMAND rm -rf ./marbledata ...

as otherwise it fails on Win32/Msys with "marbledata is a directory".

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-22 07:18:53 -07:00
Dirk Hohndel
7351ff62d7 More updates to MXE build script
Two more changes that are needed for this to build successfully.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-21 22:22:03 -07:00
Dirk Hohndel
5982092858 Update MXE cross build script
Instructions how to use it are in the script.
As of today this doesn't create working binaries - this worked perfectly
fine back when MXE was still based on Qt5.4

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-21 21:39:41 -07:00
Miika Turkia
692ef8f141 Add wily to Ubuntu packaging
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-21 13:11:12 -07:00
Robert C. Helling
e644fe5d97 Fix image offset calculation
It seems this has never worked and nobody ever tested it. There was some
confusion with time zones since Qt takes by default local time when
converting from/to epoch while the exif library used UTC.

For my single test dive, this works now. But this needs more testing!!!

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-21 10:26:11 -07:00
Willem Ferguson
ce134fb763 User manual update 1) replace three images 2) change text of user manual to reflect the three images correctly
Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-21 10:16:50 -07:00
Willem Ferguson
d8baaac124 Systematic user manual update (Part 3)
From DiveList section to printing section

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-21 10:16:35 -07:00
Linus Torvalds
4d9d4825a5 Fix plot entry creation
This was originally triggered by an odd merge of two dives that should
have been the same, but that showed a corner case where the plot entry
creation could create broken results that violated our assumptions about
time stamps being monotonous.

When setting up the plot entries we create surface entries at the
beginning and end. We then fill in the plot entries between them based on
the samples from the dive computer plus our own interpolation (so we have
one entry at least every ten seconds). The loop ends when we are out of
space - which in this instance caused us to exit before updating the
maxtime and therefore the final plot entries having time stamps that were
smaller than the last entry filled in by the inner loop.

This patch makes sure we have enough space in the plot entry structure and
moves the exit from the inner loop until after we have updated the
maxtime.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 15:10:31 -07:00
Dirk Hohndel
04773705e3 Fix build error on Windows with Qt5.5
I'm not quite sure why this works, but it appears to do the trick.
Apparently you are supposed not to have the meta type declaration in a
shared header file. Also, with Qt5.5 you can't have the declaration for
QBluetoothDeviceInfo, not even on Windows.

This may need more tweaking to make sure it works on all combinations of
OS and Qt version.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 15:08:14 -07:00
Dirk Hohndel
d0fba482b7 Cloud storage: in verbose mode give lots of progress information
If a user gets stuck accessing cloud storage it's often hard to figure out
which step is hanging which makes it much harder to narrow down the
problem. With this patch calling Subsurface with '-v' will give somewhat
finely grained progress information on stderr.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 10:15:34 -07:00
Dirk Hohndel
54ec332c2f Cloud storage: verbose output to console
If Subsurface is started with the verbose flag, also give progress
information on the consol (just in case there are issues with the progress
dialog).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 10:15:34 -07:00
Dirk Hohndel
06d6ca94f3 When calling save-as with cloud storage as default, pick sane filename
Passing the cloud URL to the file select box leaves "git syntax" in the
filename which makes us look for a directory with a git repository in it
and give non-sensical error messages to the user.

With this we simply use the users email address as local filename with a
.ssrf suffix.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 10:15:34 -07:00
Rick Walsh
899427079e VPMB: Reset ceiling pressures at start of planned dive
We do not want to remember max_bottom_ceiling_pressure from the previous planned
dive - it makes the Boyle's law compensation incorrect if the previous planned
dive was a deeper deep-to-shallow multi-level dive.

E.g. Plan these dives (without applying this patch) with VPM-B nominal
conservatism:
	Plan 30 m for 20 min (total run time = 28 min)
	Now plan 100 m for 20 min, followed by 70 m @ 23 min and 70 m at 30 min
	Re-plan 30 m for 20 min (total run time = 50 min)

With this change, the re-planned dive run time is 28 min, as it should be.

We probably don't have to reset first_ceiling_pressure too, but it's cleaner if
we do.

Signed-off-by: Rick Walsh <rickmwalsh@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 08:00:09 -07:00
Robert C. Helling
28c1dc754d Only calculate crushing pressure in VPM-B mode
Don't do this expensive calculation when not needed.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 07:56:25 -07:00
Dirk Hohndel
a77d1a3f56 Warn about non-monotonous plot data and prevent infinite loop
The data are supposed to be sorted with monotonous time stamp. And while
the actual bug that causes this needs to be identified and fixed, this is
at least a stop gap measure that shows the issue and prevents Subsurface
from hanging.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-20 07:54:28 -07:00
Linus Torvalds
e4d2092f33 Uemis downloader: start downloading using the correct dive ID
The logic to pick the initial dive ID for the uemis downloader was very
confused, and did not work at all when restarting a download when the
Uemis filled up, and the "Force download all dives" flag was set.  It
also required a rather odd Uemis-specific callback from the download UI
because of how it picked the initial ID.

This changes the logic to just look at the list of downloaded dives when
restarting, which simplifies the logic a lot, gets rid of the odd
special callback, and also means that the whole "Force download" issue
just goes away.  It seems to work now.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 21:30:33 -07:00
Linus Torvalds
ad0806406b Uemis downloader: avoid NULL pointer dereference
The Uemis downloader blindly just did a strstr on 'nds->name', even if
there wasn't necessarily a dive location at all.

Add the proper NULL pointer checks.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 21:30:02 -07:00
Dirk Hohndel
d2db571b7a Update two more translations before Beta 2
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 15:33:40 -07:00
Claudiu Olteanu
a319c42310 Rename BTH_ADDR_STR_LEN macro
Signed-off-by: Claudiu Olteanu <olteanu.claudiu@ymail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 09:43:33 -07:00
Claudiu Olteanu
89540e0fb2 Fix Bluetooth address truncation issues on Windows
On some Windows platforms when we convert a Bth address to a String
it is formatted as "(XX:XX:XX:XX:XX:XX)". Therefore we first try to
remove the round parentheses and finally we truncate the string
to 17 because there are 6 two-digit hex values and 5 colons.

Signed-off-by: Claudiu Olteanu <olteanu.claudiu@ymail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 09:43:06 -07:00
Dirk Hohndel
54f4ed70ce Getting ready or Subsurface 4.5 Beta 2
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 07:24:42 -07:00
Dirk Hohndel
1612790eba Latest translations
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 07:24:42 -07:00
Salvador Cuñat
82ff827faa Update spanish translation of user manual to english-30d953d
Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-19 07:24:41 -07:00
Linus Torvalds
09ded17e1c Fix divecomputer nickname handling
Don't overwrite existing data.

[Dirk Hohndel: rewrote this a litte, but the logic is the same]

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 14:01:05 -07:00
Dirk Hohndel
ca6f2c238a Uemis downloader: minor coding style changes
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 13:16:57 -07:00
Dirk Hohndel
07a2514d9f Uemis downloader: don't try to download divespots that weren't set
This should cut down on redundant calls to download divespot #0.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 13:16:57 -07:00
Dirk Hohndel
f7eb6f6b58 Uemis downloader: minor coding style updates
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 13:16:57 -07:00
Guido Lerch
69c5e9adc2 Uemis downloader: reduce the amount of dive stops to be read
Changing the logic to check if a divespot was already read in
this round of reading in dives.

Signed-off-by: Guido Lerch <glerch@Guidos-MacBook-Air.local>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 13:16:45 -07:00
Dirk Hohndel
90123c35ae Update translation strings
This was all driven by commit 5ba74130c0 ("Cloud storage: make user
visible messages more consistent").

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 12:10:33 -07:00
Dirk Hohndel
ade2067155 Git storage test: need to instantiate the window title updater class
Otherwise calling the static function can cause a crash in
mark_divelist_changed()

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 12:05:07 -07:00
Dirk Hohndel
5ba74130c0 Cloud storage: make user visible messages more consistent
I hate this patch. But it makes no sense to expose users to git level
error messages. So this is trying to make things much easier (and,
frankly, less informative) if we are accessing the Subsurface cloud.

The way this is implemented is really ugly; it tries to avoid frequent
repetition of the same strings by using different exit points for the
functions in question. I'm not convinced this was the best way to do it
but it's what I have.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 11:51:50 -07:00
Dirk Hohndel
149e60ec50 Update translations and strings
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 10:15:49 -07:00
Miika Turkia
6b7e2d2414 Capitalize GPS in string
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 10:07:58 -07:00
Guillaume GARDET
bf1300e5b5 Documentation: update french translation of user-manual
Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 10:07:21 -07:00
Robert C. Helling
562dfa1c5d Spelling corrections
Spell Setpoint without space in user visable strings.

Explain authorized_paired.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-18 10:04:50 -07:00
Dirk Hohndel
2d68214eac Planner: show new icon to indicate that last point can't be deleted
Having the trash can disappear is somewhat intuitive, but I'd argue this
is even more so.

Fixes #789

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-17 15:27:49 -07:00
Robert C. Helling
d0145621a1 Hash images upon loading divelog file rather than when loading image
Up to now, we only computed hashes of images upon actually displaying the images.

With this patch we start to compute hashes once we load the xml or from git. This
happens in the background, so the user should note an increased CPU load only once
per divelog.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-17 08:56:25 -07:00
glerch
2d376de68d Uemis downloader: fix algorithm to find matching dive details
Implemented suggestion from Dirk on how to deal with dive details
not being found.

Also cleaned up some unused variables, got rid of the last_log_file_nr
because it's not needed anymore.

One thing in question I still need to check is whether we really need to
decrease the dive_to_read if we find deleted dive details, this is still
in but I dont think it's really needed.

Signed-off-by: glerch <guido.lerch@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-17 08:33:11 -07:00