Commit graph

108 commits

Author SHA1 Message Date
Giorgio Marzano
45b1d0d73d Display day number in trips longer than 1 day
Signed-off-by: Giorgio Marzano <marzano.giorgio@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-18 17:37:49 -07:00
Lubomir I. Ivanov
894e7d5d39 Print: copy the bundled templates to a safe location
This patch adds couple of helpers to retrieve the template path in
the application bundle (getPrintingTemplatePathBundle())
and the template path in the user directory
(getPrintingTemplatePathUser()).

Once the print dialog is initiated for the first time the contents
of the bundled template path are copied to the user template path
using copyPath(). No overwriting of files will occur.

The PrintOptions and TemplateLayout classes then only use
the user path for retrieving templates.

Fixes an issue where the bundled templates can be locked as read-only
on OSX and Linux.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-18 17:37:49 -07:00
Dirk Hohndel
7b51a4c1be Only mark the divelist changed if something actually changed
Otherwise you could end up in a situation where the data file is always
marked as changed when opened (for example if your data file references a
picture that doesn't exist at that path and can't be found, either).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-13 10:33:30 -07:00
Dirk Hohndel
088c9003c0 Correctly parse GPS coordinates with a ',' between lat and lon
We use this in our own HTML export - and Google uses that in their
standard way of describing GPS coordinates.

With this the new test passes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-07 17:19:58 +01:00
Lubomir I. Ivanov
105cf3a01b qthelper.cpp: remove system_default_directory()
This function is now exposed in the <os>.c API.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-06 16:04:54 +01:00
Dirk Hohndel
2e6afb8e89 Correctly handle the webservice userid in preferences
Because of the way that the webservice userid can be saved both in the
preferences and in a data file it was treated differently than other
preferences settings - which prevented the reset of the preferences from
actually clearing it.

This patch makes sure that if the preferences are reset the preferences UI
reflects that. To make this work the data file loading functions can no
longer be allowed to just simply clear out the userid preference value
just in case they might load a new one.

Fixes #939

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-06 08:53:54 +01:00
Dirk Hohndel
5861da0bce Remove unused part of the geocoding preferences
And always turn on geocoding. The user needs to trigger this manually
anyway, so there's no point in having the extra option in the preferences.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-06 00:01:30 +01:00
Robert C. Helling
a241393e7b Print paths to internal files in verbose mode
When run with -v option, this prints local file names like the path
to the local git repository and the hash file.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-04 16:29:31 +01:00
Dirk Hohndel
8e76456149 Cloud storage: try to work around weird Windows rename issue
In some cases the rename of the cache directory would fail in my testing.
Based on code that Lubomir provided, this tries a Windows specific
implementation of folder rename if the QDir based one fails for some
reason - but obviously only if we are running on Windows.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-26 12:35:21 -04:00
Dirk Hohndel
b1dca1176f Cloud storage: use QDir instead of QFile for renaming directories
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-26 12:34:38 -04:00
Dirk Hohndel
a30e78140f Hide a couple of debugging messages
They are useful to show when trying to figure out what's going on, so just
move them behind a check for verbose.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-23 12:20:21 -07:00
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
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
Lubomir I. Ivanov
2c74a8c315 qthelper.cpp: don't hardcode the Dive m_duration as minutes
get_dive_duration_string() should be used in a similiar way
to socialnetworks.cpp so that the Dive::put_duration()
method sets the variable in the h:min format.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-09 09:16:15 -07:00
Lubomir I. Ivanov
6ff1837b05 qthelper.cpp: use timeFormat and dateFormat for the Dive class
The Dive class has a method which sets the m_time and m_date
members but it uses a custom format. By using the static
dateFormat and timeFormat variables this helper class now uses
the same date and time format as in the dive list.

Fixes #920

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-09-09 09:15:55 -07:00
Grace Karanja
390c10bb08 QML UI: Remove unneeded MobileDive class
The MobileDive class in divelistmodel.h is a duplication of the
Dive class in templatelayout.h. This patch moves the Dive to
the qthelper file.

[Dirk Hohndel: merged with upstream master - let's hope I didn't
               mess anything up]

