Commit graph

615 commits

Author SHA1 Message Date
Dirk Hohndel
9c4782fa5c cloudstorage: better member name when updating authentication state
This isn't just about showing the PIN or not.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-26 20:44:02 +02:00
Dirk Hohndel
e64dcd12bd desktop UI: no longer attempt to manually show error notifications
report_error() now does this automatically. So all these odd places in which we tried
to make sure that we show errors are no longer needed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-26 15:55:49 +02:00
Dirk Hohndel
752d9b60c4 Divelistview: use report_error to report and error
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-26 15:53:47 +02:00
Dirk Hohndel
f088aa4c8b desktop UI: always show errors when reported
Instead of waiting for a manual call to showError(), simply use the new
callback to always immediately show the error in the notification widget.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-26 15:50:53 +02:00
Jan Mulder
87db35de3c Fix broken multi selected dive to trip
See referenced issue number. It leads back to an ancient (3 year old)
commit 512c42e. Not sure this issue is introduced there, but that's not
relevant.

Key in reproducing this is the location where the context menu is
requested (using the right mouse button). When it is the row next
to the trip, the add-to-trip succeeds correctly, otherwise
it is a no-op.

The solution is rather trivial (in hindsight). Just loop over the
selected dives, and try to find the trip we want to add to.

Fixes: #522

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-23 10:06:33 -04:00
Guillaume GARDET
5d12143a6a [Facebook] Back to previous behavior when we were able to upload data,
even without album creation permission
2017-10-23 10:05:23 -04:00
Guillaume GARDET
ee1e03c774 [Facebook] add more debug when we are not able to create a new album 2017-10-23 10:05:23 -04:00
Lubomir I. Ivanov
3f7900bf4e mainwindow: disable fullscreen support by default
Require the FULLSCREEN_SUPPORT macro to enable fullscreen
support.

The toggle was added 4 years ago in Subsurface, but with the
current version of Qt 5.9.x, it's very buggy on Windows and
Ubuntu. While it's possible to make this work on Windows,
it seems to behave broken in different ways on different
versiosn of Ubuntu.

Fixes #705

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-22 06:09:05 -04:00
Dirk Hohndel
27c49fe3ad Silence random warnings
None of these seem to point to actual issues, so let's quiet them.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-20 17:25:18 -04:00
Dirk Hohndel
59bf217157 Turn off Facebook debug messages unless verbose
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-20 06:51:51 -04:00
Robert C. Helling
a422957cd6 Use displayed_dc instead of current_dc
current_dc is a macro that determines the dive computer
based on the current dive number. When the planner is started
from an emtpy dive list, the dive number ends up being -1 and
that doesn't produce a valid dive computer. Use the divecomputer
of the displayed_dive instead. This is done via a macro that
can also be used in two other places. Without this patch, the
planner crashed when called on an empty dive list.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-10-19 14:57:02 -04:00
Robert C. Helling
e955099e6c Refuse to save an empty log to the clould
This should prevent the problem of a user accidentally
"deleting" their dives in the cloud by hitting "save to cloud"
in the wrong moment.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-10-19 07:37:47 -04:00
Lubomir I. Ivanov
e9673938fb printoptions.cpp: correctly remember the last selected template
To find the last selected template index in the combo box,
comparing against `printOptions->p_template` would work fine,
except the `on_printTemplate_currentIndexChanged()` slot updates
`printOptions->p_template` each time QComboBox::addItem() is
called. This makes the `for` loop to add new combo box items
and find the index of the last selected template not possible.

To work around the issue, a local QString variable `storedTemplate`
is introduced and it does not change during the `for` loop.

