Commit graph

18 commits

Author SHA1 Message Date
Tim Wootton
13d4c48e6a Changes test for ISO 6709 location format
As discussed with Mika this changes the ISO 6709 detection to use:
	1st non-whitespace character is a digit and
        number of commas is even.

The idea is that, as all the other formats seperate the lat from
long with a single comma, additional even numbers of commas could
ocour in locales where comma is used as a decimal point, but in
total an even number of commas (often 0) would indicate an ISO
format entry.

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-14 21:15:01 +07:00
Miika Turkia
e4f2c86c82 Improving matching of ISO 6709 GPS format
ISO 6709 format dictates that the format includes characters ° (degree),
' and ". If we only test for the coordinates starting with decimal, we
match also the decimal notation on this test. Thus adding test for the
degree sign not to match input as ISO 6709 when coordinates are given in
decimal notation.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-12 21:06:12 +07:00
Dirk Hohndel
65e9fecd80 Add a unique id to every dive
This id is just held in memory. It's not supposed to be used for anything
but having a unique handle that represents a dive. Whenever you need to
remember a dive across an operation that might change the dive_table, this
is what you should hold on to, not a dive number, a dive pointer, or
anything like that.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-07 12:02:42 +08:00
Tim Wootton
41876f974e Allow location coordinates in ISO6709 format
Allows location coordinates to be entered in ISO6709(2008)
Annex D format. e.g. 50°40'46,461"N 95°48'26,533"W
see http://en.wikipedia.org/wiki/ISO_6709#Representation_at_the_human_interface_.28Annex_D.29
for suggested format.

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 09:18:27 -08:00
Dirk Hohndel
d42cc5a40c Enable libdivecomputer log or dump from the UI
Pick filenames for these functions as they are selected.
Use the windows-safe fopen function.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 16:26:00 -08:00
Dirk Hohndel
18f0489188 Make decimals optional in GPS coordinates
As an aside, our resolution is great and certainly high enough for the
real world, but it's easy to get into situations where we don't display
the exact same degrees / minutes / seconds as the user entered...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 08:12:12 -08:00
Dirk Hohndel
a2bf4e76e4 Accept decimal point and comma in gps coordinates
The previous implementation only accepted a decimal point. We now support
both point and comma, regardless of locale.

This also removes a debug message left behind in the previous patch.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-23 15:18:53 -08:00
Dirk Hohndel
9405895285 Improve GPS string handling
This adds support for two more GPS coordinate formats and also fixes a
couple of issues with the previous implementation.

We used to only support full degrees and decimal minutes. We now also
support fully decimal and degrees, minutes and decimal seconds.

The previous implementation would color the input field red if either it
couldn't parse the string, or if it was able to parse it but it was the
same as the previous location. That's misleading.

The previous implementation also changed all gps coordinates to the new
coordinates in a multi-dive edit - instead of just changing the ones that
are the same as the master dive.

Fixes #387

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-23 14:59:38 -08:00
Dirk Hohndel
4f4b83ccbf Correctly parse translated GPS coordinates
Minor oversight in commit 917b47b79c ("Parse localized GPS string") - we
accepted the translated hemisphere indicators in the regular expression,
but then didn't use them later when comparing with the result of applying
the regular expression.

Fixes #331

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 20:37:47 -08:00
Dirk Hohndel
917b47b79c Parse localized GPS string
Let's ALWAYS support the somewhat "international standard" N/S/W/E
characters, but ALSO support localized versions.

Fixes #315

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 16:17:35 -08:00
Tomaz Canabrava
e175b1d1ab Remember Trip Selection.
This patch remembers the trip selection across the Dive Tree Model.
It's a tiny bit big because we used to have a variable 'selected
trips' that's now calculed dynamically - this is more future proof.

This is a start of Un-cluttering the view ( for 4.1 I hope to reduce the
code in this class to nearly a half. )

Fixes #303

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-26 11:25:50 -08:00
Dirk Hohndel
4d3e74a236 Trying to switch to Qt translation
This compiles and looks about right, but it doesn't appear to work, yet.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-06 10:42:32 -07:00
Dirk Hohndel
2c4ccc04bd Parse GPS text in C++ and re-implement GPS changed check
This is SO MUCH easier then the convoluted and fragile C / glib code it
replaces.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-06 10:42:32 -07:00
Benjamin
ae713763c7 Add a helper function to calculate weight display string
Add a helper function to unify the calculation of the
weight display string, instead of having the same calculation
in two places in the code.

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-04 11:57:28 -07:00
Michael Andreen
396b2d1031 Fix crash in DiveComputerList::addDC() when importing from DM4.
DiveComputerList::getExact() created a temporary QList with the
DiveComputerNodes matching a specific model. A pointer to a node in the
list was returned, which becomes invalid when the list goes out of scope
and gets destroyed. Causing a crash when the model strings are compared
later.

Instead of using contains() and creating a temporary list, we can just
use an iterator, which should be both faster and safer.

The crash is easy to trigger with DM4 imports, but can probably be
triggered in other cases too.

Similar problem with DiveComputerList::get().

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-08-05 06:54:46 +02:00
Henrik Brautaset Aronsen
4a1b8f8de5 Remove unused QMap include
This sneaked into commit 9364436264.
It shouldn't be there.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 10:59:56 -07:00
Henrik Brautaset Aronsen
9364436264 Fix compilation error in DiveComputerList destructor on MacOSX
The compiler on MacOSX seems stricter than others:

qthelper.cpp: In destructor ‘DiveComputerList::~DiveComputerList()’:
qthelper.cpp:10: error: expected class-name before ‘(’ token

Fixed with help from http://stackoverflow.com/a/14777627/13365

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 07:12:40 -07:00
Dirk Hohndel
29b242c703 Converting the device_info list into a Qt data structure
This data structure was quite fragile and made 'undo' when editing
rather hard to implement. So instead I decided to turn this into a
QMultiMap which seemed like the ideal data structure for it.

This map holds all the dive computer related data indexed by the model. As
QMultiMap it allows multiple entries per key (model string) and
disambiguates between them with the deviceId.

This commit turned out much larger than I wanted. But I didn't manage to
find a clean way to break it up and make the pieces make sense.

So this brings back the Ok / Cancel button for the dive computer edit
dialog. And it makes those two buttons actually do the right thing (which
is what started this whole process). For this to work we simply copy the
map to a working copy and do all edits on that one - and then copy that
over the 'real' map when we accept the changes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 00:24:28 -07:00