Signed-off-by: Grace Karanja <gracie.karanja89@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-08-31 15:47:48 -07:00
Anton Lundin
b7038e4bec Remove unneeded includes
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-08-31 15:12:18 -07:00
Dirk Hohndel
ccd2cb2502 Continue to separate logic code from UI code
We don't want to call into the MainWindow from C code.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-08-22 07:05:13 -07:00
Robert C. Helling
72806e42bc Replace global in_planner variable by helper function
as promised earlier

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-08-18 06:42:01 -07:00
Robert C. Helling
260ea879e5 Make debugging cleaner
Don't try to connect the globe when NOMARBLE is active.

Check exisistance before trying to open an image file.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-08-03 22:19:36 -07:00
Dirk Hohndel
83c2addfef Move initialization of preferences to helper function
This way we can read the preferences without instantiating the
PreferencesDialog class.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-07-25 22:08:25 -07:00
Dirk Hohndel
8c0d0de2e6 Location completer: give distance if known
If both the displayed dive and the dive site which is shown as a potential
completion have a GPS fix, indicate the distance.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-07-14 11:52:17 -07:00
Dirk Hohndel
85dfb88f51 Cloud storage: correctly store pictures even if they weren't shown before
We could end up in a situation where the hash for a picture hadn't been
recorded yet and then the lookup to make sure that we find the correct
file actually got us nothing.

Now we make sure that the picture is in the hash table before looking up
the file location and before creating the name of the blob that we store
in git.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-22 06:45:48 -07:00
Dirk Hohndel
174cb1ffb1 HTML export: need to work harder to find the pictures
Simply looking at the filename in the picture structure isn't enough (now,
arguably one might say that it should be and that that data structure
should be updated, but that's not how other parts of Subsurface have
implemented things so I don't want to break that assumption here).

So instead we look up where the pictures actually was loaded from and then
copy that file into the right location.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-21 12:49:05 -07:00
Dirk Hohndel
31fbc16785 Git storage: implement picture loading from git
The interesting challenge here is what to do with the picture data stored
in the git repository. If the pictures are already in the file system (for
example because Subsurface is runnin on the same machine that this data
file was saved on) it would be silly to extract them again every time the
dive log is opened.

So instead we try to figure out if the pictures can be located and only
create local copies of them if that isn't the case.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-21 12:49:05 -07:00
Dirk Hohndel
c9d48c9a72 Add helper function to return local filename of picture as C string
This way we can actually find the picture that we are showing.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-21 12:49:05 -07:00
Dirk Hohndel
2005723989 Make helper function deal with files that don't exist
Ignoring when you can't open a file and happily hashing its contents seems
wrong.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-21 10:47:00 -07:00
Dirk Hohndel
243a9e5840 Remove some include files from qthelper.cpp
We keep forgetting to remove include files after modifying the code in
ways that no longer requires them.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-17 11:47:59 -07:00
Dirk Hohndel
d9b39efeb7 Fix silly typo
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-16 20:30:06 -07:00
Dirk Hohndel
854f55fd89 Move checking the cloud connection into its own files
This isn't UI related and shouldn't have been in a file full of UI
functionality.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-16 06:08:31 -07:00
Dirk Hohndel
0fa0eb2879 Code cleanup: implement window title update via signal
This seems quite convoluted to me but I can't seem to make a more straight
forward implementation work. The idea is that core code should never
directly call into the UI.

So instead the core code (this is C code) calls a helper function. That
helper function calls a member function of a class which in return emits a
signal. The UI code connects to that signal and acts accordingly when it
is received.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-16 06:04:34 -07:00
Dirk Hohndel
c593dea119 Cloud storage: use preference member instead of hard coded strings
This creates the basis to allow other backends to be used with the cloud
storage infrastructure.

So far this should all just transparently continue to work. A user would
have to manually add the cloud_base_url entry to the CloudStorage section
in their config file in order to use a different backend server.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-15 10:22:00 -07:00
Dirk Hohndel
6359a98397 system_default_directory() is broken with Qt 5.4
So for now just keep using the same function as we use with earlier
versions of Qt5 as that seems to work.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-13 21:12:54 -07:00
Dirk Hohndel
f6981f0210 Add helper function to create a directory
Yes, this could easily done from the C code. But this seems just so much
easier and I don't have to worry about the oddities of Windows and all
that.