Fixes #595

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-19 14:04:38 +03:00
Stefan Fuchs
884e690049 Tags for geo references: Nicer look, translations and warning message
For the geo references tags update the following:
- Nicer look w/o "Tags:" text and brackets when inside location UI
- Translation for "Tags:"
- Warning message when no dive site layout categories are set

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-17 06:12:07 -04:00
Stefan Fuchs
ac7830ea91 Correct spelling for text in prefs georeferences
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-17 06:12:07 -04:00
bs
1fe76b02da Connect finished signal of download thread only once
Connect finished signal of download thread only once in constructor of
DownloadFromDCWidget instead of every time the Download / Cancel / Retry
button is clicked.

Fixes minor nuisance: On repeated download attempts multiple massage
boxes were shown.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2017-10-16 14:02:06 -04:00
Stefan Fuchs
bfe52f6689 Correctly name member function gasChange of DivePlannerPointsModel
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-16 17:14:17 +02:00
Stefan Fuchs
0b6fb49489 In location information UI set reverse geo lookup button activ...
as soon as coordinates are available .

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-16 03:43:02 -08:00
Lubomir I. Ivanov
56e755b711 Use lrint() for all degrees_t related rounding
In certain places the '(int)' cast is used, while in other the
llrint() or lrint() functions. Make the conversation from degrees
in the 'double' form to the 'int' degrees_t consistent using lrint().

lrint() is the function which should give the best results,
because it accepts a 'double' and results in a 'long'
even if degrees_t is 'int'. If the truncation from 'long' to 'int'
is discarding some of the precision then the next step
would be to turn degrees_t into a 64bit signed integer type.

Possible fix for #625.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-09 13:38:58 +03:00
Stefan Fuchs
f5f2754b81 Preferences units dialog: Tab order and silence warnings
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-09 11:49:29 +03:00
Stefan Fuchs
78cda85444 Display units in dive list table based on prefs option
Add a preferences option which enables or disables display of units in the
main dive liste table.

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-09 11:49:29 +03:00
Lubomir I. Ivanov
2cb5d45231 preferences: add missing dialog icon
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-08 16:01:03 -07:00
Dirk Hohndel
20f42e7aa8 Locationinformation: correctly handle strings on the heap
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-07 17:04:26 -07:00
Stefan Fuchs
2d47fd1fed Tab order for location information dialog
Fixed the tab order and excluded "notes" and "dive sites with same
coordinates" from accessability via tab key.

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-07 21:53:28 +03:00
Robert C. Helling
030c094854 Remove disfunctional asc. rate signals and add disable keyboardTracking
The connection wasn't working anyway since the signal comes without
value while the slot wanted a value and thus only created a runtime
warning.

Turning of keyboard tracking means that when typing the number 123 the
value change signal is not fired three times (with values 1, 12, and 123)
but is only fired upon pressing enter or the spin box losing focus.

We should add a similar setting to the depth, duration and runtime
columns of the DivePlannerPointsModel but i have no clue how to do that.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-10-07 08:42:06 -07:00
Dirk Hohndel
1b0812a8cb Warn if we edit non-existant dive site
And try to add it to the dive - bubt we really shouldn't get here.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-07 08:16:53 -07:00
Dirk Hohndel
53b1b17f4f LocationInformationWidget: make sure to clean out fields
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-07 08:16:53 -07:00
Dirk Hohndel
0799d046ba Disable editDiveSiteButton without dive site name
Entering a name first creates and hooks up a dive site which we can then
use in the edit dive site dialog to store modifications.

This doesn't really fix these two bugs, but it might impact whether they
can still be recreated

See #633
See #636

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-07 08:16:53 -07:00
Lubomir I. Ivanov
174b414436 map-widget: don't crash if the map QML failed to load
If the QML modules for QtLocation and QtPositioning are
missing the QML in mapwidget.cpp will fail to load,
which can lead to crashes.

To solve the issue check if the QML has loaded and set
a flag 'isReady' to true. If the loading has failed
load another QML which is for showing a red error text
in the lines of `MapWidget.qml failed to load!`.

If the map QML has failed, use a macro in all relevant
MapWidget members to turn them into a NOP. This approach
leaves the rest of the codebase intact - e.g. no checks
in classes which connect to the MapWidget class.

Fixes #596

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-07 08:09:05 -07:00
Dirk Hohndel
09b02aae4e Simplify the geo reverse lookup function
We never actually create a list of dive sites for which we
call the reverse lookup service, it's always just displayed_dive_site.
So make this all much simpler and just go straight for that.

This commit removes a loop, but doesn't change the indentation of the
code inside the loop to make it easier to see what was changed. That
whitespace change will be in my next commit.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-04 08:05:09 -07:00
Dirk Hohndel
ff26ffe0d0 Remove bogus signals
One isn't connected to anything, the other one makes us overwrite
the changes to displayed_dive_site.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-04 08:05:09 -07:00
Dirk Hohndel
ed78aeade0 Change the signature of constructLocationTags
We actually want to be able to pass a specific divesite structure
and not have it look that up by uuid.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-04 08:05:09 -07:00
Dirk Hohndel
21d78121ad Don't add separate country field, use taxonomy
The more I looked at the code that added the country to the dive site,
the more it seemed redundant given what we have with the taxonomy.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-04 08:05:09 -07:00
Stefan Fuchs
cf409b59ba Planner settings ascend and descende rate: Wire up UI elements correctly
Wire up the UI elements (QSpinBoxes) for ascend rates (4x) and descend rate
(1x) correctly so that the profile and calculation is updated immediately
after the value is changed (e.g. increased/decresed by 1) by clicking
the QSpinBox arrows.
Until now one had to click into the profile or change another planner
preference first before the change became effective.

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-04 08:41:10 +02:00
Lubomir I. Ivanov
52445ec8f5 dive-list: maintain a single instance of DiveTripModel
A weird crash occurs if DiveListView creates another local
instance of DiveTripModel inside reload(). Re-use the member
variable tripModel and assign it a new instance of DiveTripModel.

Reported-by: Gaetan Bisson <bisson@archlinux.org>
Tested-by: Gaetan Bisson <bisson@archlinux.org>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-03 21:34:43 -07:00
Lubomir I. Ivanov
e3118d915c divelist: prevent a crash for missing column width
The `static int defaultWidth[]` definition in divelistview.cpp
could potentially end up missing an element which can later result
in out-of-bounds access when iterating through the list of
columns and updating their widths.

Add a couple of methods in DiveTripModel for setting and getting
the widths and use those. The default values are now pre-set in a
QVector in the DiveTripModel() constructor.

Throw warnings if out-of-bounds columns are requested.