I'm lazy. So sue me.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-13 18:26:34 -07:00
Dirk Hohndel
df255e2573 Don't show an error if you fail to open the cloud storage
The lower level functions will already report that things didn't connect
successfully, no reason to repeat it here (which then exposes the git
URL).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-13 09:14:48 -07:00
Dirk Hohndel
ef95bd9a27 Indicate that there are unsaved changes with a '*' in the window title
This seems to be a fairly common way to indicate this property.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-12 10:21:16 -07:00
Dirk Hohndel
4d06e8f7b5 Cloud storage: check connection before connecting
libgit2 takes forever (a minute or so) to figure out that it can't connect
to a remote server.
So if we are using https as connection protocol, quickly check utilizing
RFCs 2324/7168 to make sure we can reach the cloud server (and not some
captive portal or something).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-12 09:22:36 -07:00
Dirk Hohndel
490d21806e Cloud storage: Setup http proxy for git connection
At the time of this commit support for this feature has not landed in
upstream libgit2, yet (but there is a pull request). Yet supporting this
here doesn't appear to cause any issue with older versions of libgit2,
either, so the http proxy support will simply not work when enabled and a
version of libgit2 that's too old is used.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-12 09:22:27 -07:00
Dirk Hohndel
57507cfb93 Cloud storage: implement confirmation of email address via PIN
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-09 17:04:30 -07:00
Dirk Hohndel
d0b5f355ab Move helper function to the appropriate file
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-06-01 13:09:45 -07:00
Tomaz Canabrava
d84ffa8fc3 Move WeightModel to qt-models
One more step to make it easyer to port the app to Mobile.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-05-29 14:11:12 -07:00
Tomaz Canabrava
f432b764e7 Move DivePlannerModel and CylinderModel to qt-models
Still trying to make it easier for the Mobile Port:
This patch is a bit bigger than I hopped, but it was the smallest that I
could get.

A lot of TODO items where added where I broke the code because the current
implementation would break the QML implementtion on the designer. I'll
most probably fix those myself when I finish the transition to the models
to the new folder.

I only moved both models at once because there's an interdependency
between them (seems inevitable, tough, but I'll take a better look at it
later).

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-05-29 14:09:13 -07:00
Robert C. Helling
44f5a72822 Allow a comma in decimal GPS coordinates
this is the format used by Google maps and thus this...

Fixes #875

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-05-26 12:14:40 -07:00
Tomaz Canabrava
660459461c Remove support for QT4 (part 3)
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-05-24 09:37:23 -07:00
Robert C. Helling
187f7dab9f Add option to display GPS coordinates as decimals
This adds a field to the units preferences to have GPS coordinates
show as decimals (as for example Google maps does it).

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-05-20 10:34:10 -07:00
Robert C. Helling
757c4aab20 Allow images to be added via the web
This adds a new divelist context menu entry which asks for a URL. The file
is retrieved and if it is an image it is added to the cache and the url
is associated to dives as with local files.

NB this currently only works with URLs pointing directly to images. But it
should not be too hard to add the possibility to add a direction via an html
file and its image tags.

To test: open dives/test43.xml and delete the image and then add the URL
http://euve10195.vserver.de/~robert/wreck.jpg

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-24 09:36:21 -07:00
Robert C. Helling
a0a3c6ec15 Cleaning up variable names in image loading
Use more explicit variabel names and make the get timestamp function actually
return the timestamp rather than getting a pointer argument

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-24 09:35:35 -07:00
Robert C. Helling
57192063c4 Protect writing to image hashes with a mutex
Hopefully...

Fixes #861

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-30 13:03:56 -07:00
Robert C. Helling
6b3b50cc2f Load remote images
When loading an image by filename and by hash fails, try to interpret
the filename as URL and download the image.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-16 12:42:36 -07:00
Jan Darowski
7d37a3f5a6 Refactored image timestamp checking.
Seperated getting image timestamp from picture_load_exif_data() and
ShiftImageTimesDialog::syncCameraClicked() into picture_get_timestamp()
and seperated checking timestamp from dive_create_picture() to
dive_check_picture_time().

Signed-off-by: Jan Darowski <jan.darowski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-15 15:47:23 -07:00