Reported-by: Gaetan Bisson <bisson@archlinux.org>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-03 15:43:03 -07:00
Tomaz Canabrava
516527e1bd [Divesite] Hook location information interface for country
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 09:52:54 -07:00
Tomaz Canabrava
dd1c48de66 [Divesite] hook interface for country
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 09:52:46 -07:00
Tomaz Canabrava
aca8fea2a9 [Facebook] Enable the send button on edit
Not when you press enter.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
527078e277 [Facebook] Use statusbar instead of popup messages
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
3e2a86cf80 [Facebook] More debug calls
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
3a564f412c [Facebook] Use correct albumName variable
and code cleanup

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
5595d9a8b0 [Facebook] Lots of debug messages
Important debug messages, don't remove.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
15c4fadde9 [Facebook] Use the nonblocking calls to post on fb
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
e662ce1cec [Facebook] Fill the info struct
This will be used to send the profile to Facebook

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
dd17c6355d [Facebook] Remove broken function
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
1d8eb0d78a [Facebook] Code organization
Create the variable near its use.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:54:03 -07:00
Tomaz Canabrava
df166247af [Facebook] Signal that the album is found
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:53:59 -07:00
Tomaz Canabrava
a2734e6aaf [Facebook] New method, grabProfilePixmap
Just some code organization

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:52:03 -07:00
Tomaz Canabrava
5778dceb52 [Facebook] Prepare the FacebookInfo struct
This will hold the information for the profile upload.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:51:53 -07:00
Tomaz Canabrava
ba8e6878a8 [Facebook] Remove dead code
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-02 08:51:19 -07:00
Stefan Fuchs
7713c7e607 Use helper function dive_endtime() where apropriate
Calculating dive.when + dive.duration doesn't always give the correct
endtime of a dive especially when a dive has surface interval(s) in
the middle.
Using the helper function dive_endtime() fixes this issue.

Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-10-01 23:55:37 +03:00
Dirk Hohndel
571918feaa Random whitespace cleanup
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:34 -07:00
Tomaz Canabrava
f159802053 [Facebook] Add hability to choose size of profile
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:34 -07:00
Tomaz Canabrava
9b1a949a39 [Facebook] Resize the profile before sending it
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:34 -07:00
Tomaz Canabrava
2db4f626ed [Facebook] Only mark as connected if user id is received
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:34 -07:00
Tomaz Canabrava
a6aeaf897a [Facebook] create userIdReceived slot
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:34 -07:00
Tomaz Canabrava
689dcf1058 [Facebook] Mem leaks
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:34 -07:00
Tomaz Canabrava
475dfe1194 [Facebook] Use only one Network Manager
Fixes quite a few memory leaks.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:57:28 -07:00
Dirk Hohndel
7b8832bc0b [Facebook] fewer UI freezes while accessing facebook
Use signal / slots on the networkreply instead of freezing the event
loop.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:45:28 -07:00
Tomaz Canabrava
c8c9a5dc65 [Facebook] conversion to new connect syntax
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:44:39 -07:00
Tomaz Canabrava
f6ac79296e [Facebook] Dont use deprecated feature
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:43:45 -07:00
Tomaz Canabrava
73c242b6eb [Facebook] Use unblocking call for QNetworkRequest
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:43:45 -07:00
Tomaz Canabrava
8ce4692b5c [Facebook] Use QByteArray directly
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-29 12:43:41 -07:00
Federico Masias
777cf6c3fd Change Facebook upload description to eliminate confusion
Signed-off-by: Federico Masias <fede@masias.net>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-26 23:34:38 -04:00
Robert C. Helling
5b080bedde Remove option to apply GFlow at maxdepth
This option should have never been there. This is not how
gradient factors are supposed to work. It would only trick
users to use the wrong value..

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-09-20 08:54:41 -07:00
Robert C. Helling
a6f186279f Add a checkbox to turn off plan variations
... as those come with a performance penalty

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-09-20 08:54:41 -07:00
Dirk Hohndel
ae209a3d9f Merge branch 'macBLE' of github.com:Subsurface-divelog/subsurface 2017-09-17 15:40:16 -07:00
Dirk Hohndel
49fe120d95 DC download: show info messages on Mac
For some reason the progress bar on macOS doesn't show the
progress text. This creates a label below the progress bar
and shows the text there instead.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-17 15:04:14 -07:00
Dirk Hohndel
d03fabd373 DC download: better message at beginning of download
Especially on BT/BLE devices, where there is a longer negotiation
phase at the beginning of the download, this seems more user friendly.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-17 15:02:11 -07:00
Dirk Hohndel
605400a029 DC download: don't clear message if no dives downloaded
Otherwise the text telling the user that no new dives were
found will be deleted right away.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-17 14:49:37 -07:00
Dirk Hohndel
26e610c3f4 BLE: create controller from QBtDeviceInfo
Creating it from an address is a) deprecated and b) impossible on Mac or iOS.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-17 09:58:11 -07:00
Dirk Hohndel
e5b7fb74b4 BLE: on Mac/iOS use UUID instead of address
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-09-17 09:56:28 -07:00
Stefan Fuchs
19df57d7d3 Remove some very small marble leftovers
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-09-16 08:36:30 -07:00
Tomaz Canabrava
19db825240 Facebook support: fix export dialog layout
Dialog layout was broken, now we can actually resize.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2017-09-13 09:36:22 -07:00
Tomaz Canabrava
e43a116457 Facebook support: use the new Graph Api
This is basically a one liner.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2017-09-13 09:36:09 -07:00
Miika Turkia
f3ab2ee674 Fix crash on manually added ZXU/DL7 file
The CSV import crashed if the input file had no samples in it.

Fixes #566

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2017-09-11 07:21:43 -07:00
Miika Turkia
40cc0b0e4b Import dive number from DL7 log
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2017-09-11 07:21:43 -07:00
Lubomir I. Ivanov
2b40e15713 remove Marble from packaging and build scripts
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>

---
please note, that i have no way to test most of the scripts ATM.
2017-09-04 07:46:35 -07:00
Lubomir I. Ivanov
4bb180b117 remove Marble from the source tree
In desktop-widgets, remove globe.cpp, globe.h and also remove
the NO_MARBLE macro usage.

At this point the MapWidget will always be created and there will
always be a map in the application.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-09-04 07:46:35 -07:00
Lubomir I. Ivanov
a7d8e0d187 googlemaps: clear the cache folder on language change
Open the cache folder via QDir and call removeRecursively().
At that point the user needs to restart Subsurface to be able to
use the map in another language properly.

This change is triggered by the fact that the user might want to see
the street map in his preferred language after he/she picks another
language from Settings. But one problem here is that the cached files
do not carry a language flag - e.g. they are in the lines of:
    googlemaps_100-1-9-445-245.png

Which means that the only way to not mix tiles in different languages
is to clear the cache and start downloading the new tiles in the newly
picked language after Subsurface has restarted.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-09-04 07:41:21 -07:00
Dirk Hohndel
548c062aa5 Another unused variable
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-08-26 14:48:05 -07:00
Dirk Hohndel
e0b1d2dc84 Tex export: remove incorrect code
These two variables are calculated later in the function and the
same two lines of code are there again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-08-26 12:08:22 -07:00
Robert C. Helling
514c298600 More details for TeX export
Include the gasname, get rid of more spaces in front of units,
update the template to use new gas fields.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-08-10 09:08:02 -07:00
Robert C. Helling
d5d97870c3 Move the decision how to typeset unit to TeX-style file
This way, the user can adopt those once and for all for all
her dives. This includes the space between number and unit symbol.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-08-10 09:08:02 -07:00
Robert C. Helling
0c426c37b2 Use letters instead of digit in TeX macro names
TeX doesn't like digits there, so let's use letters

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-08-10 09:08:02 -07:00
Robert C. Helling
de47c96763 Cleaning up TeX export
Removed some merge artefacts and made sure code compiles and
produces wellformed TeX. Shortend some comments.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-08-10 09:08:02 -07:00
Ben McCandless
72e302a1c2 Add additional data to TeX-export
The purpose of this work is to allow for generation of more complete log
pages using TeX/LaTeX.

Previously, the exporting to TeX generated a document that contained
very limited information about the dive.  For example: the only details
reported about air consumption were delta pressure and SAC.  In addition
no data was reported about what equipment (weights, tanks, suit) was
used.

Per feedback, code was updated to use helper functions, and now exports
data with the units set by the user in the Subsurface preferences.  Some
characters (Degree symbol) do not render correctly by default in LaTeX,
so sample code to address this was included in the top comments.  Volume
units do not export an ideal character string, so another string was
substituted.

This update adds the following information:
   * GPS Location
   * Dive computer used
   * Max, Min, Air, and Water Temperatures
   * Average depth
   * Number of cylinders listed, mix, and start/end pressure for each
   * Total weight used, and the description and quantity of each weight
   * Dive rating (previously, only visibility was reported)
   * Buddy
   * Dive master
   * Suit

This update moved several fields that had no output or had unexpected
names (i.e. "spot", "place") into a "Deprecated section"

Future work:
   * The export currently only includes the first entry in the tag list.
   * Future versions should export all tags.
   * Ideally, this would export a screenshot of the dive location.
   * Create a table of correct size for weights and cylinders.
   * It would be nice to have a bit more control over the generation of
     profile images, but that may be beyond me.

Rebased-and-cleaned-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Ben McCandless <mccand@gmail.com>
2017-08-10 09:08:02 -07:00
Anton Lundin
5e0c2a7693 Configure ostc4: Correct button sensitivity range
Signed-off-by: Anton Lundin <glance@acc.umu.se>
2017-08-01 13:39:35 -07:00
Anton Lundin
cfd5f8bf95 Configure ostc4: Wire up reset button
I previously forgot to enable the reset button.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
2017-08-01 13:39:35 -07:00
Dirk Hohndel
7c92c7dc0a Map: try to wait for Map to load
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-07-28 22:06:34 -07:00
Dirk Hohndel
c59cdd6efd Switch new files to unix line endings
I thought we had this automated, but Lubomirs commits introduced a few
files with dos line endings. This is purely a change of line endings, no
other changes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-07-28 22:01:36 -07:00
Jan Mulder
7e39be436b Fix possible memory corruption
A user reports a SIGSEGV that points to DownloadFromDCWidget::updateProgressBar()
in relation to strlen()/strdup(), at end of download. Reading the code, as I
can't reproduce the crash, it seems that the progress_bar_text is set to NULL
and later strdup-ped. The man page is not fully clear on this, but setting it
to the empty strings is much safer.

Might fix: #507

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-07-28 15:16:46 -07:00
Lubomir I. Ivanov
69f8fc3c5b map: whitespace cleanup in QML and C++ files
- remove ";"s
- remove {} where not needed or move them to the same line

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
4a004f37ea mapwidget: add a method to set update editMode in MapWidgetHelper
The local slot coordinatesChangedLocal() tracks the MapWidgetHelper
coordinatesChanged() signal and emit a coordinatesChanged() signal
to any listeners (e.g. MainWindow).

Also add a small change in centerOnDiveSite(), to not be called if
we are skipping the reload (skipReload is updated by
selectedDivesChanged()).

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
7486682f43 mapwidget: add the "skipReload" guard
This guard is to prevent a meaningless reload on the map marker list,
when the user selects a new dive and nearby dives. The flag is updated
in selectedDivesChanged() which on it's now cannot possibly trigger
changes in the markers, only the selection. The selection of active flags
is already handled by the model and automatically updated in the QML.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
64697375cf mapwidget: connect the helper selectedDivesChanged() signal
The selectedDivesChanged() signal from MapWidgetHelper is connected
to a local slot. One problem here is that this crashes with the calls to
DiveListView().

The dive list widget triggers events that call reload() on the MapWidget
(same happens for Marble's Globe class) and that crashes somewhere in
the QML shared library. TODO: investigate.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
b7c4a7fbfc qrc: use "MapWidget.qml" as a QRC alias
Apparently, if it's required to import a QML component inside any QML
file from resource, the compoment QRC alias has to have the same name
as the component - e.g. add QRC alias MapWidgetContextMenu.qml allows
creating a MapWidgetContextMenu compoment inside MapWidget.qml.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
8fe068f191 mapwidget: call MapWidgetHelper::reloadMapLocations()
MapWidgetHelper::reloadMapLocations() is now called from MapWidget::reload()
and MapWidget::repopulateLabels().

The mobile version should do similar.

NOTE: These MapWidget methods names are from the Marble "port".

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
52316229cd mapwidget.cpp: register the MapLocation and MapLocationModel types
Apparently the "safe way" is to register C++ types is before the QML
code has loaded. The idea here is that the QML code should know about
these type definitions and be able to operate with them.

TODO: do the same for the mobile version.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
2cb8fee827 add the SPDX-License-Identifier to new source files
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
5cc2c02dfb qmlmapwidgethelper: add the centerOnDiveSite() method
MapWidget sould not handle any of the map backend.
Instead it should just pass calls to MapWidgetHelper.

Do that for centerOnDiveSite().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
99c2bf6290 mapwidget.cpp: obtain a reference of the MapWidgetHelper from QML
Use findChild() to obtain the only MapWidgetHelper object created
in the MapWidget.qml. Store the reference as a member variable -
m_mapHelper.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
e2a4f3fcee desktop-widgets/mapwidget: register the MapWidgetHelper QML type
This commit registers the class MapWidgetHelper for QML
in the desktop version.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
63d7b315c1 desktop-widgets/cmake: include "qmlmapwidgethelper.cpp"
As noted in previous commits, a folder named "shared-widgets" which
holds QML/CPP files might be the better (less confusing) choice.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
a8af2f5548 globe.cpp/h: remove the dummy QLabel based widget
If NO_MARBLE is defined don't create a dummy replacement widget in
the GlobeGPS class.

At this point all cases of NO_MARBLE are covered by the MapWidget
solution.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
ab7d6a73d4 mapwidget.h: force-undefine the IGNORE macro from winbase.h
By including <QQuickWidget>, <winbase.h> is included from <windows.h>.
<winabase.h> has the IGNORE macro defined.

Undefine it localy in mapwidget.h to prevent a conflict with maintah.h's
EditMode::IGNORE enum.

NOTE: possibly similar case to the undefine in
btdeviceselectiondialog.h:22.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
c2e172a874 mapwidget.h: remove redundant "core/divesite.h" include
The header should be included only in the .cpp file

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
6e916b6764 locationinformationwidget: abstract between GlobeGPS and MapWidget
Connect the same signals for the two classes based on the NO_MARBLE
macro.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
df519be01e mapwidget: add the placeholder prepareForGetDiveCoordinates() slot
Port from GlobeGPS.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
97a3051089 mapwidget: add the coordinatesChanged() signal
Port from GlobeGPS.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
b89ecd5ab8 subsurfacewebservices: abstract between GlobeGPS and MapWidget
Call same methods from the two classes based on NO_MARBLE.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
8f52b129af mapwidget: add the placeholder repopulateLabels() method
Another placeholder for the Marble port.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
ae52e2a272 maintab: use GlobeGPS / MapWidget abstraction
Based on NO_MARBLE, call the same methods in the two different classes.
Later the dummy Marble GlobeGPS (for NO_MARBLE) should be removed.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
4334d33413 mapwidget: add the method centerOnIndex()
Again for the port from Marble, later can be removed / renamed.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
0d3d9c01eb mapwidget: add public slot endGetDiveCoordinates()
Later this has to be replaced / renamed if needed.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
39af5bb05b mapwidget: add an empty reload() method
Call same method in MainWindow if the NO_MARBLE macro is defined.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
86f4a26a83 mainwindow: rename GLOBE_MAXIMIZED to MAP_MAXIMIZED
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
4a10c94840 mainwindow: rename "actionViewGlobe" to "actionViewMap"
Also change the menu entry text itself to "Map" instead of "Globe".
"Map" covers both Marble and Qt Location in terms of "map" solutions.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
b054c211a1 mainwindow: don't remove the "view globe" action from the menu
We now have a map no matter NO_MARBLE.
TODO: rename the action itself.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
1a5122e8f8 mainwindow: enable centerOnDiveSite() no matter the NO_MARBLE macro
The same public slot now exists for both widgets, so the ifndef macro
check is redundant.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
a1fbffc96c mapwidget: add placeholder centerOnDiveSite() public slot
This is WIP and would be developed futher, so that the new
map widget can center on a divesite location.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
b0b5f701fc mainwindow: create an instance of MapWidget for NO_MARBLE
This is an attempt for a smooth transition between Marble
and Qt Location map integration. If NO_MARBLE is defined
an instance of MapWidget (Qt Location) is created,
else an instance of the Marble widget would be used.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
0f0a953727 mainwindow: rename the variable 'globeGps' to 'mapWidget'
This is needed by the transition to the new map widget. Also
generalizes the variable name.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
70ab937296 desktop-widgets/cmake: include mapwidget.cpp as a UI class
The next step would be to create an instance of the class in MainWindow.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Lubomir I. Ivanov
b083795233 map: add placeholder .cpp and .h files for the new map widget
The files are WIP and located in desktop-widgets, as these
would only be used by the desktop version.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-07-28 07:31:11 -07:00
Dirk Hohndel
1b8b112048 Fix slot handling in Photos tab
This clearly has never been tested, never worked.
Oh well.

Fixes #478

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-07-12 08:25:58 -07:00
Dirk Hohndel
6837120bb1 BLE handling: create helper function to add the LE: prefix
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-30 13:12:07 -07:00
Dirk Hohndel
a4d4d1c83b Better colors for BT pairing dialog
Linus had complained about these colors for a while. I think
this is a massive improvement.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-29 15:19:33 -07:00
Robert C. Helling
81362e6441 BT address 0 is bogus
Grey out those devices in the scanning list and prevent
the user from selecting those.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-06-30 07:10:32 +09:00
Linus Torvalds
d0c3ef4cf8 Bluetooth: make LE-only devices add "LE:" as an address prefix
This seems a bit odd, but it actually has three different reasons for it:

 - It's a visual indication of BT LE mode for users

 - the rfcomm code only works with legacy BT support, and if we scan a
   device that only does LE, we want the custom serial code to instead
   automatically fall back on a "emulate serial over LE packets" model.

 - we want rfcomm to remain the default for devices that do both legacy
   BT _and_ LE, but we want people to have the ability to override the
   choice manually.  They can now do so by just editing the address
   field and adding the "LE:" prefix manually, and it automatically gets
   saved for next time.

So while a bit hacky, it's actually a very convenient model that not
only works automatically, but allows the manual override.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-26 22:20:01 -07:00
Linus Torvalds
add253ca9e Convert to new libdivecomputer custom IO model
Instead of being "custom serial", it's a IO model that allows serial or
packet modes, independently of each other (ie you can have a bluetooth
device that does serial over BT rfcomm and packet-based communication
over BLE GATT with the same serial operations that describe both cases).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2017-06-22 08:43:47 -07:00
Anton Lundin
2fa7e86708 Remove old duplicated code
Way back in time this code was copied from downloadfromdcthread, so
de-duplicate and call that code instead.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
2017-06-21 18:43:15 -07:00
Dirk Hohndel
6afe6baa14 Desktop UI: reset cloud storage progress 'percentage'
The fake percentage needs to at least start at 0 for every cloud interaction.
Yes, the file global variable is ugly. So sue me.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-18 01:46:49 -07:00
Dirk Hohndel
b2b51c833a QML UI: redesign the user notification
The old system of cloud access updates with fake percentages just wasn't
helpful. Even worse, it hid a lot important information from the user.
This should be more useful (but it will require that we localize the
messages sent from the git progress notifications and make them more
'user ready').

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-17 23:22:37 -07:00
Jan Mulder
26a0e741b8 code cleanup: remove unimplemented classes and structs
Remove forward declared but not implemented classes and structs.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-06-16 05:31:41 +09:00
Jan Mulder
db39f1a847 code cleanup: remove 2 unused structs
Luckily these 2 structs in this ugly code are not used. Remove them.

Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-06-16 05:31:41 +09:00
Dirk Hohndel
816863dccf Correctly hook up libdivecomputer log and dump
This was checking the status of the wrong UI elements.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-15 02:24:48 -07:00
Lubomir I. Ivanov
1ddda0755b TabDiveInformation.cpp: use lrint() for sac.mliter in updateData()
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-11 15:57:29 -07:00
Lubomir I. Ivanov
16efcf2af8 simplewidgets.cpp: silence warning about parentheses
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-06-11 15:57:08 -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
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
5a4485b63b Random whitespace cleanup
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
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
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
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