Commit graph

2681 commits

Author SHA1 Message Date
Dirk Hohndel
1a1cbc296b Quick whitespace cleanup
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-17 08:06:11 -07:00
Robert Helling
9ddef367b5 Improvement for various bits of the planner
Rewrite of the actual planner logic. Now ascend to the next potential stop
depth. There the state is cached and we try to ascend to the next stop
depth. If we hit the ceiling while doing that we go back to the cached
state and wait there for a minute. Then we try again. Then loop.

Converted all depth related variables from unsigned int to int. During
planning, in a time step the current depth can temporarily be negative and
comparisons of a negative int with an unsigned it have not the result I
expected ( (int) -2 < (unsigned int) 3 turns out to be false). And we
don’t really need the 32nd bit that unsigned buys us for depths.

Deco stops are now shown in the same table as manually entered stops in
boldface (I removed the second table to save screen estate).

The gas shown in the table is still misleading as it means the gas used on
the segment leading up to that event.

The update of the profile only works partially upon changes in the list of
available gases.

Treatment of various gases is basically there but needs some more love.

The ascent velocity is now provided by a function that takes the current
depth as argument. Currently it always returns 10m/min but that will later
be variable (and hopefully user configurable).

The profile is not redrawn while deco is computed (avoiding an infinite
recursion).

The table got a new column for the duration of a segment while the old
“duration” column was renamed “Runtime” to reflect what it actually shows.
Currently, only the run time but not the duration are editable.

All deco gases are used from the depth where their pO2 is 1.4bar. This
should become more flexible.

Calculation of the pressure drop in cylinders without configured volumes
is suppressed. This solves a problem with the planner crashing when saving
a dive where not all cylinders had been manually given a volume.

[Short rant break: Treating 0/0 as air bites back at so many places. E.g.
Cylinder data is initialized with memsetting the whole structures to 0.
Then later suddenly this totally unconfigured cylinder is being treated as
it would contain air. Maybe at some point this was a feature. But it lead
to a naughty bug which took me over an hour to resolve. We should
seriously reconsider this choice and better move to 209/0 being air if
changing this everywhere is not too much trouble]

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-17 07:29:44 -07:00
Gehad Elrobey
8380f09619 Renaming the prefs struct members to be consistent with the QSettings.
-Renaming prefs members for consistency.
-Changing references of QSettings to the prefs structure instead.
-Removing unused functions in pref.h were left over from an old version.
-Changing the data-type of bool members to short for consistency with other members.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-16 13:09:55 -07:00
Andrey Zhdanov
4bd4c01108 UI adjustments in Print Dialog Window
- move buttons to the bottom of the window
- use QDialogButtonBox that allows to follow platform-dependent button layout
- enlarge window size to not to crop content
- change "Close" button action from "accept" to "reject"

Signed-off-by: Andrey Zhdanov <andrjufka@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-16 12:17:49 -07:00
Willem Ferguson
1b6d4f55df Use Luisa's new icons
Move the heart rate graph icon up in the toolbox with the cluster of
buttons that control graphs

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-16 12:10:41 -07:00
Dirk Hohndel
f7a327077b Simplify code
This seems like a rather obvious optimization...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-14 23:21:09 -07:00
Dirk Hohndel
e5967dd193 Make red ceiling work
The existing code for toggling the DC reported ceiling in red or "surface
color" clearly had never been tested.

This seems to create a reasonably attractive implementation - not exactly
what we had in the past, but good enough.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-14 22:52:22 -07:00
Venkatesh Shukla
3abcde9a2a Add option to save userid in data files
The userid of Subsurface Webservice can be included in locally saved xml
files and git repository.
For xml files, it is stored in userid tag. For git repo, it is stored
in 00-Subsurface file present in the repo.
Preference dialog and webservice dialog modified to include option
for saving userid locally.

In case of difference in default userid and userid in local file,
some semantics are followed. These can be referred to here:
http://lists.hohndel.org/pipermail/subsurface/2014-April/011422.html

Fixes #473

Signed-off-by: Venkatesh Shukla <venkatesh.shukla.eee11@iitbhu.ac.in>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-14 09:40:30 -07:00
Yosef Hamza
ad9eb73d73 Mark Air/Water temp field red for wrong input.
As a warining for the user mark the field red.
If the user inputs invalid input that will be ignored
while parsing.
But with adding a one character error margin to prevent it from toggling
between Red and Yellow while editing existing values, for example "After
Deleting unit and last number after '.'"

Signed-off-by: Yousef Hamza <jo.adam.93@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-14 05:16:31 -07:00
Gehad
f46e2803eb Remove some unneeded explicit paths in includes
The include path is set up correctly so we don't need these explicit paths
in includes.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-11 07:21:21 -07:00
Gehad elrobey
cdf83f5ef6 Change some references of QSettings to the pref struct.
After adding the animation member in the preference struct, it is
very resonable to change these references of QSettings to the
preference structure instead.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-11 07:21:15 -07:00
Lakshman
6a8d929876 Feature to show or hide heart rate graph
Adds new push button "HR" to the button bar on the dive profile to
toggle display of heart rate.

TODO: New icon for the heart rate button is needed.

Fixes #485

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-10 09:21:43 -07:00
Willem Ferguson
4c627ddb30 Change position of heart rate labels on y-axis
The lettering of the heart rate numbers on the lefthand exis "fall off"
the left hand of the profile panel when the panel is a bit narrow. This
minute change moves the letters a bit closer to the Y-axis so that their
left-hand extreme is more or less in line with those of the depth-labels
on the Y-axis. This is a partial response to Ticket # 484.

See #484

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-07 13:24:08 -07:00
Gehad
3125e0e695 Fix incorrect behavior in preference window
When doing some changes in the preference window and clicking "Apply", the
'Close without saving' button is supposed to restore the previous values.
However some fields were not restored correctly.

- The Animations Slider was never restored to its initial value.
  (A new member in the pref struct was added - pref.animation)

- The 'Font' and 'Font size' were restored correctly to the previous
  values but their effects weren't restored to the UI and that required to
  open the prefrences window again and press ok.

Fixes #481

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-07 13:06:15 -07:00
Willem Ferguson
dcee5d4c0a Preferences: Change of text for unused cylinders.
The present text for configuring the display of unused cylinders simply reads:
"unused cylinders". This is now changed to "Show non-used cylinders in
Equipment Tab". The latter wording is much clearer to the average user.

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-07 10:07:24 -07:00
Anton Lundin
63943371bd Rely on ENABLE_PLANNER to enable the planner
The removal of the planner menu entry was erroneously commented out.
Other parts of the code rely on ENABLE_PLANNER to know if the planner is
enabled or not so rely on it here to.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-05 16:12:17 -07:00
Venkatesh Shukla
62e4c4069b Fix divelogs.de upload error
The order of arguments to fread was incorrect.
In case of arguments "streamsize, 1" the returning value is 1, and
hence due to membuf[streamsize] = 0; line, membuf ends up being one
character long.
Fixed it by exchanging arguments to "1, streamsize". This way,
streamsize has the correct value.

Fixes #483

Signed-off-by: Venkatesh Shukla <venkatesh.shukla.eee11@iitbhu.ac.in>
Acked-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-05 13:30:16 -07:00
Lakshman
ecc8c1d995 Remove check option to show units in text label
Currently the feature to show temperature units while adding dive is
provided through checkbox in preferences->units section. This patch
disables this checkbox and always enables this feature.

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-05 13:27:53 -07:00
Dirk Hohndel
9a0e40b456 Random small whitespace cleanups
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-03 12:52:05 -07:00
Yosef Hamza
0f5664e584 Edit name option for bookmarks
Add the option to edit the name of a bookmark to be more meaningful for
the user they prefer.
It works just as simple bookmarks and can be removed and hidden.
It won't accept names longer than 22 characters because longer names will
display as garbage text.
Also changed the code from displaying flag depending on event name to
depending on event type.

Signed-off-by: Yousef Hamza <jo.adama.93@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-03 12:49:22 -07:00
Dirk Hohndel
3485c6c260 Correctly handle dive selection after editing dives
It's a tricky problem as we need to remember this across a divelist sort
(as the user might have edited the date / time). The old code made not one
but two incorrect assumptions.
a) it assumed that the added or edited (but previously manually added)
dive was the last one in the dive list (clearly wrong when adding a dive
that has an earlier date)
b) it ignored the fact that refreshDisplay() would select the top dive in
the list if no dive was selected

This patch addresses both of them and makes the code easier to understand.

Fixes #480

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-03 10:26:48 -07:00
Gehad
71afa05b84 Adding shortcut key sequence to the worldmap exporter
Adding Shortcut (Ctrl+H) to the worldmap exporter for consistency with
the other commands in the file menu

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 19:05:57 -07:00
Dirk Hohndel
59912568d0 Only create UpdateManager once it is needed
Instead of unconditionally creating the object at program start let's
create it the first time we need it. That should avoid adding more and
more delays at program start (not to mention the usually unnecessary
memory use).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 12:56:14 -07:00
Dirk Hohndel
4ee94167f1 Update manager: report Linux separately
I know the plan is to do much better OS detection - but at least Linux in
general should be called out and not be treated as "unknown".

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 12:55:33 -07:00
Joshua Joseph
ede6a38bcf Add "Check for updates" Feature
This patch adds a check for updates feature.

It connects to http://subsurface.hohndel.org/updatecheck.html to check for
any new versions. It then prompts the user with a download link if an
update is available.

Signed-off-by: Joseph W. Joshua <joejoshw@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 12:47:41 -07:00
Anton Lundin
5cec965cb7 Make divelist header corrections Mac specific
The +10 pixels fix was introduced to fix some layout issue on Mac ways
back, but it breaks things on Android. This makes sure this only gets
applied when build for mac.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 12:44:49 -07:00
Lakshman
4722104e1c Add missing REMOVE slot
Model derived from tableview is expected to have remove slot,
which is missing in DivePlannerDisplay currently. This patch fixes
the annoying warning message while starting Subsurface because of
not including remove slot.

Currently there is lot of work to do, that either requires modifying
the model to skip 'remove' slot or find a way to make them inactive.

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 10:21:02 -07:00
Lakshman
b629905ec5 Make compute waypoints content uneditable
Currently user can edit content in compute waypoints table
(in PLAN mode), ofcourse this does not trigger any calculations in
the code, but user cannot see the content he needs to see after edit.
This patch makes the content uneditable.

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-02 10:16:06 -07:00
Tim Wootton
c6ceab4fec Use term cylinder not tank to be consistant.
The terms tank and cylinder are used interchangably both in
diving and in the code, but in the UI we should be consistant in
what we display to the user.

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-01 11:13:15 -07:00
Dirk Hohndel
0de21c24fa Merge branch 'planner-mods'
Nothing exciting here, just a few independent changes close to each other.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-31 22:18:00 -07:00
Lakshman Anumolu
18ec989ef5 Diveplan with entered and computed waypoints to UI
Recently Robert Helling provided a patch "Distinguish between entered and
calculated waypoints" in an attempt to distinguish between entered and
calculated stops.

This patch is an independent (content wise) extension of the above
patch and is built relative to it which adds new table to display
computed waypoints in plan mode.

Currently table includes only two columns "Comp. Depth" and "Comp.
Duration", which can extended to show further information.

This is only a start to the UI interaction in PLAN mode.
In addition to this there are many TODO things that diveplan feature
demands

TODO:
1. Show more details through "Computed Waypoints" table.
2. Remove tooltip from "Computed Waypoints" table widget.
3. Make contents in "Computed Waypoints" table widget non-editable.
4. Fix error when trying to save dive plan without using cylinder data.
5. Make dive plan editable after saving it.
6. Improvise dive planner graphics window.

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-31 22:01:16 -07:00
Robert C. Helling
30bdfc8160 Distinguish between entered and calculated waypoints
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-31 22:01:05 -07:00
Gehad
0cd9d09410 Exporting a World-Map
This patch adds the world map exporter.

- add worldmap-save.c that writes the html to the file
- use Google maps v3 API to put the place marks on the map
- add worldmap-options.h to contain some settings for the JS which will
  make it easier for those to be changed
- add save HTML action in the mainwindow user interface

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-30 15:52:32 -07:00
Lakshman
7696fbf9cd Toggle showing average depth
Add additional check box in "preferences->graph" section that allows
users to hide average depth on dive profile.
By default this option is checked to show average depth.

Fixes #475

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-28 09:38:08 -07:00
Lakshman
df7d7d4981 Fix redundant spaces in info panel
Remove redundant spaces from dive master and buddy list fields.
Ticket also mentions about similar space behaviour in tag field, which I
couldn't reproduce.

Fixes #476

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:23 -07:00
Lubomir I. Ivanov
d2f1a02523 Profile2: hide the tooltip and ruler if we are printing
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:22 -07:00
Lubomir I. Ivanov
47c0ddbf30 Print: enable printing with the new profile
Some weird things happen if we use a local instance of the
ProfileWidget2 class in printProfileDives(). Once we
exit the printing dialog the profile crashes, which could
hint of singleton issues.

Instead we are going to use the already active instance of
the class which we can retrieve from MainWindow. This should
also be faster because the class is pretty heavy.

In such a case the cleanup at the end of printProfileDives()
is still relevant (removed in ac9a23ef3b). First we
resize the widget for printing purposes and then resize it
back to the original values and re-plot the current selected
dive in the dive list.

Fixes #477, #478

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:22 -07:00
Lubomir I. Ivanov
b3f6a4f994 Profile2: add use of the isGrayscale flag when getting a color
getColor() has a default argument for grayscale set to false.
With this patch we pass it the local isGrayscale flag, which
can only be set during printing.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:22 -07:00
Lubomir I. Ivanov
06a1cb0975 Profile2: add some print related flags
Some flags like printMode and isGrayscale are missing yet needed.
The flag printMode is required so that we know *when* to hide
certain elements such as the ruler and tool tip (e.g. not needed
while printing).

isGrayscale should be passed to all getColor() calls, so that
the greyscale color table is respected.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:22 -07:00
Lubomir I. Ivanov
ac23d7397f Ruler: fix bad scaling for the text background
The ruler text's white background scales badly. This patch
adds the ItemIgnoresTransformations for the textItemBack
object and matches the dimensions and position of the
textItem object in front of it.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:22 -07:00
Jan Mulder
486db77ac8 Repaint ruler when enable/disabling it
Repaint ruler when enable/disabling it.
Straightforward replot() added.

Fixes #479

Signed-off-by: Jan Mulder <jlmulder@planet.nl>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:58:22 -07:00
Anton Lundin
198199adae Remove printing when building for Android
Qt for Android doesn't support printing.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:42:07 -07:00
Anton Lundin
605cff32a5 Remove usermanual when building for Android
Our usermanual is based on webkit, and thats not supported in Qt for
Android. We should probably replace it with a Android native webview
somehow.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:41:52 -07:00
Anton Lundin
770bf9afba Introduce NO_MARBLE define, make GlobeGPS a dummy
Some users have requested a way to build subsurface without marble.

This hides all traces in the ui and creates a GlobeGPS-dummy thats
just a QLabel saying that marble is disabled, in case its shown
somehow. The dummy is there so we can just ignore the fact that marble
is disabled in the rest of the code.

Fixes #394

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-27 10:40:06 -07:00
Alberto Corona
027ffc41bb simplewidgets: Include stdint for cross compatability
Not including stdint leaves 'int64_t when' without a type and undefined when
compiling for Windows with mingw

Signed-off-by: Alberto Corona <albcoron@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-25 11:19:56 -07:00
Jan Mulder
fe2ad15603 Redraw profile when manipulating cylinders
Manipulating cylinders, especially changing the exact gas content (o2,
he), changes the pp02, ppHe graphs. This patch simply replots the profile
in case of cylinder change at time of saving.

Signed-off-by: Jan Mulder <jlmulder@planet.nl>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-25 07:53:37 -07:00
Anton Lundin
fc13361079 Don't crash if we try to save a empty plan
Just treat it as a cancel instead.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-23 17:24:42 -07:00
Anton Lundin
8bc2ad1473 Enable parts of planner based on define
In bf205726 DEPTH/Switch at was disabled by commenting out that code.
This puts it back behind ifdefs

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-23 17:24:40 -07:00
Yosef Hamza
d4a1932276 Divemaster and Buddy fields auto-completion are not saved
The added characters by auto-completion "for the last item"
isn't saved when using Return to save it "works well with
tab"

Fixes #469

Signed-off-by: Yousef Hamza <jo.adama.93@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-23 17:20:03 -07:00
Anton Lundin
9cfc585563 Fix system default font handling
We didn't care about system default fonts and sizes, we just used the Qt
default font.

Due to how QFont is constructed, there was need to split font and font
size.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-21 21:30:39 -07:00
Jan Mulder
41209005c9 Make pp graphs visible at startup according to settings
Changeset a90818671 introduces a small inconvenience. The pp graphs at
startup are not shown according to the visibility settings. Requiring to
toggle the icons to show the desired pp graph.

Trivial fix.

Signed-off-by: Jan Mulder <jlmulder@planet.nl>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-21 21:29:22 -07:00
Gehad
8ca4437624 Add current time and adjusted time to gui when adjusting dive's timestamp
This patch adds the current dive time and the adjusted time to the time
shift window. I added a function to dive.c to get the timestamp of the
first selected dive.

This will view the time of the first selected dive only even when multi
dives are selected but it does change the times for multiple dives
properly.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-21 21:26:09 -07:00
Gehad
cc2369c5f9 Make esc-key discard the new tag selection
Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:54:58 -07:00
Hugle
2ca6009dfa Removed Duplicate Includes
Signed-off-by: Hugle <wulong@comp.nus.edu.sg>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:52:24 -07:00
Tomaz Canabrava
320071ac15 Better handling of keyboard on the inline edition on equipment
The handling of keyboard is broken on Qt inside QComboBoxes.
I'm trying ( and losing ) to make it less broken. This patch makes the
code work reasonably well if you press Key_down or Key_up after having
displayed the filter popup, which is different from the combobox popup for
some reason.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:49:33 -07:00
Tomaz Canabrava
6ee3a6da52 Remove a bit of space from the Axis and its labels.
This should make the layout work better on smaller screens.

Fixes #458

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:49:05 -07:00
Tomaz Canabrava
dfaa302383 Make ruler respect dive depth.
The only place on the code that the y() position didn't accompanied the
dive-depth was this one, so let's see if this patch fixes it.

See #455

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:48:34 -07:00
Tomaz Canabrava
5b497b5655 Don't create then set, do both at the same time.
When we create, then set the value of a variable, we are wasting cycles
and making the code more verbose.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:48:19 -07:00
Tomaz Canabrava
ec2ea7ec3a QString starts empty, do not set "" as empty string.
Let's not be evil by creating "" as empty strings inside of the code,
really.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:48:10 -07:00
Tomaz Canabrava
30770f5d85 Do not copy strings when you don't need it.
This patch removed the use of copy-constructors on the QString to use the
const-references. Even knowing that the QString is a refcounted class,
let's not get that bad habit.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:47:57 -07:00
Tomaz Canabrava
3d83c48c49 Code Cleanup
The offending code is line-by-line equal to the completion highlited
method, so why make it duplicated? Call that method instead.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:47:43 -07:00
Anton Lundin
519f45416f Enable posibility to add dives to trip below
When I'm on a dive trip i usually download dives multiple times to start
logging them while i still remember them. When i have already created a
trip and downloads new dives they needs to be able to be added to the
already existing trip, without relying on autogroup.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-20 09:40:28 -07:00
Linus Torvalds
a29c4ddba3 git object store: make it possible to work with checked-out git branches
This makes the git object save logic also check out the changes in the
working tree and index if the branch we save to is checked out.  It used
to be that we would just update the object store (and the branch ref, of
course), but leave any checked-out state untouched.

Note that if the working directory is dirty (ie you have made changes by
hand and not committed them), the checkout will skip any dirty files and
report it as a warning to the user.  However, the save still succeeds
(since the _real_ save goes to the backing store).

NOTE NOTE NOTE! Both loading and saving very fundamentally work on the
git object store level, and if you are working with a checked-out branch
and make modifications to the working tree, saving will not touch those
dirty files (so that you can try to recover your edits manually in the
working tree), but it's worth pointing out that subsufrace loading state
will totally ignore the working tree.

So the only way to make subsurface *see* your changes is to commit them.
Having edited state checked out in the working tree will only confuse
you when subsurface first ignores it on reading, and then refuses to
touch the checked-out state on writing.

Put another way: working with a checked-out branch is now _possible_,
but you need to be aware of the limitations.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-19 14:32:27 -07:00
Lubomir I. Ivanov
71f2fd91b5 Profile2: fix widths on some lines for Qt5
Qt5 uses different widths for some of the poly. lines
in the profile. Setting an explicit value fixes that.

Tested-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-19 09:37:12 -07:00
Gehad
fdf6f3cd4e Make Up/Down arrows work with tags
When using Up/Down arrows to scroll the tag list it always selected the
first item in the list and doesn't scroll.

Fixes #468

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-19 09:33:59 -07:00
Gehad
f2238300ef Saving edits requires to move focus first
After editing values in cylinders or weights hitting save will not save
the changes to save the edit one must move the focus to a different
field first this is fixed by losing the focus before saving the changes

Fixes #412

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-19 09:27:04 -07:00
Lubomir I. Ivanov
6d6721dc9b Profile2: use unsigned int for the divecomputer number
display.h: dc_number is unsigned int, thus a couple of warnings
may pop-out.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-18 11:56:06 -07:00
Hugle
a908186716 Clear PN2 PO2 PHE GasItem
After the dive log has been closed, the ProfileWidget2 does not clear
the pn2 po2 and ph2 gas line.

This patch cleared the three lines after dive log closed.

Acked-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Hugle <wulong@comp.nus.edu.sg>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-18 11:49:57 -07:00
Anton Lundin
17a675367d Translate using tr() to be Qt5-compatible
There are no utf8 in those strings, and we can translate them as
everything else with tr() instead.
QApplication::UnicodeUTF8-part is deprecated and removed in Qt5.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-17 20:37:41 -07:00
Anton Lundin
f8d30ae528 Make dc_number defined when using it
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-17 20:37:38 -07:00
Anton Lundin
0a762334e2 Add forward declaration of QSettings
Its needed for Qt5

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-17 20:37:33 -07:00
Linus Torvalds
37794e2e23 Be more careful about dive computer selection
The selection logic was a bit random: some places would return NULL if
the dive computer index was out of range, others would return the
primary dive computer, and actually moving between dive computers would
just blindly increment and decrement the number.

This always selects the primary computer if the index is out of bounds,
and makes sure we stay in bound when switching beteen dive computers
(but switching between dives can then turn an in-bound number into an
out-of-bounds one)

Fixes #464

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-17 10:53:49 -07:00
Dirk Hohndel
60ceb8ebc1 Silly change to a comment
I had intended to amend the previous commit with this before pushing it
out. This changes the comment that pointed out the bug that the previous
commit fixed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-17 10:53:12 -07:00
Dirk Hohndel
33b1b0ed9d New profile: fix event hiding logic
Turns out we unconditionally set all events as visible when redrawing the
dive - even with a comment that this should take into account if the event
is visible. Oops.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-16 15:11:35 -07:00
Dirk Hohndel
401aa210ff New profile: add event manipulation to context menu
This got lost when we switched to the new profile.
Remove event works. Hide events does call hide() on the DiveEventItem but
for some reason it stays visible. I'll hope for one of the more
experienced Qt people to fix that.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-15 21:12:34 -07:00
Dirk Hohndel
cb41f34826 Don't put cylinder widget in edit mode if deletion of cylinder failed
If the user tries to delete a cylinder that is in use and that action is
rejected, the cylinder widget (and the whole dive) should not be put into
edit mode. After all, nothing changed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-15 15:38:10 -07:00
Dirk Hohndel
36ba353450 Correctly check if tank is in use
We always checked if the tank was in use by the planner / dive editor -
even if we were not in dive edit mode.

With this patch, when not in dive edit mode, we check our cylinder "used"
flag instead.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-15 14:56:32 -07:00
Jan Mulder
aa0cd792bb Bugfix: generalize pp graphs to allow for multi over-threshold periods
Especially in O2 decompression parts of a dive, the pp02 is typically very
close to the threshold value (normally 1.60 bar). The old implementation
of the pp profile graphs assumes that there is exacty 1 consecutive set of
samples that needs to be in the "warning color". This results in an
erroneous display of the mentioned graphs, connecting multiple episodes of
too high pp with bogus lines in between.

This fix generalizes the pp graph logic to allow for multiple segments of
high pp, each to been drawn seperately in the "warning color".

Signed-off-by: Jan Mulder <jlmulder@planet.nl>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-15 12:07:34 -07:00
Dirk Hohndel
8650a6ef6c Make "save changes" dialog modal
This definitely seems to be a good candidate for a modal dialog.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-14 16:01:09 -07:00
Linus Torvalds
609715ab69 Convert other users of showError() to the new world order
The "report_error()" interface is a lot simpler, although some of the
C++ code uses QStrings which make them a bit annoying, especially for
the varargs model.  Still, even with the explicit conversion to UTF8 and
"char *", the report_error() model is much nicer.

This also just makes refreshDisplay() do the error reporting in the UI
automatically, so a number of error paths don't even have to worry.  And
the multi-line model of error reporting means that it all automatically
does the right thing, and reports errors for each file rather than just
for the last file that failed to open.

So this removes closer to a hundred lines of cruft, while being a
simpler interface and doing better error reporting.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-14 12:36:06 -07:00
Linus Torvalds
ec33a95ad0 show the error string in the GUI rather than stderr
This makes the error string just be an internal "membuffer", which the
GUI can fetch and show when errors occur.  The error string keeps
accumulating until somebody retrieves it with "get_error_string()".

This should make any write errors actually show up to the user.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-14 10:49:56 -07:00
Linus Torvalds
b5d0cfd557 propagate save errors further, don't mark divelist unchanged
This at least avoids marking the dive list as unchanged on a failed
write, and propagates the error further up the stack.

We still don't show the error string in the GUI, though.  I'll start
doing that next, I think.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-14 10:49:53 -07:00
Linus Torvalds
3fe0019bc2 git object format: make sure parenthood isn't lost when saving
This makes subsurface remember the git source commit of the dive data.

If you save to an existing branch, subsurface will now complain and
refuse to save if you try to save if the existing branch is not related
to the original source.  That would destroy the history of the dive
data, which in turn would make it impossible to do sane merging of the
data.

If you save to a new branch, it will see if the previous parent commit
is known in the repository you are saving to, and will save parenthood
information if so.  Otherwise it will save it as a new parentless commit
("root commit" in git parlance).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-13 20:48:31 -07:00
Dirk Hohndel
ae2f18678d New profile: fix Information overlay location
By simply storing the coordinates based on the scene (instead of trying to
map them to real coordinates) the overlay position is correctly restored.

Also remove the redundant positioning before readPos is called.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-13 10:28:15 -07:00
Lubomir I. Ivanov
5b3dab719e MainWindow: maintain one window instance of the yearly statistics
This is a bit tricky because we are using a plain widget for
a window and don't have a class for it (req. more source files).
Also for the table model to update we need to create a new
YearlyStatisticsModel instance each time. At least, in that regard
we can re-create the model each time refreshDisplay() is called.

This patch adds a couple of private variables that are used
to manage the memory of the yearly statistics model and window
and also close that same window on MainWindow::closeEvent().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-12 12:12:13 -07:00
Lubomir I. Ivanov
4abe9d5c8b Profile2: place the ruler and tooltip on top (Z order)
The topmost Z order of items in the profile should be:
- background (poster / logo)
- toolTipItem
- rulerItem
...

This mostly fixes the ruler being under other elements.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-12 11:25:23 -07:00
Lubomir I. Ivanov
f2bfc72648 Ruler: change how the ruler text drawing works
A couple of problems with the ruler:
- the rotated text doesn't look very well at all and interpolation doesn't
  help it much
- measuring towards the right most part of the profile makes the text go
  out of the screen

To solve these issues and attempt to improve the ruler this patch does the
following:
- place the text at the bottom of the lowest of the start and end points.
  this way the line will never intersect with the text
- clamp the x position, so that the text doesn't ever leave the screen
  horizontally
- place a white background behind the text so that it will cover text and
  graphics under the ruler item

(TODO: place the ruler on top of everything else)

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-12 11:24:20 -07:00
Lubomir I. Ivanov
7ee1884f6e Make some dialogs modal to MainWindow
For most dialogs it would be much safer to make them Qt::WindowModal to
the parent (MainWindow).
For now we are not doing this for the preferences dialog as there are
situations where the user might want to be able to move it around and even
interact with the main window.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-12 10:14:17 -07:00
Tomaz Canabrava
9cc942376e Only anim if not first dive when openning subsurface with a divelog.
The animation appeared when the user started subsurface with a default
file, wich was a little annoying since it didn't had a 'from' position
to go and it was also increasing it's size on some window managers
that do subtle windows animations when a program starts. This patch
treats the first dive opened when the program loads with a divelog pa
rameter differently as the following ones storing the velocity value
on a temporary, and reassigning it later.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-11 17:42:42 -07:00
Tomaz Canabrava
751c76a578 Support save / load for the Animation Speed on the Preferences
User can now fine-tune the animation speed on the preferences,
a value of zero disables it completely.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-11 17:41:41 -07:00
Tomaz Canabrava
9f37bac07a Support Animation Speed via Settings.
This is very userfull for a ( yet to be implemented )
preference dialog about the animation speed, so the
user can enable / disable the animations or make it a bit
faster for it's taste.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-11 17:41:41 -07:00
Lubomir I. Ivanov
466f160c01 Profile2: provide means to disable the tool buttons
Once the poster is displayed when there are no dives in the list,
we may also want to disable the QToolButtons (PO2, SAC, etc..),
until a new dive is loaded and the profile is redrawn.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-11 11:30:31 -07:00
Lubomir I. Ivanov
b382228b7d MainWindow: close all windows once we close the main one
This is useful if we have more non-modal windows and we want
them simply to close with the main one without explicitly
creating class member variables to point to such instances.

A practical example would be the debug window created in
ProfileWidget2() (diveDepthTableView) which holds
the depth profile values.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-11 11:25:46 -07:00
Lakshman
6e4466aa0a Show temperature units in the label when editing dive
Currently when user wants to add a new dive information,
the ways to know what unit system is being used are

 - Through preferences panel.
 - Save the dive information, which displays units in
   the text field.

This patch provides an option to the user to show current
unit system by displaying the unit on the side of the label
when the user is editing the fields.

This feature can be enabled or disabled by using the new
checkbox option i.e. `Show units in text labels` included
in `preferences->units` section.

Signed-off-by: Lakshman Anumolu <acrlakshman@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-10 21:10:27 -07:00
Linus Torvalds
eb47b2a8d8 Get rid of crazy empty tag_list element at the start
So this is totally unrelated to the git repository format, except for
the fact that I noticed it while writing the git saving code.

The subsurface divetag list handling is being stupid, and has a
initial dummy entry at the head of the list for no good reason.

I say "no good reason", because there *is* a reason for it: it allows
code to avoid the special case of empty list and adding entries to
before the first entry etc etc.  But that reason is a really *bad*
reason, because it's valid only because people don't understand basic
list manipulation and pointers to pointers.

So get rid of the dummy element, and do things right instead - by
passing a *pointer* to the list, instead of the list. And then when
traversing the list and looking for a place to insert things, don't go
to the next entry - just update the "pointer to pointer" to point to
the address of the next entry. Each entry in a C linked list is no
different than the list itself, so you can use the pointer to the
pointer to the next entry as a pointer to the list.

This is a pet peeve of mine. The real beauty of pointers can never be
understood unless you understand the indirection they allow. People
who grew up with Pascal and were corrupted by that mindset are
mentally stunted. Niklaus Wirth has a lot to answer for!

But never fear. You too can overcome that mental limitation, it just
needs some brain exercise. Reading this patch may help. In particular,
contemplate the new "taglist_add_divetag()".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-10 11:36:17 -07:00
Lubomir I. Ivanov
41cec17cff Profile2: reset the zoom level when a new profile is drawn
If the user has zoomed in but then changes to a new dive,
we may want to reset the scale back to the original value (1.0)
based on the current zoomLevel, so that the profile is not stuck
in zoomed mode.

This patch adds a snippet that resets the QGraphicsView scale,
zoomLevel variable and also the toolTip position.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-10 09:02:31 -07:00
Lubomir I. Ivanov
324b8cbff1 Profile2: use a different image when no profile is visible
This patch adds a new image resource named poster.png which,
is shown instead of the 3 posters. The main reason for that
is due to the poster text not being visible. This new image
is pretty much the Subsurface logo only.

It also removes the grid lines, while the poster is visible.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-10 09:02:25 -07:00
Lubomir I. Ivanov
7d9849cfed Profile2: use an implicit initializer for a struct array
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-10 09:02:01 -07:00
Lubomir I. Ivanov
0325b267ee Profile2: fix some initializer list order warnings
Such can be disabled with -Wno-reorder and are clearly
more of a nuisance, but C++98 12.6.2.5 says the order should be
the same as in the class declaration.

On theory this would only speed the compile times a tiny amount.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-10 09:01:58 -07:00
Tomaz Canabrava
a052c63b00 Fix retrieving the initial position of the Notification Area.
We had all in place, all that was missing was to actually load
the position stored on the settings for the tooltips.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-09 08:50:54 -07:00
Tomaz Canabrava
24c5b2e3c1 Code Cleanup ( that fix 2 bugs )
This code cleanup fixes the two issues that I raised on
my last e-mail. hurrah.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-09 08:50:54 -07:00
Tomaz Canabrava
5bba84e57f Fix colors on the new profile.
This patch fixes the colors on the new profile, the init of the colors map
was not being done. This fixes it.

A few problems were spotted on the new profile dealing with the ruler
graph and a newly added dive, when using the dive add dialog.

I'll be on it later.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-07 20:37:17 -08:00
Dirk Hohndel
18303b6f43 Fix compile problem
QPointer was undefined (oddly I didn't run into this when test building
earlier).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-07 10:03:03 -08:00
Tomaz Canabrava
00c97e710f Remove a Lot of Dead Code.
This is just removal of dead code from the old profile, probably there's
still a bit more to remove, but this is a very good cleanup already.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-07 08:56:06 -08:00
Tomaz Canabrava
8f43ad8100 Remove the code for the old Profile.
This is simply a code removal, nothing was touched besides the
profilegraphics.h/cpp files.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-07 08:55:22 -08:00
Tomaz Canabrava
ac9a23ef3b Remove the old profile from the main screen of Subsurface
This patch partially removes the code for the old profile from
Subsurface. It removes the use of the old profile on the mainwindow,
but keeping the code in the tree for now.

A bit of code-cleanup also entered this commit because I had to change
every instance of the code that used the old profile.

Now to the real code-cleanup

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-07 08:54:20 -08:00
Tomaz Canabrava
6dec4b0556 Fix a crash on changing dives when the ruler is used.
The ruler is a weird beast - it has two child objects that access the
parent to call another function, that call the child functions.

When I updated the plot_info I didn't take that into consideration, what
happened is that when I set the parent's plot_info, the children's
plot_info are still invalid, but the update method is called anyhow.

This patch updates all plot_info's before calling anything else.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-07 08:53:14 -08:00
Dirk Hohndel
b51dd0a84b Prevent another file descriptor leak
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-06 15:08:27 -08:00
Dirk Hohndel
c64227efe0 Fix real memory leak
We can't keep the cache around (even though it's tempting) as the next
iteration might change the start time of the planned dive or other
parameters which would make the cached data invalid.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-06 14:26:33 -08:00
Dirk Hohndel
4f4fff3917 Null terminate buffer at the correct spot
fread tells us how many bytes it read.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-05 18:55:41 -08:00
Dirk Hohndel
1b103c5c69 Another small tweak to whitespace tool
clang-format doesn't appear to reindent multi line #define statements
correctly - so this hopefully will clean those up.

The included whitespace corrections to the code should stay in place when
using the updated tool.

This includes cleaning up some multi-line comments that were messed up the
last time around as well as a few other minor changes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-05 13:02:23 -08:00
Willem Ferguson
480280937a Changes to icons in profile panel
- Replace dustbin icon.
- Replace NDL/TTS tool tip with "Show NDL / TTS"
- Create tool tip for scale icon: "Rescale depth axis"

Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-04 12:59:17 -08:00
Willem Ferguson
8518348304 Reorganise buttons in profile panel
- Move the buttons of the profile window around to have more sane positions.
- All the buttons affecting the ceiling(s) are now grouped together.
- All the buttons affecting the Information Box are now grouped together.
- The previous icon for "Show calculated ceiling" has been reassigned to
  "Show all tissues"
- A new stand-in button hav been included for "Show calculated ceiling"

Signed-off-by: Willem Ferguson <willem@willem-Precision-M4700.(none)>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-04 07:54:52 -08:00
Dirk Hohndel
2513410132 Fix possibly uninitialized value
I'm not sure about this one. It's possible that there's something
happening behind the scenes that I don't understand. But let's just
initialize this to 0 and be sure.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 22:21:33 -08:00
Dirk Hohndel
f693bbd7a0 Don't use error after free
We need to reset the error pointer to NULL for this to work.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 22:11:24 -08:00
Dirk Hohndel
d24d2288f3 Remove pointless assignments
tissue_tolerance wasn't used after it was assigned.
type was overwritten after it was assigned.
serial was overwritten after the last /= 100.
event is assigned in the for loop.
clear isn't used after the assignment

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 21:40:56 -08:00
Andrey Zhdanov
64b7a3b85f Depth widget minor UX improvement
Decrease depth by tapping left part of widget. Icon is showing "up" (i.e. closer to surface).
Increase depth by tapping right part of widget. Icon is showing "down" (i.e. deeper).

Fixes #354

Signed-off-by: Andrey Zhdanov <andrjufka@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 13:33:03 -08:00
Dirk Hohndel
7c535452f9 Whitespace cleanup
Minor change to the perl postprocessing script and resulting changes to
the affected source files.

This deals with two issues:
- "foreach"-like structures were not always treated correctly
- some longer calculations that ended on "+ constant" were reformatted in
  a rather unatractive manner

In one source file (divelist.c) I ended up adding braces to the sources...
trying to cascade the indentation further down without having the block
there seemed a lot more trouble than it's worth.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 13:29:22 -08:00
Giuseppe 'ferdy' Miceli
9b0817596d Correct another typo
Non-stop Dive Limit (or No Deco Limit) abbreviation is not NTL but NDL

Signed-off-by: Giuseppe 'ferdy' Miceli <ferdy@ferdy.it>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 09:43:07 -08:00
Giuseppe 'ferdy' Miceli
3b1b01b293 Correct typo in partial pressure abbreviations
Partial pressures abbreviations should have capitalized chemical element
symbols  e.g. pn2 -> pN2

Signed-off-by: Giuseppe 'ferdy' Miceli <ferdy@ferdy.it>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 09:40:51 -08:00
Dirk Hohndel
c4f49d5075 Equivalent Air Density Depth was mislabeled
In commit c84ef319a2 ("Create a toolbox on the left side of the new
profile") Tomaz invented a new TLA: EED.

No one noticed. Oops.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-03 09:22:22 -08:00
Anton Lundin
909cfe7135 Set the prefs-value alongside the button status
Previous code just set the button-"status" based on what we stored on
the settings. This sets the corresponding value in our prefs-struct.

This fixes the same issue as in 63f7f3, without the side effect of
magically hiding the mean depth line.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-02 13:42:07 -08:00
Anton Lundin
3df506b081 Spelling fix, Its called Ndl
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-02 11:16:38 -08:00
Andrey Zhdanov
3be1358b46 Icons for new profile
Existing dummy icons are replaced with new ones for:
- o2 graph
- n2 graph
- He graph
- MOD
- EAD, EED, END
- DC reported ceiling
- calculated ceiling
- calculated ceiling in 3m increments
- SAC
- ruler

Fixes #446

Signed-off-by: Andrey Zhdanov <andrjufka@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-02 10:53:30 -08:00
Dirk Hohndel
d29d0e7a5d Revert "Switch profile button events, clicked to toggled"
This reverts commit 63f7f37e46.

For odd reasons this appears to make the mean depth line disappear. This
will require some further analysis, but for now I'll just revert it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-02 10:37:07 -08:00
Gopichand Paturi
9b07acbee8 Add Units to mean depth value
Fixes #445

Signed-off-by: Gopichand Paturi <gopichandpaturi@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-03-02 08:16:29 -08:00
Joshua Wambua
9cd3d61c11 Remove failed parses from recent files menu
This patch will remove all files that fail to parse from the recent
files menu.

Signed-off-by: Joshua Wambua <joshua@megvel.me.ke>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-28 07:51:41 -08:00
Dirk Hohndel
76e6420f6b Massive automated whitespace cleanup
I know everyone will hate it.
Go ahead. Complain. Call me names.
At least now things are consistent and reproducible.
If you want changes, have your complaint come with a patch to
scripts/whitespace.pl so that we can automate it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 20:09:57 -08:00
Tomaz Canabrava
006265d7a0 Try to fix the font issue on the ruler.
This changes the ruler a bit, I hope nobody gets offended by it. :)

The main issue is that the scene is now 100x100 pixels wide, so the font
was *really* huge. and setting itemIgnoresTransformations on the ruler
broke a lot of stuff.

I removed the code that painted the text and created a QGraphics TextItem
for that - that will hold the text for the ruler.

Then I played with the view to get the correct angle of the line, that was
in scene coordinates and thus, could not be used directly on the item that
had ignore transformation changes.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 18:57:48 -08:00
Anton Lundin
63f7f37e46 Switch profile button events, clicked to toggled
This is needed so the underlaying struct preferences prefs, will be
updated when we set the buttons to there previous state after we
loaded the settings.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 18:55:54 -08:00
Anton Lundin
619d4acb6f Remove old leftover header
This got merged into a common divelogimportdialog.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 18:55:38 -08:00
Tomaz Canabrava
a4d0f7bdb3 New profile: Make the ruler work. (caution, fonts are BIIIG )
This patch makes the ruler work again, the problem is that the fonts are
*terribly* big, I'll fix that on the next commit.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 12:03:59 -08:00
Tomaz Canabrava
0a24e13469 Remove the pInfo pointer, make it a real structure instead.
This fixes the invalid pointer stage crash.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 12:03:34 -08:00
Alberto Corona
0d62efaa39 Tune CVS import dialog
Increased vertical spacing between spinboxes and checkboxes for the manual
CVS import dialog

Fixes #448

Signed-off-by: Alberto Corona <albcoron@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 11:44:59 -08:00
Tomaz Canabrava
c356fac3b6 New profile: Toggle on / off the ruler via settings.
This patch toggles on / off the ruler via QSettings.
When the user clicks on the toolbar, this sets the settings to true /
false, in a way that if the user turns Subsurface on/ off, we still get
the last choosed option.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 10:48:47 -08:00
Tomaz Canabrava
35e102b176 New profile: add the RulerItem
This patch adds the RulerItem inside of the new profile, and already takes
settings into consideration.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 10:48:47 -08:00
Tomaz Canabrava
250653a67f New profile: DiveRuler compiles / not working yet.
This patch removes the GC macros and change the calling to use the
DiveCartesianAxis.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 10:48:47 -08:00
Tomaz Canabrava
52fe9101c8 New profile: add placeholder code for the RulerItem
This patch just creates two files for the rulerItem, a .h and a .cpp.
nothing was done to make it visible on the new profile yet - will do that
on the next commits

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 10:48:47 -08:00
Tomaz Canabrava
1695894130 New profile: connect the scale action
Just quick'n dirty glue code so that when the user clicks on the 'scale'
toolbar item, the new profile graphic is scaled.

Lovely thing: Animations for free. <3

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 10:48:47 -08:00
Tomaz Canabrava
8c56b2f45e Store zoomed plot in preferences
This patch makes the 'Zoomed Plot' a preference that can be stored and
retrieved, this way if the user sets the plot to be 'zoomed', this
information will persist even if they closed or opened subsurface again.

Also, added the 'Scale' button on the new profile, but didn't did the glue
code yet.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-27 10:48:35 -08:00
Danilo Cesar Lemes de Paula
5846ff972d Fixing default font on preference window
Default font was hardcoded as 14.
What happen if you change any other preference value is that the
application would start to use fontSize=14.

This commit loads the right value in the QDoubleSpinBox

Signed-off-by: Danilo Cesar Lemes de Paula <danilo.eu@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-26 11:51:33 -08:00
Dirk Hohndel
30b25d1212 New profile: create fake DC if we have no samples
This call got lost when creating the new plot_info structures.
dives/test15.xml is a good test case.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-26 11:43:56 -08:00
Danilo Cesar Lemes de Paula
6801c68c2d reseting progress_bar_text for new downloads
if the user tries to redownload something from its dive computer
the interface will be stuck since progress_bar_text won't be empty in
the second run.

Even if I don't really like this idea of that value being changed by
downloadfromdivecomputer.cpp and libdivecomputer.c, that value needs to
be reset by someone.

Signed-off-by: Danilo Cesar Lemes de Paula <danilo.eu@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-26 09:00:19 -08:00
Danilo Cesar Lemes de Paula
ed12902746 disable buttons while downloading
Simple patch to enable/disable extra buttons while downloading.
The UI should be blocked during the download.

Signed-off-by: Danilo Cesar Lemes de Paula <danilo.eu@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-26 09:00:19 -08:00
Giuseppe 'ferdy' Miceli
69bf64793c Adding a polite "Please" in front of the warning message.
Signed-off-by: Giuseppe 'ferdy' Miceli <ferdy@ferdy.it>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-26 08:02:38 -08:00
Dirk Hohndel
67a1e3f3e0 New profile: try to pick better HR samples for which to print number
This simply tries to pick at least local minima / maxima.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-25 14:24:09 -08:00
Dirk Hohndel
21ed18816a New profile: fix tooltip display for events
We need to use the transform() of the view, not the tooltip.

Suggested-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-25 13:58:57 -08:00
Dirk Hohndel
eb5cbf64eb New profile: small cleanup of heartrate code
Remove unused variable and correct comment.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-25 13:30:00 -08:00
Dirk Hohndel
c0e489c1ea New profile: add event info to tooltip
This appears to correctly add the tooltip to the event item, but for some
reason the tooltip isn't displayed for most events.

Still needs more work.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-25 12:27:12 -08:00
Dirk Hohndel
b5a02e50aa New profile: create new class for DiveHeartrateItem
This allows us to give it a different color (red) and make it a smaller
size.

While implementing this I also fixed the size of the temperature text in
the new profile.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-23 15:28:31 -08:00
Dirk Hohndel
76393a2f53 New profile: better positioning for the heartrate labels
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-23 14:36:47 -08:00
Dirk Hohndel
41abab7253 Calculate minimum and maximum heartrate
And setup the axis accordingly.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-23 14:32:25 -08:00
Dirk Hohndel
f5862201a8 Don't try to setup event if it is NULL
This also fixes the whitespace in a function that I instrumented to figure
out what's going on. I restored it to its original state, but I couldn't
leave the whitespace unfixed...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-23 08:35:06 -08:00
Dirk Hohndel
48db63736b Don't try to set visibility of events before they have been added
Admittedly this code doesn't do anything useful right now, but at least
have it not to anything useful in the right spot.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-23 08:33:58 -08:00
Robert C. Helling
0474fe70fc New profile: add image pixmaps for image events
For reasons that I don’t understand, the image is only shown if the event
happens to be at the same time as a depth sample. This is, however, not
specific to these image events, it seems to apply to all events.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-22 13:11:40 -08:00
Miika Turkia
78c68518f8 Clear edit mode for manually added dives
Edit mode must be cleared for manually added dives as well when one hits
cancel or save.

Fixes #437

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-20 09:22:43 -08:00
Tomaz Canabrava
508cbc82b8 Implement the rest of the heartbeat.
The only thing that was missing was the size of the vertical axis. I'm
setting a small line on the bottom of the temperature axis, since both
have blue color, this will not make people think one is the other.

TODO: change the color to red.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-19 20:58:48 -08:00
Dirk Hohndel
fd1a62568b New profile: partial addition of heartrate
This was done during an IRC hacking session with Tomaz.
It compiles, it shows something but not the right graph.
Committed here so Tomaz and I can continue to work on it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-19 17:19:57 -08:00
Dirk Hohndel
08490785b2 Only recalculate the tooltip if time has changed
Small optimization, but seems to make sense.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-19 16:06:16 -08:00
Anton Lundin
43997d3b36 Convert more TRUE/FALSE to stdbools true/false
In Qt5, Qt doesn't define TRUE/FALSE anymore, so we need to stick to
stdbools to have Qt5 builds working.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-19 07:13:56 -08:00
Dirk Hohndel
48c4c21b9f Implement the '...' search button for Uemis dive computers
Right now the search button isn't connected for any device (clearly an
oversight). At least for the Uemis I think I have a sane implementation of
what that should do.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-18 17:20:35 -08:00
Thiago Macieira
756abc0341 Add an assertion to prevent MainWindow from being recreated
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-18 16:49:04 -08:00
Robert C. Helling
226b55893d Make lastUsedImageDir static to prevent a crash
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-18 15:30:59 -08:00
Miika Turkia
28454889d9 Use DateTimeOriginal on image import
Some digital cameras do not set the DateTime exif field bat use
DateTimeOriginal. If the first option is not found, use the second one
to try to detect the moment when the image was shot.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-18 08:46:22 -08:00
Miika Turkia
1328b44d44 Fix compile error
I get compile errors from these lines. Removing the class name from the
calls allow me to compile the current master.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-18 08:46:08 -08:00
Dirk Hohndel
240e269f19 Code cleanup
We called the helper functions way too often.
Whitespace / coding style adjustments.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-17 20:34:09 -08:00
Tomaz Canabrava
31ee4dac65 Make part of the context menu work (gas change event)
The code of the context menu and the gas change event callback is mostly
the same as the old profile, with minimum modifications, as this changes
the order of the code on the callback to make it a bit saner (declare
variables first, call code later).

This also fixes a bug on the model that was not cleaning itself in the
correct way after a call to clear.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-17 14:50:14 -08:00
Dirk Hohndel
d81223b3f4 Missing initializer
This was causing us to access uninitialized memory at times.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-17 14:40:10 -08:00
Robert C. Helling
bbb071f1e8 Compute dive computer/camera time offset from sample picture
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-17 10:59:30 -08:00
Robert C. Helling
fe2a264db3 Store camera time offset in preferences
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-17 10:56:43 -08:00
Dirk Hohndel
16e03ff86e New profile: some more slight rearrangements
This is just an attempt to not have the time markers and dive computer
name printed right on top of each other.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-16 14:16:39 -08:00
Dirk Hohndel
21ca39ab0a Fine tune positioning of temperature and tank pressure lines
Maybe not yet perfect, but better.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-16 11:17:29 -08:00
Dirk Hohndel
582fb693a0 New profile: improve mean depth line
Show decimal depth and make the line length more appropriate for the dive
profile shown.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-16 10:57:11 -08:00
Dirk Hohndel
e0f8ec7144 Clean up some warnings
Unused variables, more initialization order complaints.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-16 10:44:23 -08:00
Tomaz Canabrava
4525fbb147 Fix z-value of the PartialPressure gas graph over the timeAxis
Fiz zvalue of the partialPressure Gas Graph over the TimeAxis, and also
corrects the position of the PartialPressure gas graph. It now no longer
appears to 'float' over the TimeAxis, now it's on the very top of it.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:30:25 -08:00
Tomaz Canabrava
44a72b805c Make it possible to hide some of the grid lines.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:30:25 -08:00
Tomaz Canabrava
4699363a9e Better setup of the defaults for the grid.
This patch creates better defaults for the grid lines, size, position and
z-level.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:30:25 -08:00
Tomaz Canabrava
883b25cea3 Create the grids.
Create the grids, and the way that they move is fabulous <3

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:30:25 -08:00
Tomaz Canabrava
38e25458ee Change the axis update method to move the lines.
Change the axis update method to move the lines alongside the texts.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:30:21 -08:00
Tomaz Canabrava
0c5fd7db8e New template-based-function: remove the uneeded items on a QList.
This function is for non-duplication of code for different QLists, since I
now have Texts and Lines, I needed to make the code in a way that it
worked without dupplication.

It's a pretty standard use of templates, I think that even the C guys will
not be offended by it. :)

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:16:15 -08:00
Tomaz Canabrava
fc55b2abfe Remove the class 'CartesianPlane'
This class was pratically a re-do of the axis, I'll do the axis to plot
the lines when it feels like it.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:16:02 -08:00
Tomaz Canabrava
87d5289920 Move the events when a partial pressure graph is enabled / disabled
The events were static on the canvas even if the profile changed its size
because of a toggle of the partial pressure gas. This patch makes events
move on the canvas to their correct place.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:15:14 -08:00
Tomaz Canabrava
6c67f90858 If the depth is zero, dont show it.
The first depth label of its axis is always zero, do not show it.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:15:03 -08:00
Tomaz Canabrava
021d799ff9 Fix crash opening testdive0.xml
That particular dive didn't have a temperature, and thus we got a crash
while accessing the last temperature text.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 17:14:49 -08:00
Dirk Hohndel
191a3064a7 Removed unused setup function
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 11:17:23 -08:00
Dirk Hohndel
6be62c1d90 Make font label scale a per axis property
This way the partial pressure graph can have smaller pressure labels than
all the other labels on the profile.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 11:15:57 -08:00
Dirk Hohndel
980737221d New Profile: make axis labels smaller
Previously all text in the new profile was deawn in the same font. With
this change the labels on all axes are smaller.
It might be even better to allow per-axis configuration of the label size
as along the time axis the bigger size looked better. But especially for
partial pressures this looks much better.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 07:06:09 -08:00
Miika Turkia
cb5ab4bc8e Add unit support for CSV import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 06:33:33 -08:00
Dirk Hohndel
31aa93857a Initialize device_data_t data
If the user never clicks on the log and dump checkboxes (and that's what
we expect to be the case by default), then the log / dump flags (and
filenames) were never initialized.

I am reasonably certain this will close the following three bugs, that all
show the same symptom: they behave as if libdivecomputer dump was set,
even if it wasn't.

Fixes: #426
Fixes: #431
Fixes: #435

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-15 06:31:50 -08:00
Tomaz Canabrava
e49bd86f5e Align Right side of Cylinder Pressure Text to the Left.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-14 21:50:05 -08:00
Tomaz Canabrava
822ed20625 Left-Align the last Temperature Text.
The last temperature text used to have the same align flags
as all the other texts: Right. this makes it much more appealing.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-14 21:50:05 -08:00
Tomaz Canabrava
bd5cc109f0 Show the last temperature on the graph.
The code shamelessy copied from the old profile introduced
a bug where the old temperature was not correctly shown.
I'v added a new member to the class that will store the
last valid temperature, and use that to calculate if there's
a reason or not to display it.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-14 21:50:05 -08:00
Tomaz Canabrava
bf4144a012 Removed the 'Unused Tanks' from the toolbar.
Just removed the unused tanks from the toolbar,
since it's just a removal of something on the ui
related code, it's good to see how much verbose
the xml to generate the UI is.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-14 21:50:05 -08:00
Dirk Hohndel
f26896da1b Automated whitespace / coding style correction
First attempt to use the tools on one of our source files.
So far so good. Not perfect, but a HUGE improvement.

Most importantly it effortlessly fixed the Allman style braces introduced
in commit 51220f26ef ("Add recent files to main menu.").

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-13 22:12:17 -08:00
Boris Barbulovski
51220f26ef Add recent files to main menu.
Add(up to four) recent files to File main menu.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-13 22:05:05 -08:00
Dirk Hohndel
730e0295c9 Ensure the correct parent is used in the dialog
This way the dialog is centered and the main window gets dimmed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 13:25:23 -08:00
Dirk Hohndel
af5ad2033d Don't redeclare variables of the same name
This isn't broken, but it's confusing.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 13:24:40 -08:00
Boris Barbulovski
c86822c2f4 Replace mainWindow() with MainWindow::instance()
C++ style of accessing single instance class object.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 11:42:59 -08:00
Tomaz Canabrava
cc37d2e94a Make the mean depth line follow the size of the axis.
When we move, shrink or expand the depth axis, the
meandepth should also change it's position. this
patch adds that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 10:33:14 -08:00
Tomaz Canabrava
0333de426f Hide the extra axis labels on release mode, show on debug mode.
The extra axis labels on the Temperature and Cylinder Pressure
graphs are not wanted in release mode as they create a lot of visual
clutter, but they are useful to have in debug mode since we can then
better understand what went wrong.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 10:31:24 -08:00
Tomaz Canabrava
8041a2ed85 Added cylinder pressure shrinking on show/hide partial pressure.
Same as the last commit, but for cylinder pressure. Another bug
was spotted, where the mean depth line does not move to the correct
location after a axis-size-changed - fixing that on next commit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 10:30:45 -08:00
Tomaz Canabrava
49642cacbc Shrink temperature axis when partial pressures are shown.
This patch adds shrinking of the Temperature axis when partial
pressures are shown. This adds an unwanted side effect however,
the axis started showing it's values - and we didn't do that on
the gtk version or on the old profile. While this is good for
debugging, it's not wanted for the software if it's on release
mode. I'll fix that in due time.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 10:29:57 -08:00
Tomaz Canabrava
b08c38da33 Animate transition between show / hide partial pressure graphs
When the user checked the option to show or hide the partial
presure graph the size of the profile graph was kept the same;
usually I do those changes on the objects themselves, on the
settingsChanged method, but since the calculation of the
size of the profile was done on the ProfileView class for
consistency with the other objects, I had to change it there
too.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 10:08:46 -08:00
Dirk Hohndel
5ca13b0024 Correctly track parent of print dialog
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 06:26:25 -08:00
Dirk Hohndel
6332976c3d Whitespace and dead code cleanup
The coding style for switch isn't the prettiest, but let's at least keep
things consistent.

Also, those ugly break statements never got reached, anyway.

And there was no need to re-declare and re-generate currentString.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 06:22:10 -08:00
Dirk Hohndel
9c9867dec5 More variable scope confusions
Don't have nested loops with the same loop variable. Really. Even if it is
legal C++.
And don't declare local variables more than once. This will only cause
issues later.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 06:07:32 -08:00
Dirk Hohndel
6bff18e56a Make sure the about dialog is correctly centered
Otherwise, why pass in the parent to begin with?

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 06:06:13 -08:00
Dirk Hohndel
4f522d79d8 Don't shadow object members like this
If you need to use this->error to distinguish the local variable from the
object membe that should be a hint that maybe you didn't pick the best
name for the local variable.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 05:51:25 -08:00
Dirk Hohndel
11559f1704 Don't reuse a variable name with a different type inside the same function
Since the variable was inside of an inner scope this was technically legal,
but it's just too annoying for words.
(The diff in the commit doesn't make this obvious, but outside the for
loop in the same function there is a divedatapoint *dp, so we had a
pointer to divedatapoint and a divedatapoint with the same name...)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 05:43:31 -08:00
Dirk Hohndel
ffc61e1357 Don't use current_dive instead of the argument to the function
I could have gone either way - the other alternative would have been to
remove the argument to the function. But since current_dive is a macro
and since the semantic of the function make sense with the argument being
passed in, it seemed better to just not use current_dive in the function.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-12 05:37:18 -08:00
Dirk Hohndel
48e9257de4 Fix variable scope issue
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 14:08:17 -08:00
Linus Torvalds
e58f54cac1 Fix ATM-vs-bar confusion
SAC should be calculated in relationship to surface pressure, not "1 bar".

I also realize that we have a few other cases where we do the same
mistake: the partial pressure calculations do things like

    po2 = o2 / 1000.0 * depth_to_mbar(sample->depth.mm, dive);

which is wrong as well - the partial pressure is also relative to
standard atmospheric pressures.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 14:05:54 -08:00
Dirk Hohndel
92bbed3304 Take the on-canvas position into account for DiveCartesianAxis::valueAt()
We did this right for posAtValue(), but not for the inverse.

Fixes #438

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:37:09 -08:00
Boris Barbulovski
ccb1c33d02 Put include guard to every header
* ensure include guard to every header
* comment endif guard block

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:37:01 -08:00
Boris Barbulovski
a3d82bf9b1 Update #include statement for QStringListModel
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:36:53 -08:00
Boris Barbulovski
507a929a27 Migrate MainTab models(QStringListModel)
Migrate MainTab models
  from static xxxCompletioModel::instance()
  to private MainTab variable members.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:36:45 -08:00
Patrick Majewski
936ac958ed Handle cancel in PreferencesDialog::on_chooseFile_clicked
If I click in the Preferences Dialog on the 3 dots to choose a default
file to load and cancel the opening FileDialog an empty string is returned
and set to the coresponding QLineEdit.

The new behavior (and mostly expected) is to update the QLineEdit only
if there is a filename returned from QFileDialog.

Signed-off-by: Patrick Majewski <dive@patrick-majewski.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:36:28 -08:00
Dirk Hohndel
b839cd4cb0 More renaming
I don't even know what a partial gas might be...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:36:11 -08:00
Dirk Hohndel
9bd77b51f5 Give the widget for the new profile a better name
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:36:03 -08:00
Dirk Hohndel
d1c4bcf570 New profile: enable switching between dive computers
This was mostly in place, just needed to be hooked up.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:35:54 -08:00
Dirk Hohndel
73d6057424 Minor cleanup
Remove obsolete header and unused variable.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:35:47 -08:00
Dirk Hohndel
6ea6a4305c Use our macro for FP comparisons
I think that catches all the ones we missed (thanks clang -Wfloat-equal).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:35:40 -08:00
Dirk Hohndel
2bd2df0349 Fix bug in logic expression
Yes, the old code made perfect sense when you read it - except the C++
compiler turned it into something quite different from what was intended.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:34:42 -08:00
Dirk Hohndel
d49acdb3c0 Clean up include files
They should have a newline at the end.
Forward declarations of classes should be 'class'.
Function / method definitions don't end on a ';'
Remove obsolete QStateMachine forward reference.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-11 12:34:34 -08:00
Dirk Hohndel
829473ddc6 Don't repopulate the model if the dive didn't change
plotDives takes a list of dives (for future use) but currently only looks
at the first dive in this list. With that semantic in mind we can save
ourselves some work if we first check if this is the same dive we are
already showing.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 16:32:10 -08:00
Dirk Hohndel
ba6713f0d8 Clean up the setDive function
* This should never be called with a NULL dive.
* The dc variable was set then never used.
* We now have a unique id for each dive, but we can't simply not
  repopulate the model in setDive as the old comment might make you
  consider, as otherwise the dataModel will reference already freed data
  in pInfo.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 16:27:05 -08:00
Dirk Hohndel
74c75938bf Set up the dive that was passed in as first dive
We carefully extracted the first dive passed in with the QList, but then
always used current_dive. That's silly.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 15:12:01 -08:00
Lubomir I. Ivanov
4b21e2f9a3 Profile2: Prevent another crash if no dives are present
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 14:33:44 -08:00
Tomaz Canabrava
691fbabb7a Do not add the items to the scene twice.
Those items have parent(), which means that when the parent has a scene,
they are automatically added and removed from the scene.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 09:58:42 -08:00
Tomaz Canabrava
bb71707321 Fixed item visibility on emptyState after being on profileState.
Background was not correctly back to it's original position
and a few other items kept their visibility when it shouldn't.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 09:57:45 -08:00
Tomaz Canabrava
cafc7e4b13 Clear the data when the model resets.
This patch does a few things:
1 - reset the model when user closes the dive file
2 - connects the 'rowsAboutToBeRemoved' in a way that the graphics can
    remove their polygons too
3 - adds a 'clear' virtual method so items that don't follow the rules can
    clean themseves up.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 09:57:04 -08:00
Dirk Hohndel
2f2c9e371c Don't ignore the return values from readfile and EXIF parser
If readfile fails it already frees its buffer.
If the parsing failed we shouldn't use the data in the structure.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 08:20:53 -08:00
Danilo Cesar Lemes de Paula
31c45b8c4c Enable the dive planning under a compile flag
Allow subsurface to show the dive planner in case a compile flag is given.

qmake CONFIG+=planner

Signed-off-by: Danilo Cesar Lemes de Paula <danilo.eu@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 08:08:20 -08:00
Boris Barbulovski
e7eb06d78c Improve sanity check for DivePlotDataModel::data()
Adds DivePlotDataModel row upper-boundary check (isValid method already
checks for negative values).

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 07:55:55 -08:00
Boris Barbulovski
0e3852e625 memory leak fix(that I created in some previous commits).
Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 07:51:52 -08:00
Sergey Starosek
16e80bf6af Close search panel by button click
Connect Close button (X) to panel's hide() method.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 07:12:35 -08:00
Lubomir I. Ivanov
0dfff310de Profile2: Prevent a crash if no dives are present
But in general we should not show the profile of a dive that
was recently removed from the list - e.g. via File->Close.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 07:06:37 -08:00
Linus Torvalds
50424df653 Use 'struct membuffer' for profile info string generation
The profile info was generated using nasty string concatenation that the
membuffers are much better at anyway.  And membuffers don't need those
arbitrarily sized fixed buffers (500 bytes? Why 500 bytes?).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-10 07:03:27 -08:00
Boris Barbulovski
b88958ded5 mainwindow.cpp improvements
* Add missing variable members to the initializer lists.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
359ea75516 maintab.cpp improvements.
* Initialize(lazy) MainTab::multiEditEquipmentPlaceholder struct

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
e88c198b93 globe.cpp improvements
* Add missing variable members to the initializer lists.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
18207c9189 downloadfromdivecomputer.cpp improvements
* Add missing variable members to the initializer lists.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
d48910b711 more diveplanner.cpp improvements
* Move variable members construction to the initializer lists.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
9ffb459ff3 diveplanner.cpp improvements
* Add missing variable members to the initializer lists.
* Add *lazy* structure initializations.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
1d871eb749 ProfileWidget2 class improvements
* Reorder ProfileWidget2 class constructor initialize list.
* Initialize(lazy) ProfileWidget2::plotInfo structure.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
8bb5cd6012 ToolTipItem class improvements
* Initialize every ToolTipItem variable member in initialize list.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:07 -08:00
Boris Barbulovski
9b84f82160 DiveTextItem improvements
* Add colorIndex to initialize list.
* Reorder initialize to correct order.

Note: colorIndex initialize value is set too SAC_DEFAULT. I do not know
what is the rigth value since this variable member is not used anywhere.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
6a6fe045b4 diveprofileitem.cpp improvements
* Initialize/construct all variable members in constructor list.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
38f0104d10 DivePlotDataModel improvements
* Add missing improvements::diveId variable member to the initialize list.
* Cleanup DivePlotDataModel::pInfo structure instead only one member.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
6ae870bd22 Initialize variable members in DiveCartesianAxis class.
* Initialize variable members in DiveCartesianAxis class.

Note: Initialized values I put needs to be doublechecked.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
d120e861cb Indent fix
* Fix tagwidget.h indent.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
76203abcb8 DivelogsDeWebServices class cleanup
* Initialize DivelogsDeWebServices::uploadMode in initialize list, instead
  of constructor body expression.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
bbac1438cf DiveListView tiny cleanup
* Change 'searchBox' member type from 'QLineEdit *' to 'QLineEdit'

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:42:06 -08:00
Boris Barbulovski
2d3e48f4ae diveplanner.cpp cleanup
* Add missing DivePlannerPointsModel::tempDive to the constructor
  initialize list.
* ExpanderGraphics class: Construct pointer-variable members into
  initialize list,

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:41:49 -08:00
Boris Barbulovski
9eb47602dd Cleanup SubsurfaceWebServices class
* Remove statuic SubsurfaceWebServices::instance() member.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 14:04:37 -08:00
Boris Barbulovski
7c4c0802dc PrintDialog small improvements.
* Remove closeClicked() slot, and use QDialogs accept() slot
* Simplify QObject::connect call by removing the QObject scope.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 08:20:17 -08:00
Boris Barbulovski
aeaa050306 ShiftImageTimesDialog class cleanup.
* Remove static ShiftImageTimesDialog::instance() method
* Add ShiftImageTimesDialog::amount() member

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 08:19:38 -08:00
Boris Barbulovski
449c6fc6f2 DownloadFromDCWidget class cleanup
Remove static DownloadFromDCWidget::instance() method

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 08:17:08 -08:00
Boris Barbulovski
02e9a6d07b PrintDialog class cleanup.
* Remove static PrintDialog::instance() method
* Remove void PrintDialog::runDialog() method
* construct/destruct print dialog on demand

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-09 08:15:42 -08:00
Dirk Hohndel
3086741d49 Remove the graph options from the Preferences
All of these are now set from the toolbar next to the new profile. This
removes functionality for people using the old profile, but as we will rip
that out and switch to the new profile, soon, that seems an acceptable
side effect.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 14:29:40 -08:00
Michael Andreen
753ebc8ed4 Load preferences before they are saved.
Load all the settings in the PreferenceDialog constructor. Previously
all the settings were overwritten with default values the first time
PreferencesDialog::syncSettings() was called.

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 09:08:48 -08:00
Dirk Hohndel
2a3a1c1b41 Long over-due change to the About text
Giving Tomaz the credit he deserves.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 08:19:37 -08:00
Boris Barbulovski
3161114106 SubsurfaceAbout class cleanup.
Main change is that now SubsurfaceAbout doesn't have instance object, but
it constructs and destructs dynamically.

 * Remove the static SubsurfaceAbout::instance() class member
 * construct/destruct about dialog on demand
 * Other small aboutbox cleanups.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
ACK-ed-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 08:00:27 -08:00
Tomaz Canabrava
39a11d7092 Fix placement of notification area and dive computer name.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:22:42 -08:00
Tomaz Canabrava
cacf5b3b24 Fix the rest of item visibilities and a few alignment fixes.
Every item is now back on the profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:22:30 -08:00
Tomaz Canabrava
c05575e103 Re-enable more items on the new profile.
Temperature and DC Label.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:22:17 -08:00
Tomaz Canabrava
4882336315 Partial pressures and cylinder pressure back on profile.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:21:50 -08:00
Tomaz Canabrava
7fbeb71dce Remove code that was unused.
Ancient code that was unused and only adding complexity to the
DiveCartesianAxis.

Also remove the spacing between the text and the lines of the Axis.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:21:28 -08:00
Tomaz Canabrava
0ad2a69c42 Show the profile again.
This patch re-enables a few items on the profile, most notably, the
profile itself.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:21:13 -08:00
Tomaz Canabrava
ed72aabde5 Fix time and half of depth lines.
Comment out most of the items on the profile since they are
currently completely broken ( positioning, etc ).

Also, remove the settingsChanged stuff from the DepthAxis because it
doesn't have the shrinked / expanded size on it ( it sits on the profile
code ) so I'll most probably move that to the profile settingsChanged in
the future - or if anyone knows of a better place to have this, I'm all
ears.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:20:18 -08:00
Tomaz Canabrava
266daa326d Start the profile state
The setup of the item positions for the profile state should be done here.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:19:58 -08:00
Tomaz Canabrava
d66e4b5236 Fix the 'Empty' profile state that was broken for ages.
Show a nice poster that Luisa did for Subsurface ( we have a few other
options that I'm waiting her to send. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:18:40 -08:00
Tomaz Canabrava
86bc3bd58f Start to make things sane again...
Change the 'namespace ItemPos' declared on the commit before this one to a
struct that will have all the 'on canvas' and 'off canvas' positions and
representations of all items, so we know where to change.

Also remove the remaining stuff from planer that was going to exist on
this profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:18:12 -08:00
Tomaz Canabrava
9756be59aa Remove duplicated additem
This addItem was being called twice, and a warning that the item was
already in the scene was annoying me.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:17:04 -08:00
Tomaz Canabrava
9cf6b2be6b Break everything to make it correct next time.
This commit breaks the whole new profile. <3
The problem with the old code is that I was using the QStateMachine
and I just got tired of it. I will implement a much-simpler state
machine to do what I want instead of hitting my head on the wall
to understand how that was supposed to work.

This commit also adds a few helper methods to simplify the understanding
of the constructor and tries to make the logic a bit better. No graphics
are being show right now. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:16:16 -08:00
Tomaz Canabrava
6de9b329d1 Huge code cleanup.
This patch starts the cleanup that will take a few iterations to finish.
The current profile code uses QStateMachine, and it's much too verbose
for something we can do with less than a third of its lines of code.

I also added on the beginning of the redesign of the profile code for
planner, edit and a few other things that are going to be ported to
the new profile in the future, but not currently - I just lack the time
to make that work for the next release.

This commit basically:
 - moves all 'new' calls to the initializer-list
 - create a new 'setupItem' private method to concentrate the calls
   that any item will do

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-08 07:14:50 -08:00
Tomaz Canabrava
677e75fbe4 Process events just after starting the StateMachine
This is needed because of a braindead issue on the Qt event
loop:

http://stackoverflow.com/questions/10059721/qt-qstatemachine-sync-problems-initial-state-not-set-on-started-signali

For the "event 1" to be received, the machine must already be
in a state that react to that signal. Even it was a queued
connection, the slot would be queued but only after the signal
 was received, which it isn't since there is no connection
yet at that point.

To solve your problem, you can wait for the machine is in
"state A" before emitting the signal:

machine->start();
qApp->processEvents();

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 11:32:44 -08:00
Tomaz Canabrava
49f8456ce8 Remove a lot of unused code.
This will probably be added back in the future, but for now
they have no use and it was making me nauseaus.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 11:32:32 -08:00
Tomaz Canabrava
2322fdfc42 Load options as soon as the progrm starts
Populate the status of the profile tool box as soon as the program
starts.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 11:32:11 -08:00
Tomaz Canabrava
185b7a454a Save the old pref system when changing the new one
Since we have now a mix of old / new prefs, remember
to change both when we alter something.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 11:31:44 -08:00
Tomaz Canabrava
96e35e542c Move save of preferences to the preferences dialog.
I had a few very strange bugs regarding to preferences (like clicking on
apply twice so things worked), because the code that moved from
"QSettings" to 'Internal Settings Struct' was being triggered on the
mainwindow, *after* the settingsChanged signal was emmited. This should
fix the problem.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 11:30:57 -08:00
Robert C. Helling
5c1abde2a5 Include images in profile
This adds an entry to the dive list context menu to load images. The user
can select image files and set a time offset to align camera and dive
computer clocks.

Using the exif time stamp the images are tried to match to the times of
the selected dives (with a grace period of an hour before and after the
dive).  Upon success an event of type 123 is created per image with the
string value being the path to the image.  Those images are displayed as
thumbnails in the profile. If the matching dive does not yet have a geo
location specified but the image provides one it is copied to the dive
(making the camera a poor man's companion app).

This patch includes easyexif https://code.google.com/p/easyexif/ which is
originally under a New BSD License to parse the image meta data.

This commit includes a new test dive dives/test31.xml with a matching
image wreck.jpg to try out the functionallity.

Obvious to do's:
Have images on the map
Have the images clickable
Have a proper picture viewer
Give visual reference for image time shifting.
Use the new profile

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 11:29:23 -08:00
Tomaz Canabrava
c84ef319a2 Create a toolbox on the left side of the new profile
For quick acess of preferences the show / hide stuff from the Settings
dialog is now in that toolbox and in the future we can put a few more,
like 'Show Notifications Panel' and 'Enable Legend'

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:34:05 -08:00
Tomaz Canabrava
2a9289ac99 Add an event filter to hide normal tooltips
This patch adds an event filter to hide normal tooltips on the new
profile. All tooltips should be displayed in the Notification Area.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:31:55 -08:00
Tomaz Canabrava
151a90bec0 Big improvement in speed ( callgrind )
This patch makes use of a cache variable instead of creating / accessing a
new one via operator[], because for some reason QGraphicsPolygonItem
doesn't return a reference for polygon and a copy is always made.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:31:11 -08:00
Tomaz Canabrava
ed230f8aac Make the Tooltip Item work on the new profile.
Just refresh the tooltip item.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:29:55 -08:00
Tomaz Canabrava
40cb57b202 Adapt the ToolTip to work on the new profile
With this patch the tooltip is ready to work on the new profile, we just
need to actually use it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:29:19 -08:00
Tomaz Canabrava
19585d9a13 Add the tooltip item to the new profile.
The functionality is not there yet - just the item hovering
the screen.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:28:21 -08:00
Tomaz Canabrava
c1ed9babc7 Move the divetooltipitem to its own file.
This is needed so we can share the dive tooltip item with the
new and old profile at the same time. Next few commits will be
setting the functionality of the tooltip item on the new one.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-06 06:26:50 -08:00
Michael Andreen
ddd7d2edcc Fix DepthAxis when partial pressures aren't used.
Set showWithPPGraph so that animateChangeLine() is always called the
first time settingsChanged() is called.

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-05 15:36:29 -08:00
Lubomir I. Ivanov
4ccd6fb3b6 Fix the zoom-panning for the new profile
This works in a different way compared to the old widget.
To make it work we use vieport()'s height() and width()
and simplify the scroll position to:
scrollPosition = (mousePosition / totalLength) * scrollMaximum

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-05 09:27:39 -08:00
Tomaz Canabrava
a649bcc7bc Added Mouse based Zoom / Movement.
This patch uses the same code that lubomir used on the
old profile. It strangely didn't worked - most probably
because the scene has a fixed width() and height() of
100. the zoom works, and the movement works, but only
on the 100 first pixels of the profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-05 06:30:33 -08:00
Tomaz Canabrava
dc077e7bff Fix hiding the tissues when user set 'show ceiling' to false.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-05 06:30:33 -08:00
Tomaz Canabrava
7b9400685d Optimizations and fixes on the new profile.
This patch optimizes a few items when hitting the
'save preferences' dialog, since when a preference is
modified, all the items try to reload their visual
based on wether a preference changed or not, the correct
code for 'hey, my pref changed, let's update' needed
to be done.

now the axis will only set a new maximum if it's different
from the old one ( and thus, going to a new dive with
the same maxdepth or maxtime as the old one will not touch
their axis, not triggering gratuitous animations. )

also, the 'incr by 3m' was not being called - it seems
that our 'syncsettings' method is not storing things on
the 'prefs' global var. I added just for the incr by 3m
case, but it's something that we need to check later.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-05 06:30:33 -08:00
Tomaz Canabrava
25b0a846af Created a method to check if calculations should take place.
Created a method to check if calculations should take place
taking into consideration what changed on the model. if the
model changes *everything*, them, all calculations should
be done, but if just some of the columns of the model are
changed, only those columns should trigger an visual update
on the items.

In theory this patch looks right, but something is wrong (
calculations are not being made. ), so I'll commit this any
how, and fix on the next commit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-02-05 06:30:33 -08:00
Tomaz Canabrava
042c34df09 Fix positioning of many text items.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-29 09:35:16 -08:00
Tomaz Canabrava
354acb0fe6 Show gradient factor.
The gradient factor is shown with this patch, but the correct position
should still be adjusted.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-29 09:34:31 -08:00
Tomaz Canabrava
ae56119a9a Make the calculated ceiling be preferences aware
This patch only adds preference-awareness for the ceiling.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-29 09:33:01 -08:00
Tomaz Canabrava
607bf47989 Fix an issue added in the last commit
The last commit made the time and all other axis behave like the time
axis. Not cool.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-28 11:31:40 -08:00
Tomaz Canabrava
9f6ebf96a7 Use the same behavior as the old time markers
This commit adds the same behavior for the old time markers on the new
ones.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-28 11:31:18 -08:00
Tomaz Canabrava
7a07665d89 Do not create label if string is empty.
Do not create a text label if the returned string is empty.
Also, fixed a potential crash after not creating a label and adding it to
the list of created labels.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-28 11:29:29 -08:00
Tomaz Canabrava
fcc17c717d Move the 'getSacColor' out of old profile and use it.
This patch makes the color of the cylinder pressure use the sac colors.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-27 13:00:29 -08:00
Dirk Hohndel
303badd5ce Detect errors while downloading from libdivecomputer
Show them in the progress bar and offer to retry.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-27 12:47:40 -08:00
Tomaz Canabrava
c99089e1fa Add settings awareness for the PP graph
This commit is rather big, and I forgot to cut it in pieces.
The first part creates a new 'calculate_gas_information' that will not
fill the profile_info->maxpp member ( that should be removed from it as
soon as the new dialog is finished ). The reason for that is that all of
the profile data will be calculated and the graph needs to update
dynamically, so whenever the settings changes, I ask for the model which
is the biggest graph and replot only the ones we need.

The second part adds a new animation function 'animdelete' to fade-out and
delete the item when it's done. the old function 'hide' did just that but
a hide shouldn't delete anything.

The third part is preferenes awareness for the PP graphs. I created two
new functions that receive the settings key for visibility and use the
QSettings to show / hide them. This also works quite well for the axis;
if no graph is visible, the axis will also hide itself.

The fourth part is colors. The pp graphs now have the correct colors.

And a bit of code cleanup too.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-27 09:15:28 -08:00
Dirk Hohndel
bf20572630 Disable the switching depth column for cylinders
Since the planner is disabled this column isn't needed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-26 07:37:11 -08:00
Dirk Hohndel
f11001ff4e Don't dereference NULL pointer when adding tanks to a dive plan
The code was obviously bogus before.

Fixes #429

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-26 07:22:54 -08:00
Tim Wootton
d760493299 Extends copyright years on About screen to include 2014
Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-25 16:38:13 -08:00
Dirk Hohndel
f4a2ce1017 Fix potential crash at startup
Strangely enough, on the system I build this, I don't see the crash. But
when I create a DMG and run it on a different Mac, it crashes if
updateTicks() is called but scene() still returns 0.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-25 07:25:03 -08:00
Miika Turkia
47ad50d6de C++ code to call parsing functions for manual CSV
This code sets up the C++ part for importing manually kept CSV log.
That includes setting up the field separator selection and calling
C-code for parsing the log file.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-25 06:52:06 -08:00
Miika Turkia
d010b6a216 GUI for importing manually kept CSV logs
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-25 06:52:05 -08:00
Tomaz Canabrava
b5e8ef160a Added the Po2 Partial Pressure Graph.
Important to note that no Partial Pressure Graph handles
settings yet.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:15 -08:00
Tomaz Canabrava
1cae362c16 Added the code for the PHE gas pressure.
Using the PartialPressureGasItem the addition of a new partial plot
is very easy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:15 -08:00
Tomaz Canabrava
caa45a1539 Added the first Partial Gas Pressure: PN2
This makes the beginning of the partial gas pressures, there's
two more. but this code uses a good part of the Model View system,
and it's way clearer than the old one. Luckly the other 2
missing items will be even more clear ( the diffs ) to do,
because I just need to create a new PartialPressureGasItem and
set the properties. <3

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:15 -08:00
Tomaz Canabrava
fd45e646dc Added comments explaining why the events are created on the setDive
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:15 -08:00
Tomaz Canabrava
0f5069784d Prevent memory leak by removing the texts on the TemperatureItem
This patch prevents memory leak by adding the text on the list of
'delete me when model changes' items. it also makes things a bit more
snappy because the scene doesn't have to deal with all of the
texts bounding rectangles eveytime.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:15 -08:00
Tomaz Canabrava
43cf4fb984 Move profile item to be used as cache.
the profile item should also use the model to know when to
change something, this makes it happen.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:14 -08:00
Tomaz Canabrava
563c39b822 Moved the temperature item as a 'Cache'
This patch moves the temperature item as a cache that will
be updated as the model updates, instead of deleting / recreating
it everytime the dive changes.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:14 -08:00
Tomaz Canabrava
555ca8245d Fix the ghost-text-on-profile regression
The last patch correctly moved the GasPressure item to use
a cache-based system, but ignored the fact that the Gas
pressure text was not being removed from the scene. this fixed
it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:14 -08:00
Tomaz Canabrava
2c2d3351ac Move the creation of the Gas Pressure item to the constructor
This makes the Gas Pressure Item a 'cached' item, when the dive
changes, the item will regenerate the drawing based on it's model.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:14 -08:00
Tomaz Canabrava
2f0b778f92 Don't recreate the tissues, but instead, reshape them.
This patch makes the Tissues be used as a 'cache', it will not
be deleted untill the program closes, but whenever a new dive is
selected, the old drawings of the tissues will be regenerated,

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-23 21:11:14 -08:00
Tomaz Canabrava
cde9bc0de9 Make the tissues be preferences-aware.
This patch adds a new class DiveCalculatedTissue that's preferences aware.
It knows when to show or hide itself.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 13:28:25 -08:00
Tomaz Canabrava
f8a4f8de81 Do not delete / new object that can be cached.
This way we will always have this object on screen, and as soon as the
model changes, it's contents will change.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 13:16:31 -08:00
Tomaz Canabrava
629a1ea0f9 Simplify the code for the reported ceiling.
The reported ceiling now behaves better by not being deleted / recreated,
instead it uses the same object and connects to the model to know when to
regenerate its plot.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 13:13:20 -08:00
Tomaz Canabrava
bc7b221498 Prepare for plotting partial pressures in the new profile
This patch makes the cartesian axis of the profile depth shrink and
(together with it) the Profile Depth and the grid lines. There will
probabla bey a lot of things that didn't have their correct position
fixed, so I'll fix them in the later commits.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 12:35:52 -08:00
Tomaz Canabrava
4005ee2ae8 Fix the ZLevel value of some items.
Almost all of the items on the new profile were being painted
on the same ZLevel, so the level of awesomeness was a bit random.
This puts things on the correct spots, events on top of everything,
profile at the bottom, things in the middle.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 12:30:23 -08:00
Tomaz Canabrava
2e2a87e619 Add a MeanDepthItem that has 2 strings.
Dirk's implementation of the MeanDepth item was correct, but in order to
add the 2 strings to it ( one at the begin, one at the end ) I had to put
more stuff inside the ProfileWidget that's already packed with graphics
items.

So I created a new class MeanDepthItem that contains these 2 strings and
will get updated whenever the value changes.

I also fixed a math inconsistency where I changed RIGHT to LEFT.
(wich fixed a few text-placements, and broke others.)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 12:29:41 -08:00
Robert Helling
f22428b345 Allow manually added dives to have their location changed
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-22 08:35:57 -08:00
Dirk Hohndel
1f785111f7 Whitespace, whitespace, whitespace
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 14:30:36 -08:00
Tomaz Canabrava
bd96036892 Better use of the preferences changed signal.
When the preferences changed signal is fired, the items that can change
their visual based on the preferences now have to reimplement the
preferencesChanged method, so they know if they need to be replotted on
screen. I already implemented that for two of the items ( ProfileDepth and
Ceiling ) but others might need that too.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 14:25:34 -08:00
Tomaz Canabrava
b08da94007 Draw the Ceiling in red if preferences are marked for that.
This code actually uses the preferences for something. It will show and
hide the calculated ceiling in red if the prefrerences are changed for
that. One bad thing that I did in this commit ( so it was easy to try ) is
that a preference change will redraw the whole graph - not optimized. I'll
make this better in a later commit so that only the affected items will be
redrawn.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 14:25:09 -08:00
Tomaz Canabrava
8831bf6350 If we draw ceilings in red do not dig a hole on the profile.
This is an attempt to speed up painting a bit. Since we will draw the red
ceiling on top of the profile, I don't see a reason to dig a hole in it,
creating an more complex shape to be passed to the painter. Easier shapes
are easier to draw. ( I think )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 14:24:08 -08:00
Tomaz Canabrava
58d9282955 Show dive computer ceiling
This patch adds dive computer calculated ceiling on the profile graph as a
'hole' on it. There's an item that paints it in red - maybe we shouldn't
offer an option here and show that only in red?

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 14:23:33 -08:00
Robert C. Helling
2f822ec0dc Prevent potential math overflow in new profile
Test for max_temp == min_temp to prevent math overflow when calculating
temperature axis in new profile

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 14:07:10 -08:00
Tomaz Canabrava
4159faa950 Remember to clean the tissues when changing dives.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 11:35:36 -08:00
Tomaz Canabrava
ce7c3f8314 Add the tissues to the profile graph
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 11:35:24 -08:00
Tomaz Canabrava
8065374793 Add the DiveCalculatedCeiling item.
This item plots the DiveCalculatedCeiling over the profile. I still need
to add the Calc All Tissues version.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 11:35:09 -08:00
Tomaz Canabrava
b1df7aeb4e Plot gas value function ported to the new canvas.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 11:35:04 -08:00
Tomaz Canabrava
9d33640bea Add the gas presssure profile texts.
This just adds the texts for the gas profile. I've also added a method on
the dataModel() to return the diveId of the last used dive in a way that
the other methods can use it.

This code is almost 1-to-1 with the old one, a bit of thinkering can be
used to merge this loop with the upper one.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 09:39:42 -08:00
Tomaz Canabrava
21d34db3a9 Simplfy the code for the cylinder pressure.
Instead of asking the data as we do on the generic models, use the
internal knowledge of the class.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 09:39:21 -08:00
Tomaz Canabrava
0a4e21a168 Add the depth text.
Depth text got added to the new profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 09:39:09 -08:00
Tomaz Canabrava
caba6500d6 Add the dive computer text.
Added the dive computer text on the bottom left side of the new Profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-21 09:38:46 -08:00
Tomaz Canabrava
63c1a1b3e9 Plot the events on top of the profile.
Changes the ZValue of the event items so they are plotted
on top of the profile, instead of being hidden on some.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 21:38:14 -08:00
Tomaz Canabrava
edad8712b9 Make the colors of the texts be prettier.
Just fixes some colors of the texts on the canvas.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 21:38:10 -08:00
Tomaz Canabrava
cd3867d46a Remove the ticks on the Axis, we never used them on the old profile.
This patch just cleans a bit the Cartesian Axis, we never used
ticks on it, just the grid lines ( that I need to animate a bit. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 21:37:48 -08:00
Tomaz Canabrava
592ee31326 Fixed Temperature Text
This fixes temperature text replacing the old code
with the new DiveTextItem.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 21:37:32 -08:00
Tomaz Canabrava
9d2344d01b Fix the positioning of the Labels using the new DiveTextItem
This uses a combination of items on the canvas which makes it easier to
position it where I want.

This also broke the other texts because I forgot about them. I will
fix that on the next commit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 21:36:55 -08:00
Tomaz Canabrava
72b5bbce6e Remove the plotText function, standardize with the TextItem.
Removed the plotText function and replaced it with the
DiveTextItem class - this way there's just one way to add
text on screen, and it also makes it easy to fix positioning
of stuff there. Which is what I'll try to fix on the next commit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 21:36:08 -08:00
Sergey Starosek
6a58712270 Enter dive edit mode on divemaster field focus
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 13:57:40 -08:00
Sergey Starosek
b8c746d975 Expand tags approach to divemaster field
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 13:57:40 -08:00
Sergey Starosek
9faf52dd43 Populate divemaster completion model using CSV
Split divemaster field value using comma and populate completion list.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 13:57:40 -08:00
Sergey Starosek
c8807c2ad2 Use focus policy setting from widget constructor
Since we use tags widget for several input fields (tags, buddy,
divemaster), it makes sense to keep focus policy setting in one place.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 13:56:11 -08:00
Sergey Starosek
ec1088f2cc Ignore mouse wheel events on tags widget
This prevents tags widgets (dive tags and buddy) from grabbing
focus on mouse wheel events but allows entering dive edit mode
on mouse click.

It was attempted earlier by Dirk (commit d117beca), but edit mode
did not work properly.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-19 13:56:06 -08:00
Dirk Hohndel
3bbc4ecd0b Add mean depth to new profile
With massive hand-holding by Tomaz.
Writing for the new profile code is slightly different. You don't draw
anything, you just tell the widget where things are supposed to end up and
how they are supposed to look. Really nice.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-18 14:38:21 -08:00
Dirk Hohndel
733108b473 Fix potential crash in getColor functions
If the index is out of range, just return black.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-18 14:37:08 -08:00
Dirk Hohndel
2c6830c399 Fix maxdepth in new profile
get_maxdepth() already gives you the correctly rounded maximum depth.
Don't mess with it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-18 14:33:12 -08:00
Michael Andreen
b3179380cf Fix crash in new profile
The gasPressureItem needs to be initialized to null in the constructor.

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-18 07:22:23 -08:00
Tomaz Canabrava
35979537d9 Plot the Temperature Text.
I Moved the 'plot text' method of the Old Graphics to the new
layout - this one was mostly unchanged as it was already good
as is.

And used the TemperatureProfileItem to also display texts.
This was the first implementation of the new system that uses
*less* code than the original one, wich makes me happy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
4ff73cf537 Add the gas pressure plot.
Added the Gas Pressure Graph with the related Model Changes
to access the cylinder index, pressure, interpolated pressure
and SAC.

The plot does not correctly plot its color right now but it's not hard to
do.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
779c1b6738 Create a version of create_graph_info that doesn't depend on GC.
This version of the create plot info is the same as before, with the
difference that it doesn't depends on the gc.
Also fixed a crash.

The Pressure Index, Information and interpolated seems wrong,
I'm getting only zeroes.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
0787347691 Add Information about the Pressure to the Model.
Added missing information about the pressure to the model; this shows that
I didn't do something right, as the model has 0 pressure information. Need
to fix that on the next commit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
e3ec5ef290 Added the Cylinder Pressure Axis
The cylinder pressure axis is the 'Y' axis for the Cylinder plot.
I positioned it in around 20% to 60% of the screen state.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
e23841dd7f Remove warning about a null pixmap.
Since I didn't add a pixmap to be the background of the new profile, yet,
things got wrong on mac and crashed. This should fix it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
470de7ee07 Remove warning about item not on the scene.
This patch fixes a warning about the QGraphicsItems not being on the
QGraphicsScene, and thus, cannot be removed from it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00
Tomaz Canabrava
c88ccfae99 Fix a crash.
I forgot to initialize a variable, sorry.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 08:32:32 -08:00
Dirk Hohndel
09d08ddc1c Fix compile time warnings
Plus some small whitespace fixes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:39:24 +07:00
Tomaz Canabrava
2e4dcba009 Do not display the Time Axis
The old graph didn't display the time axis, so this will
also not display it. By not calling updateTicks the labels
and ticks of the Axis are not created.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:19:26 +07:00
Tomaz Canabrava
f9784d876e Made the Axis be aware of Direction.
Now we can create an axis that's topToBottom, BottomToTop, LeftToRight and
RightToLeft.

This was needed for the Temperature Plot, because it should be inverted
(starting on the bottom).

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:18:56 +07:00
Tomaz Canabrava
58aeb6ce40 Added the Temperature Graph.
Added the Temperature Graph with its related classes. A Temperature Axis
is also created so the item is plotted on the right place.
Currently the Temperature Axis is just like the depth axis - top is
zero, wich means that the graph is inverted.

Also, the Temperature axis is being displayed as this helps debugging.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:18:25 +07:00
Tomaz Canabrava
254beef5d4 Transform the DiveProfileItem to an Abstract Generalization
The DiveProfileItem contained much of the complexity and
algorithms for almost all line-based items on the canvas,
so I transformed that to a general abstraction and implemented
a new DiveProfileItem that uses it. this should reduce a
bit of code since the implementation of the PP Graphs, Temperature
Cylinder Pressure and maybe a few others will only need to
reimplement the paint() and the modelDataChanged() methods.
The rest is ready.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:18:00 +07:00
Tomaz Canabrava
1f80788286 Added a DiveEventItem that knows how to handle itself.
Simply pass a event to the item and it will know what
to do. The sad part is that this isn't true yet - there's
quite a bit of boilerplate that a lot of the items are needing,
but the good part is that the boolerplate is the same in
all of the items, which means that I can create a tiny bit
of abstraction to encapsulate it and the code will be
way smaller to setup the items on the canvas.

Right now the items are being correctly placed on the
right places. It doesn't supports hidding / showing yet.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:17:09 +07:00
Tomaz Canabrava
9cb5ea45d8 Started the code for a grid that knows how to handle itself.
The code for this item is a bit too big to be just the grid
of the dives and I know that, don't bully me. :)
The main idea of this grid is that it knows when it should be
updated. this is a bit different than the old code where all
the painting happened on the same method. This is bad because
it's more code, but it's better because if I break the grid,
only the grid will be broken, and it's easyer to spot the breakage.

in the old code if I did the wrong thing with the graphics context,
the whole graph gots messed out.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:16:47 +07:00
Tomaz Canabrava
793879b6fa The plot-profile method was being called too many times.
There was a bug in the old implementation where we needed to
trigger a repaint of the profile almost everywhere. this isn't
needed anymore on the new one, so do not use the same method
that will be killed when I finish this.e

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:16:35 +07:00
Tomaz Canabrava
6f5974f3e8 Use the same methods as the old profile to discover the boundaries.
This method gathers information about the max and minimum sizes of
the cartesian axis that we should plot. It's still a bit cumberstone
for my taste, but this shouldn't be a problem. I think we need to
rework the 'Zoomed' version of it, since zoom or without zoom,
we should be good to go using the QGraphicsView.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 06:16:07 +07:00
Miika Turkia
e9f3d652e8 Treat Sensus CSV import specially on GUI
As Sensus import needs a specific XSLT and user specified parameters are
not used nor needed, tune the GUI accordingly (disable options and add
Sensus in the list of known imports).

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 05:57:45 +07:00
Sergey Starosek
d9c23bb622 Remove duplicate method call
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 05:56:45 +07:00
Dirk Hohndel
2e08f75618 Get rid of build warnings
This is just to make it more obvious when new issues get introduced. The
build should always be free of warnings...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 12:44:18 +07:00
Dirk Hohndel
49a4a11a44 Fix compile error when not building with CONFIG+=debug
There are still some warnings left, but at least it compiles now.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 12:28:33 +07:00
Boris Barbulovski
6cc65f5e1c Fix some memory leaks.
Memory leaks were caused by broken parent/child relations.

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 12:15:47 +07:00
Dirk Hohndel
a27f67c026 Whitespace and coding style updates
Another futile attempt to cleanup the code and make coding style and
whitespace consistent. I tried to add a file that describes the key points
of our coding style. I have no illusions that this will help the least
bit...

This commit should ONLY change whitespace

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 11:50:56 +07:00
Dirk Hohndel
3387ccc6f6 Show old profile when starting Subsurface
Tomaz code had us start on the depth model tab (when built in debug mode).
It seems to make much more sense to still show the fully featured profile
by default.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:21:50 +07:00
Tomaz Canabrava
dd64f1792d Reworked the calculate_max_limits and plotted the dive.
Created a new version of calculate_max_limits that doesn't have a
graphics_context and returns a plot_info. The code is basically the same
as the old calculate_max_limits, so there's not much to talk about.

The rest of the code is just boilerplate to plug the Profile
code with the axis and model stuff, to be plotted on screen.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:31 +07:00
Tomaz Canabrava
52064d9e02 Added debug code to help understand the Profile
This commit adds a QTableView if built in debug mode. This is very userful
to understand the Profile that will be drawn by the graphics classes and
fix the possible errors.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:31 +07:00
Tomaz Canabrava
7affccdf5b Importantly, I had forgotten to start the state machine
The state machine needs to be started before it works; now the animations
are working. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:31 +07:00
Tomaz Canabrava
7ba4fe885e Added names to the states, so it's easier to debug.
There's a Qt visual debug / helper tool made by KDAB named GammaRay that
uses QObject instrospection to understand what's happening on a QProject.
This tool uses the Object Name to display the items on a list, so I've
added the QState's names to their objects, which greatly helps debugging
with Gamma Ray the states of the StateMachine.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
6f7967e0e0 Added a Context menu so we can test the state switching.
The context menu added here should only be temporary, it's an easy and
simple way to test the transitions of the items on screen.
They seem a bit broken atm, I'll try to fix that. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
c301367259 Added the Animations for the transitions of the States.
This code creates the animations that will be triggered when an state
changes. Things like hiding items and such should be handled this way.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
74cb7d6b2a Aparrently there's no need for a showEvent here.
Just removed some code that I tougth to use, but it looks
like it's just a waste of lines.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
ff49cb1929 Fix the size of the scene on screen and Background improvements.
It seems that I forgot to add the background pixmap, but this is being
done right now by luisa. This patch fixes the size of the scene by
scaling everything to the size of the viewport as soon as a resize is
done, and it also fixes the size of the - to be included - background
pixmap.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
816f6db356 Added all the state transitions for each state.
This code adds all state transitions for the items on screen; they do not
animate yet, but already move to the correct location (the location seems
wrong on the screen, because I'v not correctly zoomed out the canvas yet).

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
0703706600 Added Constants to the code, to ease the setup of the transitions.
Those constants will be used later on to setup all transitions of
the Graphics Items on the canvas. They are the correct positions
of each item inside and outside of the scene, in a way that the
state machine can animate them smootly.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
02e3021333 Started the work on the States for the Profile.
This is a start of the work on the States for the Profile.  All setup is
done, all connections are done.  Maybe there's something missing because I
never worked with QStateMachine before, but it seems to work correctly.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
cdb447434d Added the flag to ignore item transformations on the background.
The background should be a Pixmap and thus it cannot zoom in or
out; this keeps it the same size always, the full height of the
scene.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
93d464fcb7 Setup the default icon sizes and locations.
Setup the default item sizes and locations inside of the QGraphicsScene.
Also added every item to the scene so that it's correctly displayed on
screen.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
b50ae87007 Initializing the new Profile Class.
Beginning of the code for the constructor, just constructing
some of the items and preparing for the State Machine to come.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
8773b4f9f0 Create a Time Axis that knows how to plot the minutes.
Created a Time Axis based on the CartesianAxis that knows
how to plot the minutes. This is needed because the CartesianAxis
donesn't knows about minutes at all, and would plot the
seconds instead.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
67f2c0bcaa Added a 'Depth' Axis that knows how to add its strings on screen.
The CartesianAxis used a simple method to put things on screen
which is wrong for almost any case besides the 'current value here'
since we store things in milimeters on the axis, we need to convert those
to meters before showing on the profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
90fc7a23f2 Pass the current selected dive to the new Profile Widget.
This call just passes the selected dive to the new profile widget. No
drawing is performed, I still have to setup the constructors and the rest
of the initialization of the new Profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
581faa598e Added the DiveProfileItem that uses the DiveProfileModel to diplay data.
I've used the paint() method on it ( even if it's not necessary
on a QGraphicsView ) to reduce absurdely the number of items that are
inserted on the QGraphicsScene ( each small line of the profile should
be an item if it was not for this, it's like that on the old profile. )
and thus reducing the memory consumption, speed and so on.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
7d5cf32501 Added a Model that should handle the Dive Profile
This model encapsulates the plot_info struct and provides
a consistent way to show it using the Qt Model view system
in the C++ and QML way. For a QGraphicsItem that should show
a Profile, this is the start.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
215e22481a Added the remaining of the ticks to their correct position.
When we prepare the axis to show something on the Profile
we need to add the remaining ticks to show on screen,
Since this method tries to animately move / remove things
before calling this.

This has no animations yet - will have in the future.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
36475c1ee5 Moves the remaining ticks of the Axis to their correct position on update.
If the size of the Axis changed, this should move them smootly to their
place.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
ca979044d0 Remove only the Uneeded Ticks / Labels when a update is requested.
This patch makes the updateTicks method not remove / readd everything
when it's triggered, but to only remove the ticks / labels that
are no longer needed on the current display.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:30 +07:00
Tomaz Canabrava
49f4052c67 Cartesian Axis, based on the Ruler class on the Dive Planner.
This is the same class as the Ruler, but uses the DiveLineItem
and DiveTextItem classes created to make it animateable. The next
few commits will work on that part. The Ruler was a very bad
name for a class that's actually an Axis, that's why I depreceated
the later.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
ca07f45561 Added a new Namespace to deal with Animations and related functions.
Since the animation methods are fairly the same for any QGraphicsItem,
I created a new namespace named 'Animations' that should handle all
of the specific Animation Functions there, and the programmer has to
call those functions from the objects. Good thing is that this reduces
boilerplate code.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
408b7dd5e5 Add a class based on QGraphicsSimpleTextItem that handles animations.
This commit adds a class based on QGraphicsSimpleTextItem that
handls animations via animatedHide() animatedMoveTo() and a few
other QPropertyes. This is to be used in conjunction with the
DiveLineItem added in the past commit on the Coordinate Axis.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
d47456b4e8 Added a class based on QGraphicsLineItem that can be animated.
This class has animatedHide, animatedMoveTo and QProperty
animations. it's very userful for the future creation of the
Cartesian Axis that will have the ticks 'flowing' around when
it's needed.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
639123a1e8 Added a QGraphicsPixmapItem subclass that handles Animations.
This class is useful for adding / removing icons on the future profile in
a way that they are smoothly added to / removed from the canvas.
It uses the QProperty System to deal with animations.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:29 +07:00
Tomaz Canabrava
81e9fcc6e8 Added a new class based on QGraphicsRectItem that can be animated.
This class extends the QGraphicsRectItem with the ability
to use the Qt Property System - and thus, we can animate
the properties. Initially I put only the rectangle, the
position and the x and y positions indidually for testing.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 10:12:20 +07:00
Tomaz Canabrava
946e3855b2 Add the skeleton for the New Profile System.
The idea of this widget is to display and edit the profile.

It has:
 1 - ToolTip / Legend item, displays every information of the current
     mouse position on it, plus the legend for the maps.
 2 - ToolBox, displays the QActions that are used to do special stuff
     on the profile ( like activating the plugins. )
 3 - Cartesian Axis for depth ( y )
 4 - Cartesian Axis for Gases ( y )
 5 - Cartesian Axis for Time  ( x )

It needs to be dynamic, things should *flow* on it, not just appear / disappear.
It's the last attempt to create a QGraphicsView based Profile System,
as the next will most probably be written in QML.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 09:45:42 +07:00
Sergey Starosek
dca59f06d7 Enter dive edit mode on buddy field focus
Seems it's related to bug #390. Not sure whether this fix is correct.

See #390

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 09:34:45 +07:00
Sergey Starosek
4659b594f0 Emit textChanged() signal on completion selection
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 09:12:59 +07:00
Sergey Starosek
88f3df5c79 Extend tags model to Buddy field
This doesn't change storage format. Instead it  parses buddy strings and
converts them to string list which is supplied to tags widget.

This feature  was requested in ticket #311

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 09:12:56 +07:00
Sergey Starosek
d2c95ddf75 Populate buddy completion model using CSV
While preparing to extend tags model to 'Buddy' field we populate
completion list by splittng those fields by comma.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-16 09:12:55 +07:00
Dirk Hohndel
630eece8b2 Fix "hide unused cylinder" behavior
There are at least two scenarios where our old code was flat out wrong.
If you manually add a cylinder (because you may want to switch to it in
the profile), then at least until the next time you restart Subsurface
this cylinder should be shown.

Also, when you switch to a cylinder by adding a gas switch event on the
profile, that change should then make that cylinder visible.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 16:40:40 +07:00
Anton Lundin
781b99170c In Qt5 reset() is depricated.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:52:51 +07:00
Anton Lundin
1c0c516b42 Don't downgrade tags to Ascii
Use Utf8 everywhere, and toAscii is depricated in Qt5

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:52:45 +07:00
Anton Lundin
7e9582631d Convert to TRUE/FALSE to stdbools true/false
I had problems with this one on Qt5.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:52:31 +07:00
Anton Lundin
7954437665 Resync included header with upstream
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:50 +07:00
Anton Lundin
9e55b64631 QAbstractItemModel::reset doesn't exist in Qt5
Let the library resolve this one instead.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:49 +07:00
Anton Lundin
3aac5b53b8 Make this code Qt5 compatible
The method have bin renamed in Qt5.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:48 +07:00
Anton Lundin
b7b8f15198 Make the include Qt5 compatible
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:48 +07:00
Anton Lundin
5ff961b033 Use setSectionResizeMode if we use Qt5
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:47 +07:00
Anton Lundin
abfd86af59 Remove unused import
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:46 +07:00
Anton Lundin
2ebe03ab40 Port this code to work with Qt5
This code had parts that where Qt5-compatible, this introduces the last
bits that it needs to be completely compatible.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:44 +07:00
Anton Lundin
1363e28f8b Add some missing ; in the Qt5 path
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:49:43 +07:00
Dirk Hohndel
9e70f556c5 After downloading GPS data show the new information
Recreate the labels in the marble window (this adds all the new locations
with the correct labels), center on the selected dive (this makes sense in
case this is one of the dives that got location information) and redisplay
the main tab (again, as this might now have location information).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:46:49 +07:00
Dirk Hohndel
78cdded902 Improve the download from Subsurface webservice dialog
- make the User ID input field wide enough
- use the progress bar for an explanatory text
- mark it as 100% completed once the download succeeds

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 15:33:04 +07:00
Rodrigo Severo
69d82acf9f Defining a logical tab order for Import CSV Dive Log Files widgets
Signed-off-by: Rodrigo Severo <rodrigo@fabricadeideias.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 06:29:34 +07:00
Boris Barbulovski
7d741a0022 Add-main-window-full-screen-feature
This patch enables main window full screen mode by menu toggle or pressing
F11.

[Dirk Hohndel: whitespace cleanup]

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 06:28:01 +07:00
Rodrigo Severo
349f3e9cde More CSV import fixes
Pre-configured imports in Import Dive Log File for CSV files should also
be cleared when the field separator is changed by the user.

Promoted DiveLogImportDialog::unknownImports to slot as per Canabrava's
suggestion and Hohndel's request.

Signed-off-by: Rodrigo Severo <rodrigo@fabricadeideias.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-15 05:56:34 +07:00
Rodrigo Severo
3a3d61ba53 Pre-configured CSV imports should also set the field separator
Pre-configured imports in Import Dive Log File for CSV files should also
set the pre-defined field separator.

[Dirk Hohndel: cleaned up hideous whitespace]

Signed-off-by:Rodrigo Severo <rodrigo@fabricadeideias.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-14 21:18:28 +07:00
Rodrigo Severo
2da8146b46 Include support for semicolon separated CSV files
Oceanic's Geo's companion software, OceanLog, when exporting as txt produces log files with the dives samples as semicolon separated CSV files.

Signed-off-by: Rodrigo Severo <rodrigo@fabricadeideias.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-14 21:08:31 +07:00
Dirk Hohndel
3ce5520b9c Sort the list of dive computer vendors in the download dialog
This makes so much more sense.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-14 21:05:41 +07:00
Dirk Hohndel
23973e8abd Don't show tanks that aren't used during a dive
Some dive computers will always download all tanks that they store, not
just the ones used in a dive. Most people only want to see the tanks that
they actually used during the dive (and for the others there's an option
to go back to the old behavior, just in case).

All this is only in memory / during runtime. If the dive computer provided
the extra data we will not throw it away.

Fixes #373

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-11 22:02:35 +07:00
Sergey Starosek
a8c0bf3e57 Fix app icon and title for yearly statistics
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-11 06:40:20 +07:00
Sergey Starosek
6a0f05eacc Make divelist search case insensitive
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-10 16:12:50 +07:00
Sergey Starosek
7e7a1d29ad User manual: overlay search panel
Make search panel floating so that web view does not resize.

This commit also addresses following issues:
- search now wraps around document
- application icon and window title are now back

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-10 16:12:44 +07:00
Sergey Starosek
8ded16fd1b Switch to new UserManual implementation
This enables search within user manual by pressing Ctrl-F.
Esc key closes search panel.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-10 16:07:54 +07:00
Sergey Starosek
8b00f8ffe6 Extract user manual web view into a separate class
Provide search functionality which addresses ticket #391

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-10 16:07:43 +07:00
Sergey Starosek
e5ae3fca7f Make Ctrl-F window shortcut
The shortcut may be used elsewhere, e.g. in user manual

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-10 16:07:25 +07:00
Linus Torvalds
7ba167e1b3 Remove now stale arguments to "CHANGED()" macro
We now never remove units or percentage signs, and always just compare
the string data, so we should remove the hacky arguments that are no
longer used.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-09 15:51:21 +08:00
Linus Torvalds
1d2238b110 Add and use 'string_to_fraction()' helper converter function
This matches the pattern of unit conversion, and will allow us to remove
all the code that uses the old complex "CHANGED()" macro that tries to
remove units or percent signs.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-09 15:51:18 +08:00
Linus Torvalds
4f982c1758 Add unit-aware cylinder size string parserc
Whittling down on the string parsing that doesn't check user-specified
units.  Still need to handle temperatures (and will do percentages to
match the pattern too), but this is getting us closer to always honoring
user-specified units.

With this you can say that you have a "10l" cylinder at "3000psi", and
it will do the right thing (it's basically a 72 cuft cylinder in
imperial measurements).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-09 15:51:03 +08:00
Linus Torvalds
9c06938adc Add unit-aware conversion of pressure data
This just adds (and uses) a string_to_pressure() to parse pressure units
correctly when filling in cylinder pressures.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-09 09:10:29 +08:00
Linus Torvalds
cc33ff2fe2 Add a string_to_depth() helper function to match our string_to_weight one
It's currently only used for the setting of the cylinder switching
depth, but now that one should work with user-specified units (so you
can set a max depth in feet even if you use metric, and vice versa).

In the future, if we also make the unit preferences something you can
pass in (with user preferences as a default argument value), we might
want to use this for parsing the XML too, so that we'd honor explicit
units in the XML strings.  But the XML input unit preferences are not
necessarily at all the same as the user preferences, so that does
require us to extend the conversion functions to do possibly explicit
unit preference selection.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-08 16:38:52 +08:00
Linus Torvalds
2d1d78ebfe const'ify our strtod() helper functions
The C library doesn't use const char pointers for legacy reasons (and
because you *can* modify the string the end pointer points to), but
let's do it in our internal implementation just because it's a nice
guarantee to have.

We actually used to have a non-const end pointer and replace a decimal
comma with a decimal dot, but that was because we didn't have the fancy
"allow commas" flags.  So by using our own strtod_flags() function, we
can now keep all the strings we parse read-only rather than modify them
as we parse them.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-08 16:38:47 +08:00
Linus Torvalds
19b982d3df Make 'string_to_grams()' use proper type safe types
Make it use 'weight_t' and hide the "grams" part inside the type.  That
was the whole point of the weight_t type, after all.  Returning a
"double" was always bogus, since we internally always do integer grams
(and the function actually used "rint()" to get all the rounding right
anyway).

As a result, it's now called "string_to_weight()".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-08 16:38:43 +08:00
Miika Turkia
88fdf1b138 Show import dialog only when needed for CSV config
We do not need any import dialog when importing normal XML based
divelogs. With this they are imported directly after file selection
dialog. However, when CSV files are detected in the import list, the
configuration dialog is displayed and applied for them. (CSV files are
detected by file extension.)

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-08 05:54:20 +08:00
Lubomir I. Ivanov
a32462c26b DownloadFromDCWidget: prevent possible leaks for log/dump files
If the 'logfile_name' and 'dumpfile_name' were NULL we can simply
strdup() them with a new value, but if there was a previous value
we need to free() first.

C99 6.7.8 allows us to keep said variables without the
explicit NULL initialiazation.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-08 05:53:26 +08:00
Dirk Hohndel
409c2e9bcf Not everything can be done with the diveId
In commit c3fe1a9e9f ("Get rid of pointers to dive structures in the
UI") I was a bit too aggressive moving away from pointers to dives.

This is only needed for pointers that are held across operations that
could change the dive_table. I figured that it wouldn't hurt to get rid of
some more pointers as well, but it turns out I was wrong. The current dive
that we store in the Cylinder and Weight models can be a dive that isn't
in the dive_table at all: the multiEditEquipmentPlaceholder. And when
using the diveId we end up finding the original dive in the dive_table and
therefore modify the wrong structure.

This undoes two thirds of the above mentioned commit.

Reported-and-analyzed-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-07 22:10:41 +08:00
Dirk Hohndel
a8db19f548 Restructure overly agressive Q_ASSERT
Turns out this function can be called when there is no valid dive - so
only protect those parts that dereference the dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-07 12:22:22 +08:00
Dirk Hohndel
c3fe1a9e9f Get rid of pointers to dive structures in the UI
The assumption that the pointer will keep pointing to a valid structure is
fundamentally flawed. And even if that is true today, it might change in
the future - just don't do it. Use the diveId instead.

The exception is when you own the structure and use it within one UI
interaction during which any way to change the dive_table is disabled
(e.g., while adding / editing a dive).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-07 12:10:19 +08:00
Tomaz Canabrava
ca391035f3 Setting dive as 'current' when restoring selection
Restoring the selection was not setting the selected dive as current, and
thus, breaking keyboard navigation.

Fixes #402

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-07 06:19:23 +08:00
Tomaz Canabrava
ddecc3b56a Add CaseInsensitivity to all of the completers.
Just one of the completers had Qt::CaseInsentitive set,
setting for all of them.

Fixes #400

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-07 06:19:04 +08:00
Dirk Hohndel
e783493f8a Use helper function to display mean depth with correct unit
In commit 528d0ea0e7 ("Print numerical value of mean depth") Miika once
again forgot the three non-metric countries on this planet... :-)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-06 21:02:19 +08:00
Miika Turkia
528d0ea0e7 Print numerical value of mean depth
This will print the numerical value of mean depth to the profile graph.

Fixes #405

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-06 20:50:58 +08:00
Dirk Hohndel
32d26b751a Parse localized weight units
We have the wonderful Qt string functions. Let's use them to make the code
simpler and easier to read.

Suggested-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 11:22:37 -08:00
Lubomir I. Ivanov
a30a0910b4 Maintab: prevent a segfault in the 'Equipment' tab
When a dive contains no cylinders, clicking the '+'
button could SIGSEGV if current_dive->dc.model is NULL.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 10:56:29 -08:00
Miika Turkia
a62f68e905 Rename menu entry for log import
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 10:30:09 -08:00
Miika Turkia
b052b790df Refactoring import to DiveLogImportDialog
Changing the import stuff to DiveLogImport. Now we should have one
import function/dialog for importing divelogs instead of multiple menu
entries.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 10:30:08 -08:00
Miika Turkia
646c6ba58b Merging Import dialog
This patch merges import dialog with CSV import dialog. The aim is to
have only one import menu entry for log files. This menu entry pops up
an import dialog that has tabs for different types of imports (supported
dive logs and CSV configuration currently).

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-03 10:30:06 -08:00
Tim Wootton
65eb86f854 MainTab location coordinates displayed in ISO6709 format
changes the location coordinates display in the main tab
 to use ISO6709(2008) Annex D 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:45 -08:00
Linus Torvalds
4cce5df7e2 Fix imperial cylinder sizes in equipment tab
The imperial cylinder sizes are not just in cubic feet: they are in
cubic feet of gas at STP. So the imperial/metric difference is not
just about converting blindly from liters to cubic feet, you also have
to take the working pressure of the cylinder into account.

This was broken by commit f9b7c5dfe9 ("Make units in cells
consistant in CylindersModel"), because those poor sheltered Swedish
people have never had to work with the wondrous imperial cylinder
sizing, and think that units should make _sense_. Hah.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-02 22:40:50 -08:00
Linus Torvalds
c49d3885f5 Allow the user to specify weight units explicitly
Instead of always assuming that all numbers are in the users locale
weight units, allow the user to say "kg" or "lbs" explicitly.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-02 21:17:51 -08:00
Dirk Hohndel
5511a0e14e Ignore units when entering values for equipment
Note that this is IMHO the wrong fix. Because we shouldn't just ignore the
units, we should do correct conversions.

Before this patch, if the user is in metric mode and then types in 4.5kg
or 10lbs for a weight, Subsurface ignores the entry and throws it away.
Very much not the expected behavior.

With this patch Subsurface will take the value, but ignore the unit and
assume that the user meant kg (since it's in metric mode). Still not
really the expected behavior for 10lbs (which is now 10kg), but if the
user typed 4.5kg (which admittedly is much more likely), then with this
change Subsurface will do the right thing.

Fixes #395

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-02 09:12:32 -08:00
Dirk Hohndel
f79cc7bd91 Fix typo
Reported-by: Peter Konings <peter.l.e.konings@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-29 09:20:26 -08:00
Miika Turkia
03666fb765 Use field numbers in CSV import instead of indexes
For the common user, a field number is more intuitive than field index.
So let's use that in numbering CSV import fields.

Fixes #388

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-29 04:13:18 -08:00
Dirk Hohndel
7c8a39015a Enable https for Windows binaries
This requires the ssleay32.dll and libeay32.dll to be copied into
packaging/windows, first.

Fixes #367

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-28 21:04:07 -08:00
Dirk Hohndel
90ff8e672b Update tank model with custom tanks used in XML files
Fixes #377

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-28 14:56:01 -08:00
Dirk Hohndel
a375159e6a Remove nonexisting member from header
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-28 14:55:23 -08:00
Miika Turkia
e72d001d3e Fix bookmark/gaschange setting for Ubuntu
On Ubuntu, new events have time zero. This is fixed by resetting
gc.rightx to maxtime at the end of plot function.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-28 10:25:18 -08:00
Miika Turkia
3ddb03a27e Use bookmark flag when bookmark contains heading
Bookmark with compass heading is named 'heading' and should use the
bookmark icon.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-28 07:40:38 -08:00
Dirk Hohndel
9bff4eda35 Clear equipment tab for trips display
And prevent the user from editing equipment in trip edit mode (those edits
are both meaningless and of course will be ignored once we save the
changes to the trip).

Also moved some code for setting up tanks, weights, tags, etc, into the
"this is not a trip-edit" part of the updateDiveInfo() function.

Fixes #392

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-27 17:31:23 -08:00
Dirk Hohndel
74faca5d43 Handle editing a manually added dive consistently
Regardless of whether the user clicks in the info tab, makes a change to
equipment or starts by editing the profile (i.e., clicking on the little
penguin), we should get into the same state and behave the same way.

This means that when editing a manually added dive we are always in
editMode == MANUALLY_ADDED_DIVE - and editMode == DIVE means we are
editing a dive that came from another source.

Fixes #379

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-27 17:12:38 -08:00
Dirk Hohndel
a35a28ab38 Fix warning about initialization ordering
I cannot tell what the potential impact of this might be, but the fix is
trivial.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-27 11:07:59 -08:00
Benjamin
31854f50a4 Disable DC device node if it is not needed
This patch disables/enables the DC device node based on what type of
transport the selected DC uses. The only time the device node field is
used is if the selected DC uses a serial transport type. IrDA and USB type
transports do not use the device node.

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-27 11:04:35 -08:00
Dirk Hohndel
5fca06c9e6 Display warning that dives won't be downloaded when enabling libdc dump
The warning is only shown once per session.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-26 09:18:57 -08:00
Patrick Valsecchi
06875c7cbd Small code simplification
Use QStringList::contains instead of iterating the list.

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-26 08:42:20 -08:00
Dirk Hohndel
3fb3bd60b6 Don't reset panels while editing a dive
MANUALLY_ADDED_DIVE is a different flavor of ADD mode (in both cases we
are in "planner mode"), so bail out for that as well.

See #379

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-25 13:06:29 -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
Tomaz Canabrava
09096f9af4 use qMakePair helper instead of QPair<int,int> and such.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:24:12 -08:00
Tomaz Canabrava
1a933e7e19 Don't use QList if sizeof(item) > void*.
QList is optimized for storing pointer-sized items, thus
a QVector is the better choice for everything else.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:24:11 -08:00
Tomaz Canabrava
5e446fd258 removed unused files.
Thise files dates back from the beginning of the Qt port and
were never used anyway...

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:24:11 -08:00
Tomaz Canabrava
8da5a8649b Don't check if pointer is valid before deleting it.
deleting a null pointer is valid, so we just delete it
instead of checking if it exists.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:24:11 -08:00
Tomaz Canabrava
2874070870 Code cleanup. Don't use if ( true ) set (false).
Code cleanup, don't use if ( thing() ) set false,
but set !thing() instead.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:24:11 -08:00
Tomaz Canabrava
231fd2e6e0 Fix subsurface on dark themes.
This patch fixes my last annoyances with dark themes
on subsurface. It changes the background color of the
edited info tab to a darker yellow if the theme is
dark, and a light yellow if the theme is light.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:23:10 -08:00
Tomaz Canabrava
10519bcc50 silly whitespace fix.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:23:10 -08:00
Tomaz Canabrava
6925d13aa4 Rework foreach for a faster iteration.
The old code used a QString instead of a const QString&, wich
mean that each foreach step the string was copied.
added a break on the if-found-true to stop the foreach, since
we already found it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:23:10 -08:00
Miika Turkia
e0bdf45539 Allow selecting all files on CSV import
This allows user to view any file on CSV import dialog, not only the
ones ending with .csv. Of course, the default still shows only the .csv
files and user needs to change the filter to view the rest.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-24 07:06:29 -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
5c3ed901b5 Remove pointless code
Why calculate the number of entries in the zip downloaded from Divelogs.De
if you don't do anything with that number?

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:06 -08:00
Dirk Hohndel
0421a161b4 Silence a few warnings
None of these are actual bugs. But none of the fixes are harmful, either.
And much as I hate adding the 'default' clauses, I'd rather not have the
build output cluttered by invalid warnings.

The exception is the fix in divelistview.cpp - while I don't think it is
possible for this function to be called with no dive selected,
initializing pd to NULL is cheap insurance in case that does happen for
some weird reason.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:06 -08:00
Dirk Hohndel
4ab58d6b47 Use M_OR_FT macro instead of switch statement
This is easier to read and also avoids an incorrect gcc warning.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:06 -08:00
Tomaz Canabrava
f0da41c937 Added Keyboard Navigation for the Star Widget
Keys up and down to increase / decrease stars
and also fixed focus policy for it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
3e3fff262e Don't use an array where none are necessary
We don't need to keep the array of zip_source structs. We just need the
latest we created so we can add to the zip file.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
64f24234ab Move the variable initialisations closer to use and add blanks
Makes the code easier to read, IMHO.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
de47937dd1 Get more descriptive error messages when uploading to divelogs.de
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
d36e4555da Move the divelogs.de preparation function into the C++ class
This is so we can mark the error messages for translation.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
b654bcdd7a Generate the file name for the dive log upload in the caller
This is a cleaner approach, according to the discussion in the mailing
list. It is also better because we can use QTemporaryDir in Qt 5.
Finally, it avoids having to remember to free it at every point.s

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
8eb6dfdb02 Use QFile::{encode,decode}Name for file names
And make them use UTF-8 on Windows instead of the local 8 bit encoding.
This will also get us the proper NFD encoding on OS X.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Thiago Macieira
dbdf50d03c Fix compilation with libzip < 0.10
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Anton Lundin
a84826090a Planner: don't abort when saving a dive
The fix for dereferencing a null pointer from me was a bad fix that
broke the possibility of saving a planned dive as a dive.

This is a better fix to not dereference a null pointer and be able to
save the plan again.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Tomaz Canabrava
029522880f When saving / canceling edition, focus back to the Dive List
When saving / canceling the edition, focus was still being kept on the
current selected widget. not good. :) this patch makes the DiveList
keep the focus after a edit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Tomaz Canabrava
29a19e2e84 Fix the cursor problem on the TagWidget
The problem was the Focus Prevention system on the
EventFilter. Instead of that we can pass the setFocusPolicy (
strongFocus ) that ignores the mousewheel. simpler and cleaner.

Fixes #376

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:05 -08:00
Tomaz Canabrava
890d60ff9e Simplify the code by removing a few options from the if.
There was some options on the 'if' that didn't
really belonged there, so I create a if before those
to quit earlier if the condition is true.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:04 -08:00
Tomaz Canabrava
bffceb18e7 Do not New / Delete the item, use the Stack.
This should be somewhat faster, and the code is cleaner.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:04 -08:00
Tomaz Canabrava
2ead1ebe08 Removed obsolete code.
The QPainter::hightQualityAntiAliasing is ignored by Qt,
the docs says we should use QPainter::AntiAliasing.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:04 -08:00
Tomaz Canabrava
bdd1b3b546 Make it possible to use the Tag System in dark themes
The color used on the bright theme was cyan, and it's too bright when the
font is also white.

This patch uses the HSL information of the color to determine if the text
color is light or dark, and adjusting the background color for that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:04 -08:00
Tomaz Canabrava
9e57dd4826 Code cleanup: QPair<int, int> -> qMakePair
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-20 09:53:04 -08:00
Lubomir I. Ivanov
86ed014339 Fix an unused variable warning
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-19 07:28:26 -08:00
Lubomir I. Ivanov
1bb7ab30c6 Files: prefer toUtf8() over toLocal8Bit()
We may want to use toUtf8() for win32 considerations.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-19 07:28:25 -08:00
Lubomir I. Ivanov
69ed0d8393 Fix a missing parentheses warning
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-19 07:28:24 -08:00
Tim Wootton
ecc33e6375 Adds unhide to profile menu context menu
Unhide menu is only shown when hidden events exist.
Also updates relavent manual section.

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-18 14:07:41 -08:00
Tomaz Canabrava
77c2c4c5ad Make default font setting actually work
We were asking the widget.font() which returned the font that the
QFontSelector uses to display it's contents, instead of using
currentFont() that's the correctly selected font. duh. :))

Fixes #368
Fixes #375

(for #375 the solution is to select a different font that a) looks better
and b) has the missing characters)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-18 13:38:40 -08:00
Tomaz Canabrava
2f05934936 Whitespace fix
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-18 13:38:24 -08:00
Dirk Hohndel
33668ffd35 Don't enter edit profile mode when already editing the dive
This is not the ideal solution. Ideally we might want to simply enter the
profile edit mode if we edit a dive that was manually added. But right now
the code contains lots of assumptions about being in one mode or the other
and as we are redoing the profile / planner classes for 4.1 anyway, I'd
rather err on the safe side for 4.0.1

Fixes #374

(well, it fixes the second bug reported in 374 which is quite different
from the original bug)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-17 06:45:31 -08:00
Dirk Hohndel
fe88a2a476 Don't quit while dive is edited
If the user edits a dive and then quits we try to ask them to finish
editing, first. If the user did this by either clicking the little 'x'
in the window decoration or by hitting Alt-F4 (or similar), we didn't
have that question (only the 'save changes' question in case the dive list
had already been modified.

Fixes #374

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-16 16:37:44 -08:00
Michael Andreen
5f12660870 Use UTF-8 for text strings.
Fixes #371

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-16 16:14:50 -08:00
Dirk Hohndel
5c2ded5840 Disable https on Windows for 4.0
We appear to be missing the correct dll. I'm out of time trying to track
this down, so I just switched Subsurface to access divelogs.de via http on
Windwos.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-15 14:24:30 -08:00
Dirk Hohndel
4b98efb39c When editing multiple dives, only copy the cylinder type
Previously we would overwrite the gasmix as well as start and end
pressure even when editing multiple dives, which clearly is wrong.

Fixes #364

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-14 09:32:24 -08:00
Dirk Hohndel
d117becad8 Improve MainTab behavior when using the scroll wheel
This gets the behavior close to what we really want.
- scroll wheel no longer enters edit mode when over the tabWidget
- scroll wheel doesn't modify dateTimeEdit, nor does it enter edit mode
- scroll wheel still scrolls both the notes and the full widget

The only oddity is that when clicking on either the dateTimeEdit or the
tabWidget we don't immediately turn on the 'being edited' warning (as we
do for all the other widgets). For those two widgets the user has to press
a key before edit mode starts.

I think this Fixes #176

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Ideas-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-13 21:18:54 -08:00
Lubomir I. Ivanov
92476c76f3 prepare_dives_for_divelogs(): remove unused variable 'doc'
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-13 07:42:39 -08:00
Dirk Hohndel
719b732230 Fix incorrect handling of autogrouped trips
When toggling autogroup in the menu we ended up setting the NO_TRIP flag
for dives that were removed from a trip that was created by autogroup. So
toggling things on and off and on again meant no more auto grouping.

Fixes #337

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 15:03:25 -08:00
Dirk Hohndel
76251c27da Fix the logic when to display the "language changed" warning
If the user had never set up the language selection they could end up
getting the "language changed, restart required" warning even if they
didn't touch the language setting at all.

This fixes that issue by assuming that UseSystemLanguage is true if the
setting is undefined and only comparing the selected language if that
selection actually matters (i.e., UseSystemLanguage is false).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 06:44:09 +01:00
Thiago Macieira
0f3928f315 Don't check if a file exists right before trying to open it
The open call will tell us what we need to know. Obviously we can't open
a file that doesn't exist. This saves us one stat() or Windows
equivalent.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:37:24 +01:00
Thiago Macieira
841bdf3462 Make the streamsize variable actually int
Casting a pointer to a size_t variable to a pointer to int is wrong on
big endian machines. Not that I expect anyone to compile Subsurface 4
for Mac on PowerPC 64-bit, but just in case... Who knows, we may have
some Solaris-on-UltraSPARC or AIX-on-POWER6 users.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:37:07 +01:00
Thiago Macieira
0a57befb69 Don't call strlen() on something we already know the size of
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:36:36 +01:00
Thiago Macieira
cb39bb5e9c Don't leak the zip structure in case of error
This also erases the zip file that we created

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:36:16 +01:00
Thiago Macieira
b3d59cb890 Don't leak the buffer or temporary file used to save the dive
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:35:46 +01:00
Thiago Macieira
04ec3cf31f Hoist the getting of the XSLT style-sheet out of the loop
We don't need to get it for every file, since it's the same. This also
avoids leaking temporary files and memory if the stylesheet cannot be
found.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:35:37 +01:00
Thiago Macieira
a17880ca02 Make the errPrefix a static variable
No need to allocate memory for something that will show in debugging
only. Besides, qDebug() of a QString adds quotes around it, which we
can do without.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:34:54 +01:00
Thiago Macieira
aadf2cd19c Don't leak the zip structure if no dives are selected
Just move the check above the zip_open call.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:34:25 +01:00
Thiago Macieira
1b5b562da8 Fix compilation with older libzip
Older libzip lack zip_get_num_entries. Thanks to Lubomir for spotting
the version macro.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:33:34 +01:00
Tomaz Canabrava
5ac29bbe74 Save and reestore scrollbar position on editing the items.
Save and restore scrollbar position on editing the dives.
I think this is not the best place for it, but I'll leave
it here for a while untill I find a better place.

Fixes: #343
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:26:39 +01:00
Tomaz Canabrava
9a497b1cb0 Keep track of the minimum Depth / time on the planner.
This patch makes sure that the minimum time / depth is
correctly set on the profile planner.

Fixes: #358

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:26:39 +01:00
Tomaz Canabrava
0b0860d24a Copyed the code from Dirk that solved the mac issue on cylinders.
This is the same code that Dirk used on the Mac to fix the
bad-behavior of Cylinder Selection, this time applyed to
Weigthsystem selection.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:26:39 +01:00
Tomaz Canabrava
0b5f9512ef Fix TableWidget ( equipment ones ) on dark scheme.
This patch uses the class created by the previous patch
to get rid of the CSS and be really desktop native. it
fixes a lot of stuff in non-blue-styles and throws
a lot of code away. <3

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:26:39 +01:00
Tomaz Canabrava
c5c44e3a82 Kill the use of CSS - Fixes a Lot of issues on dark color schemes.
The css was done by me in the first days of subsurface for Qt, and it
was a code that I was never proud of. Mostly because I tougth at the
time that it was better to write it into CSS than to create a new class
just to take care of the size of the default cell height on a tree view.

Now I see that it was a biased approach since it created issues on
dark color schemes and it also didn't make a 'native' experience on
Gnome or OSX, only on KDE.

This fixes that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-12 03:26:39 +01:00
Lubomir I. Ivanov
819bd109e5 downloadfromdivecomputer.h: remove a forward declaration
The forward declaration of 'struct device_data_t' is not
needed as it already comes from '../libdivecomputer.h'.

Reported by the program cppcheck.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-11 16:30:10 +01:00
Lubomir I. Ivanov
fbcad20072 profilepgrahics.cpp: fix preceding limit check
ProfileGraphicsView::plot_depth_profile():
The iterator limit check (i < 7) should precede the indexing
(increments[i]).

Reported by the program cppcheck.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-11 16:29:39 +01:00
Anton Lundin
022e2d0d9d Guard against dereferencing undef
Introduce some harness in ProfileGraphicsView::plot_one_event, so we
detect bad stuff and bail, instead of dereferencing undef pointers.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-11 03:13:30 +01:00
Anton Lundin
82b86fe924 Fix potential null pointer dereference
If createTemporaryPlan was called on a empty diveplan.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-11 03:13:30 +01:00
Anton Lundin
5b61409358 Use delete instead of free() in c++
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-11 03:13:30 +01:00
Lubomir I. Ivanov
643f404036 Divelogs.de: prevent undefined behaviour
prepare_dives_for_divelogs() did a silly thing, which I was
responsible for. When populating 'tempfile' we benefit
from QString, but then return a pointer to a local variable
(char *) without alocating it on the heap. This resulted
in undefined behavior, as we don't know the lifespan of that
local memory on the stack.

Patch fixes that by using strdup() and freeing the memory
when/if needed.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-10 22:35:13 +01:00
Dirk Hohndel
0e3a24c3c0 Reset libdivecomuter import canceled state
Once the process got cancelled once we never reset the flag.

Fixes #82

Initial-fix-by: Jef Driesen
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-10 08:09:42 +01:00
Dirk Hohndel
e5561d7668 Fix selection tracking bug
When trying to remember a newly manually created dive across the
sort_table() call I abused the dive->selected flag and didn't clear it out
afterwards (most likely thinking "hey, I'm calling selectDive() on this
anyway").

This caused the UI code to correctly mark the dive as selected, but when
it called down to the C code to keep the internal data structures in sync,
that code didn't update amount_selected as it thought this dive had
already been selected. And that caused other parts of the code to get
confused, which manifested for example in the failed upload to
divelogs.de.

So this clears out the flag after abusing it to remember a dive. Maybe we
should add a 'remembered' flag instead, but for now this fixes the issue.

Fixes #351

Initial-fix-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-10 06:25:30 +01:00
Lubomir I. Ivanov
c8eae30c6f Webservices: make the dialog title more generic
We use the same dialog for both the Subsurface WS and for the
divelogs.de one. Instead of the old title (which suggests download)
we can use a more generic one - "Webservice Connection"

This makes it easy for us to maintain a dialog that can both
upload and download data, while the dialog title is descriptive
enough.

Fixes #352

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-10 05:52:26 +01:00
Lubomir I. Ivanov
cf9748278f Planner: fix potential assert in clear()
If rowCount() is 0 we get an assert:
ASSERT: "last >= first" in file kernel/qabstractitemmodel.cpp...

To solve that we wrap the beginRemoveRows() call in a bnrach:
if (rowCount() > 0) {
...

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-10 05:22:01 +01:00
Anton Lundin
26a1904cf8 Remove some unused variables
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 22:47:28 +01:00
Anton Lundin
a3f3e85246 Use implicit zero initialize for the whole array.
Clang yelled about it, and it looks prettier. It also felt kinda strange
to explicit initialize the first element to zero and the rest to zero
implicit.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 22:47:12 +01:00
Anton Lundin
6ff345731b Fix another potential crash
Initialize diveplan.dp to NULL, so we know that we will bail in
drawProfile, when the initial settingsChanged is fired.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 21:40:12 +01:00
Sergey Starosek
a0eb9013b1 Re-enable login and password fields after upload
Give user the possibility to re-enter username and password
after unsuccessful upload due to wrong credentials.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 20:29:38 +01:00
Anton Lundin
35b0924335 Fix potential crash
Initialize stagingDive to NULL, so we know that we will bail in
createTemporaryPlan, when the initial settingsChanged is fired.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 20:11:12 +01:00
Sergey Starosek
5cb47c3de8 Fix tab order for webservices dialog
At least username and password have to follow each other.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 18:50:33 +01:00
Lubomir I. Ivanov
7c4b083c2b Divelogs.de: change the 'Apply' button to 'Done' for upload
Post downloading we have an 'Apply' button that can be clicked
to apply/merge the downloaded dives. When uploading we
rename the button to 'Done' and enable the button if the
upload was successful. The 'Cancel' button on the other hand
becomes disabled.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 18:40:52 +01:00
Lubomir I. Ivanov
8f29df6e5a Divelogs.de: use qDebug() instead of fprintf()
Use qDebug() instead of fprintf(stderr, ...) in
prepare_dives_for_divelogs().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 18:40:02 +01:00
Lubomir I. Ivanov
04b62a46e9 Divelogs.de: attempt to impletent 'Cancel' properly
The correct way to stop the upload/download is to use
reply->abort(). If the dialog closes, post exec()
we check if the reply 'isOpen' and abort and delete it.

Without this modification the program seems to crash
as the connection is still in action and it attempts
to read an already deleted file.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 17:42:06 +02:00
Lubomir I. Ivanov
e0acad42aa Divelogs.de: store the user/pass on upload
We store the user/pass for 'Apply' when downloading, but
we also want to store these values for 'Upload'.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 16:45:54 +02:00
Lubomir I. Ivanov
de8d532adb Divelogs.de: Improve the error handling post DLD creation
Only show a filename in the error report if such was previsly
set. We also add a string for translation, that is shown
in the main window.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 16:23:58 +02:00
Lubomir I. Ivanov
ca731cef89 Divelogs.de: Add a 'filename' field when uploading
The 'Content-Disposition' header, requires that we pass
'name' but also a 'filename' field.

Suggested-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 16:23:58 +02:00
Lubomir I. Ivanov
70fce6ce6b Divelogs.de: further improve reading the server reponse
We now check for the following entries:
<Login>succeeded</Login>
<FileCopy>failed</FileCopy>

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 16:23:57 +02:00
Lubomir I. Ivanov
5514499867 Divelogs.de: improve prepare_dives_for_divelogs()
prepare_dives_for_divelogs() is based on GTK / C code
where we used GLib methods to generate a temp zip file.
Qt has QTemporaryFile, but it seems there is some sort
of a problem when using with with zip_open
(ZIP_CREATE considered) or at least in this particular case.

To workaround that, we generate a random name ourself with qrand()
and simply pass it to zip_open (with ZIP_CREATE) and then return
the filename.

Also (!), there is memory corruption when trying to return
'tempfile'. This wasn't the case with the C compiler,
to my knowledge. Regardless of this fact the generated
zip does not look corrupt.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 16:23:57 +02:00
Lubomir I. Ivanov
231e02f97d Divelogs.de: parse response once the upload is finished
This is based on the GTK version.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 15:51:18 +02:00
Lubomir I. Ivanov
0905e4f0ab Divelogs.de: add code for zipping up all dives
prepare_dives_for_divelogs() comes from the GTK version, originally.
The upload seems to fail at this point with an error.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 15:51:17 +02:00
Lubomir I. Ivanov
5869712569 Divelogs.de: add a divelist context menu item for upload
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 15:51:17 +02:00
Lubomir I. Ivanov
be16ade038 Divelogs.de: allow import of downloaded dives
This patch adds commands to the dialog buttons, to apply
(and possibly show an error if 'parse_file' fails',
reject, or show help - which is a link to the 'divelogs.de'
website.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-09 15:51:17 +02:00
Anton Lundin
e6c51cc314 Implement a settingsChanged in DivePlannerWidget
This is so we can default to the GF's from the preferences. We need the
bail handler in createTemporaryPlan, because its triggered when we
change GF's, and if we don't have a stagingDive there, we will access a
NULL-pointer.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-09 07:51:40 +01:00
Anton Lundin
44848d5457 Keep track of user requested minimum depth
When got auto-rescaling of the depth scale, always reset the depth scale
to what the profile would suggest. This introduces a concept of user
requested minimum witch we will update and not scale down to lower than.

Reported-by: Henrik Brautaset Aronsen <henrik@synth.no>
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 16:20:40 +01:00
Anton Lundin
a145c2e61a Update the diffrent units when switching system
When switching between metric and imperial, we should also show that the
different units are switching too. This signals the greyed out
radio buttons to switch to the right system.

Fixes #347

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 16:18:00 +01:00
Anton Lundin
8c65173746 Rename the radio button to match label kgs->kg
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 16:17:52 +01:00
Anton Lundin
e39ec4e564 Fix units boxes in preference panel
The groupBox-es got renamed, and thus the unit-systems radio-buttons
was enabling/disabling the wrong buttons.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 16:17:43 +01:00
Anton Lundin
f96ea9cc9a If we have defined a gas, default to that one.
If we start to define a gas, we should use that one by default instead
of air.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 09:42:15 +01:00
Anton Lundin
01e3210725 Calculate gas consumption for planned dives
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 09:42:03 +01:00
Anton Lundin
caf4d85d0a Silence signed vs. unsigned compare warning
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 09:41:42 +01:00
Anton Lundin
1ec61e1288 Remove the air point at 0,0
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 09:41:31 +01:00
Dirk Hohndel
4beb53f27e Actually process the dives downloaded from divelogs.de
Silly mistake in commit 93b5c0cd14 ("Finish download from divelogs.de"):
parse_file() doesn't call process_dives() - the caller needs to do that.

Fixes #344

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 06:42:24 +01:00
Dirk Hohndel
50a1ed8d6e When the user cancels a download, reject already downloaded dives
This seems like the more logical behavior, anyway. Cancel means you didn't
want the result...

Fixes #341

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 06:33:46 +01:00
Dirk Hohndel
ad6fab9fb0 Remove pointless code
When removing the selected dives from their trips, it makes no sense to
check if the pointer was actually pointing at a valid dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-08 06:05:54 +01:00
Sergey Starosek
4623d7098b Build language list from Subsurface translations
On Windows platform translation/ folder contains Qt translation
files as well. This results in extra languages in preferences.
From now we filter these translations and choose only those matching
^subsurface_*.qm$

Fixes #339

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 12:06:33 -08:00
Dirk Hohndel
b144e64b9b Fix typo in color
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:13:55 -08:00
Sergey Starosek
482214703b Language chooser improvements
Show language instead of country, sort the list.
Show country in brackets to avoid ambiguity for locales like
de_DE and de_CH.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:09:05 -08:00
Anton Lundin
4c3f51291e Show CC-sp in bar, and not mbar
Fixes #257

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:09:05 -08:00
Anton Lundin
755ea74492 Add support to edit a planned dive
Left to do is to remove all the auto-added deco-points, aka the ones
that had entered==FALSE before we created a dive from the plan.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:09:05 -08:00
Anton Lundin
bb979260b0 Fix gas for start dp
It previously always started with o2 in air, now we start with 0 as its
the same default as in the cylinders too, which fixes a uninitialized
index there too.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:09:05 -08:00
Anton Lundin
90634b3814 Propagate gas and setpoint from previous point
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:09:05 -08:00
Anton Lundin
4696354f4b Adapt depth-scale to current way points
If the scale is too big or too small, adapt the scale automatically.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 08:02:34 -08:00
Anton Lundin
f9b7c5dfe9 Make units in cells consistant in CylindersModel
Now they all have units in the cells.

Fixes #259

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 07:39:12 -08:00
Martin Gysel
d9ca999a17 redraw profile (actually clean it) if no dive is selected
otherwise the previous selected dive is still visible in the profile
view. clicking on edit crashs subsurface: null pointer dereference in
editCurrentDive as it uses 'current_dive' which is null.

Signed-off-by: Martin Gysel <me@bearsh.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 07:27:46 -08:00
Sergey Starosek
bf88efae08 Fix profile legend strings
Use proper case and subscripts for gas names on profile legend.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 07:25:19 -08:00
Dirk Hohndel
f6ece43cff Renumber dialog should default to start at 1
Also make it somewhat larger and less crowded.

Fixes #338

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-07 06:49:52 -08:00
Thiago Macieira
53f38a2410 Set the menuRole property on certain menu entry QActions
Telling Qt that the "Preferences" menu entry is
QAction::PreferencesRole will make it be moved to the System menu on
Mac, for example.

Fixes #327

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 21:46:37 -08:00
Dirk Hohndel
df464fcef1 Stub out a mark dive invalid function
Not sure I'll be able to finish this for 4.0

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 17:40:59 -08:00
Dirk Hohndel
93b5c0cd14 Finish download from divelogs.de
This is far from perfect.
Avoid a weird warning when total = -1 is passed into the progress bar.
Enable the Accept button once the download completes.
Merge the downloaded dives into the existing dive list on Apply.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 17:13:03 -08:00
Dirk Hohndel
3a0f138023 Whitespace cleanup
That one slipped by me...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 17:09:08 -08:00
Tomaz Canabrava
61d5aac2e8 Do not change the current Directory
Qt has a really strange API for directories. when you create a QDir
and set's the currentDir on *that* QDir you created, it's for the
whole application and not just for that variable. Then when the
variable is out of scope, the directory doesn't change back - ugh.

The solution is not to call setCurrentDir on the newly created QDir (which
was quite good since it's also a code cleanup. )

[Dirk Hohndel: modified to undo the far less elegant fix I had made in an
               earlier commit]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 13:21:24 -08:00
Dirk Hohndel
e015effb47 Don't change working directory when looking for tranlations
And only replace 'bin' if there is a bin in the path...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 12:03:12 -08:00
Tomaz Canabrava
9b7b477d7c Added 'English' and 'Use System Default' options.
These complete the ability to select languages from the preferences panel.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 11:58:29 -08:00
Tomaz Canabrava
7436178fe0 Added a filter option to the Language Chooser
This patch adds a filter option to the Language Chooser.
if you choose filter, only the filtered options will appear.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 11:56:00 -08:00
Tomaz Canabrava
f20e07dcf1 Code Cleanup
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 09:54:36 -08:00
Tomaz Canabrava
8a116ba510 Settings for Display preferences didn't really set the preferences.
The code that should set the preferences was actually retrieving it,
this will correctly set it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 09:54:19 -08:00
Tomaz Canabrava
4e263bae98 Added a language preference to the Settings.
When the user first opens the application the default language is
selected; this can be changed to a hardcoded one by going to system
preferences and choosing the one you want.

Restart required.

Fixes #136

[Dirk Hohndel: whitespace fixes, removed qDebug() call, rephrased the
               message displayed prompting the user to restart.]
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 09:49:05 -08:00
Lubomir I. Ivanov
bfe5ccda1c Print: add a safe-guard if table print rows are too big
We do not support rows larger than a single page as the
PrintLayout algorithm will enter an infinite loop,
therefore we put a limit of 15 lines for the location text.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 09:35:09 -08:00
Dirk Hohndel
8f58faf431 Fix crash in table print crash
sizeof(array) is the total size in bytes, not the number of elements...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 09:30:39 -08:00
Lubomir I. Ivanov
5506fa4b38 Print: fix issues when printing a lot of dives in table print
This patch improves the algorithm when estimating where
to put the new page header in the table and how we move
larger dive rows on a new page. It now performs a couple of
'passes', where the first one processes the table and the
second one is used to compensate for the lost space.

Fixes #326

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 09:23:02 -08:00
Sergey Starosek
07e1e416cf Add icon and title for User Manual window
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-06 07:31:08 -08:00
Lubomir I. Ivanov
26d2cc0fef MainWindow: fix setTitle() calls
setTitle() works with an enum that can be fed different values,
and other we may have eventually. For example not only "app title",
or "app title: filename", but others, like dates, certain app status
and so on.

Patch fixes an issue where deleting a single dive in the divelist
resets the title to "Subsurface" only. clearUpEmpty() should only
call setTitle(MWTF_DEFAULT) if no file is currently open.

It also adds a safe-guard to revert back to MWTF_DEFAULT if
no file is open but setTitle is called with MWTF_FILENAME.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-05 08:04:55 -08:00
Lubomir I. Ivanov
94f85bbef9 Print: fix truncated table in "Table print" mode
The whole procedure here is quite confusing.
Once we have our model populated, we need to estimate where
to put page headers (each page has one) and to do that we
store a list of indexes, where a page would begin (pageIndexes).

But since a row can end up being chopped at the end of a page
we move it to a new page and this particular part was lacking
compensation for the moved row's height, when storing the *last*
pageIndex.

For N number of pages we are losing N - 1 dives, or such that
were previously transferred on a new page.

See #326

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-05 08:04:48 -08:00
Sergey Starosek
09a8a85bab Open external links in default browser
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-05 07:31:29 -08:00
Tomaz Canabrava
441838def0 Different Icon for a Bookmark Event.
This patch adds a different icon for a Bookmark Event, and it
also cleaned a lot of code. :)

See #300

[Dirk Hohndel: made the two icons slightly bigger]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 19:41:29 -08:00
Tomaz Canabrava
d3a56c137b Fixes positioning of the legend in View and Print modes.
This patch makes a better assumption of the location for the
legend in both View and Print modes. It also fixes a few oddities
that we used to have ( like hardcoded spacing ).

We are taking the scene().sceneRect() now into consideration to
better place it on canvas.

Fixes: #322

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 19:31:10 -08:00
Dirk Hohndel
20d924a16e Compile fix
Otherwise errno is undefined (at least for me on Linux).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 16:29:55 -08:00
Dirk Hohndel
421dceba1e Merge branch 'improve-subsurfaceweb' of git://github.com/thiagomacieira/subsurface 2013-12-04 16:21:44 -08:00
Anton Lundin
28b8d177c3 Cleanup some uninitialized variables
I can't really see any point in passing a local loop variable around,
and copying a uninitialized pointer. Better use local variables there
and let the compiler optimize them away if it feels for doing that.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 15:57:53 -08:00
Anton Lundin
a0df62d913 Add some limits to the GF's
Sets the limit for GF's in the preferences panel to 1<=x<=150 and color
it read if gf > 100. Remove the % in the diveplanner view that was
rejected for the preferences view.
The 150 maximum is needed because QSpinBox defaults to maximum 99.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 15:49:55 -08:00
Lubomir I. Ivanov
662e642ac9 Webservices: fix QString argument for zip_open()
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-04 15:39:35 -08:00
Dirk Hohndel
b5d3476b0b Allow comma separated CSV files
The separator selector in the CSV import dialog was unused. This passes
the value into the xslt and adds ',' as possible value.

I'm sure this could be done much better (pass the actual character instead
of the index), but I couldn't get that to work and this does seem to do
the trick.

Also added a test dive to test this feature.

Fixes #321

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 15:27:09 -08:00
Dirk Hohndel
5fc50b2aab Improve labeling for partial pressure graphs
This backs off a little on what was added in commit c1102a38f3 ("More
gradient on the partial pressure graph.") - the numbers simply got too
busy. I also slightly changed the positioning of the numbers to be a
little more "natural looking".

Fixes #323

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 13:27:34 -08:00
Tomaz Canabrava
66716b5297 Make Gnome3 be bearable
The layout of Subsurface on Gnome 3 had a few flaws, since Qt and Gtk
are not really compatible. This implements a CSS that makes the use
of Gnome 3 more pleasant to the eyes.

Fixes #318

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 12:41:07 -08:00
Lubomir I. Ivanov
d7a19b318e Divelist: fix a crash when updating the preferences
Hitting apply in the preferences dialog causes a QList assert.
This led to DiveListView::reloadHeaderActions(), where
we have an out of range access.

Patch makes the column count match the header action count.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-04 10:43:54 -08:00
Lubomir I. Ivanov
fc06a69c43 PrintDialog: reset the progress bar each time the dialog opens
This requires us to expose the progressBar as a private
class member.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 15:52:21 +02:00
Lubomir I. Ivanov
e4f35fb51a Print: fix some forward declarations
In the PrintLayout constructor we receive a pointer
of PrintDialog, but the type is incomplete, as we only
forward declare it in the class header. If we decide
to eventually call a method from PrintDialog we also
need to include printdialog.h in printlayout.cpp.

The patch also fixes a similar issue in printdialog.h.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 15:47:33 +02:00
Lubomir I. Ivanov
95e00b0acd PrintLayout: emit progress from printTable()
printTable() now emits a 'signalProgress'
to the PrintDialog's progress bar, but it has 3 stages (loops):
- pupulate a model
- process all rows
- render the table in pages

This requires that we also separate the progress in 3 stages
of 33%.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 15:35:07 +02:00
Lubomir I. Ivanov
ac7126b84a PrintLayout: emit progress from printProfileDives()
printProfileDives() now emits a 'signalProgress' each
time a dive is done processing.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 15:16:20 +02:00
Lubomir I. Ivanov
08cf1be212 PrintLayout: add estimateTotalDives()
estimateTotalDives() is used to calculate the total dives
to be printed, it requires a 'struct dive' pointer
and a couple of 'int' pointers for the iterator 'i' and
'total' return.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 15:13:40 +02:00
Lubomir I. Ivanov
ecf483db46 PrintDialog: add a 'Close' button
The dialog was missing a 'Close' button so we add it.
Also change the mnemonic of the 'Preview' button, as it
was the same as the one for print 'Print'.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 14:14:04 +02:00
Lubomir I. Ivanov
c89d83611b PrintDialog: make the dialog slightly larger
I don't recall why but this dialog ended with a fixed size
(setFixedSize()), so it has to be re-adjusted each time a change
is made in there. We resize it to compensate for the addition
of the progress bar.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 13:55:30 +02:00
Lubomir I. Ivanov
d90cca5c4e PrintDialog: add separate Preview/Print buttons
We rename our old 'Print' button to 'Preview' (as it did just that),
and add a new one called 'Print' which does the direct printing,
by creating a QPrintDialog instance. Both buttons are located
on top of the dialog for now in a QHBoxLayout.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 13:51:34 +02:00
Lubomir I. Ivanov
576c3f559f PrintDialog: change a comment
The entire dialog is 'temporary' and should be replaced,
so we slightly modify the comment about the PrintOptions widget.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 13:46:08 +02:00
Lubomir I. Ivanov
eb1aa5a896 PrintDialog: add a progress bar in the dialog
This dialog will be eventually replaced by a better one, but
for now we can add a progress bar to it. Next step would be to
add separate Print/Preview buttons and emit progress bar updates
from the PrintLayout class.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-12-04 13:41:19 +02:00
Dirk Hohndel
06711732c9 Correct parameter names
It's very confusing when a parameter is called "minutes" but holds
seconds...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 20:55:00 -08:00
Dirk Hohndel
623be2e46f Fix bug in creating dive plan from dive
We don't want to add the last sample - the dive plan functions want to
figure out the path to the surface by themselves and get confused by this.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 20:52:28 -08:00
Tomaz Canabrava
9190c97a3c Attempt to fix the 'click goes to 0,0' thing on the globe.
This patch attempts to fix the 'click goes to 0,0' bug on the
globe. it moves a bit of code around and I particulary don't
like the way that we are dealing with 'EditMode', I think I'll
refactor that for 4.1. We are alredy dealing with a bunch
of states, maybe a State Machine will help on removing code-complexity.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 18:48:17 -08:00
Tomaz Canabrava
d128b74a8a Select the newly added dive after adding it.
Selects the newly added dive after adding it, it uses a
rather ugly hack that forced a unselected dive to be
marked as 'selected' so we can remember what was the
newly added dive, and select it after.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 18:48:17 -08:00
Anton Lundin
04bbfe2ab1 Disable calc_ndl_tts for print
NDL and TTS doesn't show up in the printed profiles, and it takes
significant time to calculate, so just don't do it.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 15:22:49 -08:00
Dirk Hohndel
25bfcf5f6d Don't call fixup_dive when editing a trip
When editing a trip the key for the notesBackup is NULL. Don't call
fixup_dive() on that...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 15:17:38 -08:00
Thiago Macieira
a1972bc343 Implement the network part of the support for divelogs.de
This implements support for:
 * uploading a zip file containing dives - untested
   (the zip file must have been prepared elsewhere)
 * downloading the dive list and the dive XML files

The networking part is finished, but it's missing the actual import of
the XML files sent by divelogs.de.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
bffb384c0f Make the text in the download status selectable
So I can copy any URLs it shows there in order to test elsewhere...

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
919c7045b7 Add support for timing the download out
The time out is 30 seconds from the start of the request or from the
last time we got any data from the server.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
ab1b314a84 Set the download reply pointer to NULL after dismissing it
QNetworkReply might emit signals after it's been told to go away. We
don't want to change the status after that.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
fa07f554e2 Properly reset the state of the download dialog before dismissing
Re-enable buttons that should be enabled by default, disable the others,
set the status to empty, make the progress bar go back to zero.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
481ddf43c6 Improve the status message in the download dialog
This also fixes a typo (untill -> until).

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
be7bbb2a7d webservices: Move the static functions to the top of the file
Just my OCD asserting itself. It looks cleaner this way, if the static
functions aren't interleaved in the middle of the WebServices class.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
ff96bcb0fc Make the QNetworkAccessManager a singleton available to all
One of the rules of using QNetworkAccessManager is to share it among all
users, since sockets and other state can be shared. Looks like Marble
doesn't allow us to set it, though, and it creates multiple instances.
I'll prepare an upstream patch to fix that sometime.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:53:00 -08:00
Thiago Macieira
b38eac89e4 General fixes and improvements 2013-12-03 13:52:59 -08:00
Thiago Macieira
0ed95678ba Whitespace: fix indentation in subsurfacewebservices.* to use tabs
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-12-03 13:52:59 -08:00
Henrik Brautaset Aronsen
b1febf17b1 Make sure the save/cancel message is always shown
An addition to the "Move dive notes edit message above the
scrollable widget" commit:  Make sure the save/cancel message is
always displayed on top, regardless of which tab is selected.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 13:01:16 -08:00
Henrik Brautaset Aronsen
9b51901f35 Text cleanup to amend lacking consistency
- Removed the "Visible:" header on the column selector.  It doesn't
  have to be there, and it's not in the similar equipment column selector
- PO2 --> pO₂ (and others)
- Use same initial case in the units selector in preferences

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 13:01:14 -08:00
Tomaz Canabrava
a75168dcc9 Add legend for the Partial Gass Pressure if active.
This patch adds legend for the partial gass pressures if the
graphs are active. when enabling / disabling the square
that represents the color of a gas will also appear / disappear.

Fixes: #272

[Dirk Hohndel: minor changes to layout and whitespace]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 12:58:54 -08:00
Henrik Brautaset Aronsen
48cd4af851 Move dive notes edit message above the scrollable widget
The "Save" and "Cancel" buttons disappeared when scrolling to the
bottom of the notes widget.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 11:30:25 -08:00
Sergey Starosek
8189790815 More strings to be translated
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 11:14:41 -08:00
Tomaz Canabrava
80265e4b3f Fix ignoring empty selections on the globe and code cleanup.
If the 'mouseClicked' didn't get any dives at the click-geolocation,
ignore it and do not try to select an empty selection. this was
causing a lot of issues when map-navigation.

Also, good deal of code cleanup.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-03 11:07:59 -08:00
Dirk Hohndel
a529285e9e Make dive edit message box tex more concise
commit 3c064d5857 ("Make the message when editing a dive fit better")
kinda fixed the wrong problem. A better solution was suggested - just drop
the instructions regarding Cancel / Safe. It's quite obvious what to do
mow that the buttons are part of the message.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 15:48:01 -08:00
Dirk Hohndel
43630cabd6 Don't store translated standard weight system names
For the names that we have in our "default set" we need to store the
English name so Subsurface will "do the right thing" when opening the file
in a different locale.

With manually entered names in a local language there's not much we can
do.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 12:41:23 -08:00
Anton Lundin
6294c6b14b Remove unused variable
Leftover from previous code that called get_gas_string

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 12:33:38 -08:00
Tomaz Canabrava
599ffdc2a9 Move code outside of for-loop.
This piece of code didn't need to be on the for-loop, so
let's remove it out of it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 11:41:03 -08:00
Tomaz Canabrava
7481746d91 Huge speedup when selecting Dives from the Globe View.
The old code ( slow++ ) ignored that each new dive-selection
we recreated all information on the profile window, so this
version ( a lot more verbose, I know. ) will ignore all dives
that are being selected and will only send the 'dive was selected'
information in the last line of the algorithm, instead of calling
it for each dive on the list of 'to be selected' dives.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 11:40:39 -08:00
Dirk Hohndel
768cab66cc Third time's a charm: translating weight system description
Still trying to fix the same issue that I already tried to address in
commit e0b70b82ca ("Fix translation of weightsystem names") and before
in commit dc03b7e7d6 ("We need the correct context to translate event
names").

I missed the WeightModel. Hopefully this was indeed the real fix.

Fixes #312

(I know, I keep saying that)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 10:19:59 -08:00
Dirk Hohndel
3c064d5857 Make the message when editing a dive fit better
This should keep the message widget visible without horizontal scroll bar,
even on fairly small screens.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 09:55:18 -08:00
Tomaz Canabrava
7ce12f1e8b Removed The button box from mainwindow, buttons are now on the message.
The button box on the bottom of the window made it a bit cluttered
on small screens, this patch uses the window of the MessageWidget
to show the butons - this way less space is used and things are better
spaced on screen.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 09:55:04 -08:00
Tomaz Canabrava
d26f109fba Fixes Setting the dive-location via the map.
This patch adds a context menu to set the dive location
via the globe, being the dive with a coordinate or not.

It also fixes setting the dive location on edit mode.

Fixes: #315

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 09:44:55 -08:00
Lubomir I. Ivanov
bbc022ba18 MainWindow: store the window maximized state
We add the "maximized" entry for the settings group "MainWindow",
and store it on close, so that the window state is the same on
the next run. But then also, we only store the window size and resize
to that size if not maximized. This attempts to preserve a "restored"
window size.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 08:47:23 -08:00
Dirk Hohndel
e0b70b82ca Fix translation of weightsystem names
This is very much the same as in commit dc03b7e7d6 ("We need the correct
context to translate event names"). I didn't pay enough attention when
reading the bug report and missed that the weight system names were also
not correctly translated.

Fixes #312

(I hope this time for real)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-02 07:36:40 -08:00
Dirk Hohndel
502a514e91 Reflect air and water temperature changes in dive info
When editing air or water temperature, you are actually editing the
information in the active divecomputer structure. But the Dive Info shows
the summary data created from the temperature data in all dive computers.
For most people who will only ever have one divecomputer per dive this may
seem like an artificial distinction, but it's very important if you track
more than one computer.

So in order to have an edit reflected in what's shown, we must redo the
"summary creation" for data from the different divecomputers into the
summary fields of the dive.

Fixes #313

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-01 20:17:17 -08:00
Dirk Hohndel
dc03b7e7d6 We need the correct context to translate event names
Qt assumes that all strings are in the context of the class in which you
use them. So when we want to display the translated event names from
within the ProfileGraphicsView we need to make it explicit that these are
strings that come from the C part of the code.

Doing that showed another bug in the code where we foolishly compared the
translated text to a fixed string. Not smart.

Fixes #312

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-12-01 18:03:32 -08:00
Sergey Starosek
02c887e9ab More strings for translation
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 12:01:51 -08:00
Sergey Starosek
988ddb84a6 Add application icon to dialogs
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 12:01:32 -08:00
Thiago Macieira
b22f1da59e Fix all leak-at-exit from singletons in Subsurface
Subsurface creates a lot of singleton instances on demand, but nothing
ever deleted them. Since they are singletons, these memory allocations
are technically not leaks. However, they clutter the output in valgrind
and other memory analysers, hiding the real issues.

The solution is to delete these items at exit. For the models and for
gettextFromC, the solution is to use a QScopedPointer, which will delete
its payload when it gets destroyed. For the dialogs and other widgets,
we can't do that: they need to be deleted before QApplication exits, so
we just set the parent in all of them to the main window.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 09:28:42 -08:00
Thiago Macieira
bd7ded8894 Delete the graphics items for the ticks and labels in the ruler
Ruler::updateTicks() was creating them, but nothing deleted them.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 09:25:16 -08:00
Thiago Macieira
ba88a3358d Fix memory leak of the MinMaxAvgWidgetPrivate
Found by Dr. Memory, run by Lubomir:
Error #63: LEAK 24 direct bytes 0x344f42e8-0x344f4300 + 0 indirect bytes
 # 0 replace_operator_new                             [d:\drmemory_package\common\alloc_replace.c:2421]
 # 1 MinMaxAvgWidget::MinMaxAvgWidget()               [qt-ui/simplewidgets.cpp:64]

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 09:25:11 -08:00
Thiago Macieira
58d37e0200 Fix uninitialised variable read
Found by Dr. Memory, run by Lubomir:
Error #48: UNINITIALIZED READ: reading register al
 # 0 StarWidget::mouseReleaseEvent()                        [qt-ui/starwidget.cpp:29]

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 09:24:59 -08:00
Lubomir I. Ivanov
22e0323d6a Print: fix wrong Max. CNS / SAC columns
Swap the places of the CNS and SAC values in the profile tables.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 19:10:47 +02:00
Lubomir I. Ivanov
1ab915a7d9 Print: add an icon for the print dialog
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 18:56:25 +02:00
Lubomir I. Ivanov
f183da546b Print: adjustments to PrintDialog
- Hide the sizeing sliders from PrintOptions. we don't really
support any of those in PrintLayout and these are not that
useful and easy to implement, until some sort
of layouting/templating system is in place.
- Move the 'Print' button on top as a workaround, since if
it's bellow the print options it stays bellow an empty area
where the now hidden sizing sliders are.
- Resize the dialog to a smaller size

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 18:56:25 +02:00
Dirk Hohndel
a268311a0b Merge branch 'print' of github.com:neolit123/subsurface 2013-11-30 07:55:58 -08:00
Sergey Starosek
527ae08e76 More strings to be translated
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:53:26 -08:00
Sergey Starosek
66a2f404c4 Fix dialog margins and spacing
Make it consistent with other application dialogs.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:53:12 -08:00
Miika Turkia
cded8eb198 Fix string in About dialog for translation
The translatable string in about dialog is truncated at the
VERSION_STRING. Thus it has to be given as argument to the tr function.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:47:37 -08:00
Miika Turkia
5a1a25a476 Fix a crash when no trip exists
When there are no trips at all, we have to skip the Yearly statistics
alltogether, including the header line (that should display all the
dives added together).

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:46:17 -08:00
Lubomir I. Ivanov
d4766a8cce Print: yet another font adjustment for the profile table
We now only use a slightly large font for the "Dive #" entry.
All other font sizes remain at 9px.

Another change is that we now attempt to use 11px for
individual row height. This makes the table at least 12px bigger
(n_rows * increment), but does not cut letters like 'g',
which go slightly bellow the font baseline.

Perhaps this can be improved later by adjusting the font
and row sizes again.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 17:37:27 +02:00
Anton Lundin
f7efc07817 Remove use of uninitialized variable nr
nr was used but never initialized.
Also, the code removed used select_dive had likely just been forgotten to
be removed when the correct code using selectDive() was added a little
later in the function.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:36:13 -08:00
Lubomir I. Ivanov
526985d6e5 Print: fix missing vertical line at the last column
There was a line missing in the right-most column wrapping
the table for the profile print.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 17:35:55 +02:00
Anton Lundin
4eab1cce20 Remove unused variable
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:21:49 -08:00
Anton Lundin
047e1cf013 Reorder initializers to be more c++-strict
c++ have some idea about in what order things should be initialized.
This makes us comply with that order.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:21:24 -08:00
Henrik Brautaset Aronsen
10a43af066 Minor text cleanup
Use the same case for the first letter in the dive table column headers,
use '%' for both gases in the planner, and show "Start time" instead of
"Starttime".

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:19:48 -08:00
Henrik Brautaset Aronsen
51d298c8d5 Separate text labels for air and water temperatures
The "air / water Temperatures" label didn't look to good.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:18:39 -08:00
Alexandre Belloni
1ea1c24292 QT-UI: fix some typos
Signed-off-by: Alexandre Belloni <alexandre.belloni@piout.net>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 07:16:08 -08:00
Lubomir I. Ivanov
d439d381ca Print: update the values for DM, buddy, suit, etc
We update the values for divemaster, buddy and etc...
Rating and visibility are currently displayed as "x / 5"
values.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 17:12:08 +02:00
Lubomir I. Ivanov
156815f041 Print: update printing for gas, CNS, SAC and weights
Following the new layout for the profile print, we separate
the used gas like so:
AL80 / EAN33 / ...

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 16:51:28 +02:00
Lubomir I. Ivanov
35f1f716a5 Print: add more table headings for Divemaster, Buddy, etc..
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 16:23:19 +02:00
Lubomir I. Ivanov
ab8e781660 Print: set correct row/column location for profile notes
NOTE: also comment out the old cylinder/weight printing code...

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 16:10:48 +02:00
Lubomir I. Ivanov
19b68d38ac Print: update the profile print table Gas, SAC, CNS titles
This only updates the titles to correct column offsets.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 16:03:46 +02:00
Lubomir I. Ivanov
d0dfec929f Print: give more space for the depth and duration column
There is not enough space for the last column in "6 print"
even for the english text. This gives more space extending
the row, but for some languages it will be an issue, thus
strings have to be eventually shortened by the translators.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 15:50:47 +02:00
Lubomir I. Ivanov
89ba9b113d Print: remove the helper function to truncate strings
ProfilePrintPmode::truncateString() was not really needed,
because long text *should* be trunctated by the table itself.
Also we now are going to have multiple lines for notes,
so the auto-trim should work.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 15:46:13 +02:00
Lubomir I. Ivanov
a60475d336 Print: adjustments to font sizes and alignment
The new profile table requires different alignment and
different font sizes for specific cells.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 15:41:18 +02:00
Lubomir I. Ivanov
f85b434ef1 Print: update drawing of the profile table grid
The new table layout requires that we draw the vertical
and horizontal lines differently.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 15:32:14 +02:00
Lubomir I. Ivanov
3b7500fd33 Print: setup for a new profile table layout
- Adjust the new rows and column count
- Set new row and column spans

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2013-11-30 15:32:14 +02:00
Michael Andreen
648f02c669 Avoid using manual timezone offsets.
Since some early bird thought it was a good idea to force the rest of us
to get up early by changing our clocks during summer, we can not use the
currentDateTime() to determine the timezone offset for all dives.

Instead, we just pretend that everything is in UTC and avoid doing the
offset calculations.

If only that early bird knew that if clocks stayed consistent throughout
the year then I could be asleep instead of fixing this in the middle of
the night..

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 20:31:51 -08:00
Dirk Hohndel
d668f5dc8e Turn off dive location edit hint when cancelling dive edit
Simply clear the edited dive (regardless of whether it's set) and hide the
message if visible. The previous code was a little too convoluted...

Fixes #305

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 13:12:44 -08:00
Dirk Hohndel
499554e799 Removed another unused text
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 12:11:12 -08:00
Dirk Hohndel
ff5fa70a88 Editing air or water temperature should modify dive computer, not dive
The dive fields are summary fields, the actual data needs to be in the
divecomputer specific fields.

Fixes #307
2013-11-29 12:05:21 -08:00
Dirk Hohndel
d936c55a01 Make sure Subsurface will find Marble theme when installed on Linux
We need the marble data to go into a subdirectory of /usr/share/subsurface
and we need to search for both data and marbledata when trying to find the
theme.

Fixes #310

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 11:46:41 -08:00
Dirk Hohndel
766b6b3e52 Don't call deleteLater on ui elements
I'll admit that I don't fully understand this part of Qt.
But commenting out the deleteLater (like we already do for another one)
fixes the crash - and shouldn't do more than add a potential small memory
leak.

Fixes #309

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 11:39:36 -08:00
Dirk Hohndel
7c28cb989b Make sure Subsurface webservice user id is always uppercase
Otherwise the download will fail.

Fixes #308

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 11:36:06 -08:00
Dirk Hohndel
82ac264815 Remove more unused windowTitle properties
These just create pointless source strings for translations.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 11:02:15 -08:00
Dirk Hohndel
adf6d1e22d Units should be lower case
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 10:20:10 -08:00
Dirk Hohndel
b76a947878 Don't use lowercase 'o' for O2
That just looks odd

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 10:16:47 -08:00
Dirk Hohndel
f1cfaa6c08 Fix incorrect string for PPO2
It's easy to miss 02 vs O2 (I guess that's depending on your screen font).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 10:09:14 -08:00
Dirk Hohndel
a4e6826d15 Remove pointless window title
Otherwise it shows up in the strings to be translated

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 10:06:55 -08:00
Sergey Starosek
f24748253c Redesign CSV import dialog.
This fixes groupbox alignment and dialog resize issues.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 08:10:50 -08:00
Sergey Starosek
0f7037a92f Remove duplicate verb in 'SAC' label
'Show' verb is already shown in the groupbox title and no other
labels have it.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 08:10:12 -08:00
Sergey Starosek
b57b36e662 Fix dialog titles
Use proper names instead of "Dialog"

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-29 08:07:26 -08:00
Tomaz Canabrava
f8c2efe1ce Fixes ToolTip Item showing out of boundaries tooltips
This patch fixes ToolTip Item showing out of boundaries
Tooltips when in resizing animation.

Fixes #294

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-28 15:29:01 -08:00
Tomaz Canabrava
3264255a7a Make it possible to hide some columns on the Cylinders Equipment pane.
This patch makes it possible to hide some columns on the Cylinders
Equipment pane. The 'remove' and 'type' are impossible to hide,
since they are the most important ones for a non-tech diver.

Fixes #281

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-28 15:28:15 -08:00
Tomaz Canabrava
c1102a38f3 More gradient on the partial pressure graph.
This patch adds a bit more of gradient on the lines for the partal
pressure graph grid, it also moves a tiny bit to the side the
even numbers so it's easyer to read when they are too near each other.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-28 15:27:18 -08:00
Anton Lundin
57fb878b41 Show/save weights up to and including last valid
Previous show and save code would have aborted at the first invalid
weight system. This makes sure we save and show all weight systems up
until and including the last valid.

If we had:
integrated: 1kg
belt: 2kg
ankle: 3kg

And changed belt to 0 kg, we would have only saved integrated 1kg, and
nothing about the belt or the ankle weights. This will save all of them,
and show all of them.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-27 14:13:47 -08:00
Anton Lundin
ab4115791b Show cylinders up to and including the last valid
Previous code aborted at the first invalid cylinder. This instead finds
the last valid and prints all the ones up until that one.

Fixes #295

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-27 14:13:02 -08:00
Dirk Hohndel
579c566bbe Rephrase tooltip
This seems to better explain what the button does.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-27 10:06:30 -08:00
Dirk Hohndel
cc91cad890 Make sure we keep our notion of what's selected in sync with the UI
When editing a dive, a group of dives or a trip we need to make sure that
we don't lose track of which dives and trips were selected. Otherwise we
might act on dives that DON'T appear selected in the UI but that we think
are still selected.

Fixes #304

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-27 08:39:47 -08:00
Anton Lundin
3fd39a7a87 Remove some constants and use helpers instead
We have allot of helpers, use them instead of local variants.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-27 08:30:12 -08:00
Tomaz Canabrava
c94101dd4f Changing the preferences should update the Add Dive interface
Since all internal units are in mm we needed to only update what's shown
on the interface.

Fixes #299

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-26 12:28:16 -08:00
Tomaz Canabrava
97fd22b1be Fixes the positioning of the ToolBar
This is a workaround, I plan to remove that toolbar from inside
of the Profile for the next version, but since it's there for now,
let's keep it.

This patch hides the toolbar when the zoomLevel != 0, since the
profile is unclickable while zoomed...

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-26 11:25:50 -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
Tomaz Canabrava
e91a1fc26c Fix ToolTip disappeared when resizing the ProfileWindow
When resizing the ProfileWindow and the tooltip was out of
boundaries, it was really out of boundaries and there was
no way to get it back ( besides re-expanding the window. )
this patch moves the tooltip to (0,0) and don't save that
position, so when the window is re-expanded, it will move to
the correct location again

Fixes #237

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-26 11:25:50 -08:00
Vinicius Machado
45f716f857 Re-enable adding a location to selected dive via double-click on the map
The fix for 'double click on the map shouldn't zoom' had broken the
selection of the current location for the selected dive, this patch
fixes that.

See #291

Signed-off-by: Vinicius Machado <vsmachado@gmail.com>
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-26 11:25:16 -08:00
Dirk Hohndel
eec732548b Switch tab title to Trip Notes when handling a trip
And switch back to Dive Notes when back to looking at a dive. This makes
things more consistent...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-25 11:05:09 -08:00
Anton Lundin
d0fbfc7a9c Create a drop down to choose default cylinder
This also renames the ui element to match.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-24 15:07:25 -08:00
Miika Turkia
ce525bd285 Adding trip based statistics
This adds trip based statistics to the Yearly Statistics
view.

Signed-off-by: Miika Turkia <miika.turkia@nixu.fi>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-23 22:07:18 -08:00
Dirk Hohndel
904c20feef Use the default cylinder if defined
With this every cylinder downloaded from a divecomputer that doesn't
provide cylinder data, and every cylinder manually added anywhere will
default to the default cylinder that is set in the preferences.

For people who most of the time dive with the same equipment (always on
dive boats with AL80, or almost always diving their personal HP119) this
should be a nice improvement.

If you don't like this behavior, simply leave the default cylinder setting
in the preferences empty.

This commit also fixes the incorrect s->value call (should be
s->setValue). I wonder what this did to the default filename before...

Fixes #145

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-23 22:01:11 -08:00
Dirk Hohndel
8e5c222e98 Create a text entry for default cylinder in preferences
We don't do anything with this just yet.
And frankly, a drop down of the cylinders that we know of would be even
better. But hey, it's a start.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-23 22:01:11 -08:00
Taiane Ramos
450fd9c7bd Save button on menu calls InfoWidget save
When editing a dive and clicking save button on menu bar, it saved
dive information but didn't mark dive as not being edited anymore.
For closing file, user should always click on the save button on
the bottom of the page and then saving it.
Now when clicking save button on menu bar, it will call the
accept_changes before saving to disk.

Signed-off-by: exhora <exhora.tat@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 21:39:20 -08:00
Dirk Hohndel
781266bf18 Work around QPlainTextEdit / QPainter bug on Mac
Actually, it's not so much "work around", it's just "disable our eye candy" for
tags on Mac. This is quite frustrating. When we do anything that has the
QPainter touch the widget from our GroupedLineEdit::paintEvent() path then the
QPlainTextEdit::paintEvent() doesn't render the text of the tags.

Fixes #298

Sort of.
But I guess tag text without eye candy is better than eye candy without tag text.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 09:44:28 -08:00
Tomaz Canabrava
a3ddb16d88 Hide everything 'floatable' by default on the globe.
Later we spacifically enable the scale, but Dirk asked me to
use the bare minimum of marble.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:40:56 -08:00
Tomaz Canabrava
abc81fbd01 Disables zooming by double click and context menu on marble.
Marble is a weird piece of Qt software, it seems that it wasn't
thought of being a library when first written. Most of its features
are not achieved by subclassing && overriding one of Qt default methods,
instead we need to eventFilter for almost everything ( which is a pain,
and a bit error prone - see our combo box delegate *puke*. )

This one's ready,  only one thing though - if we want to implement
our own context menu, we will need to use the eventFilter, and not
the contextMenuEvent.

Fixes #291

[Dirk Hohndel: this does not disable the context menu for me...]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:40:32 -08:00
Tomaz Canabrava
6fd0087a27 Show user-hidden widget when choosing Show All
A user could have hiddden and lost any of the four panels
on the interface. Now when he chooses 'show all', if a
part of the interface is hidden, it will be shown again.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:35:10 -08:00
Tomaz Canabrava
7ed2fde778 Small code cleanup on the CylindersModel
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:35:03 -08:00
Tomaz Canabrava
cdac737925 Better positioning of the text on Weightsystems table.
Same as the cylinder, but for weightsystem.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:34:45 -08:00
Tomaz Canabrava
bc461d091c Added a bunch of tooltips where I thought it was sane.
I think we should actually fill the app with tooltips and
whatsthis hints. justsain ;p

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:34:24 -08:00
Tomaz Canabrava
cee021ddd3 Better positioning of the text on the table cells.
Better positioning of the text on the table cells. On KDE systems the
text got too near the line that divided the cells, this way the text is
placed on the middle of the cell.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:33:49 -08:00
Tomaz Canabrava
0f85243cf3 Fixes the correct sizes of the tables when first open.
This patch fixes the correct sizes of the tables when first opened. It was
defaulting to 'resizeToContents', but most of the cases when first opened
we got no content, and this was bad. Now I'm defaulting to 30 when on the
'REMOVE' column and 80 on other columns.

Fixes #189

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-22 07:32:53 -08:00
Anton Lundin
891892cde4 Cleanup and bugfix gaschange event printing
When a gaschange to air happened, the code did
name += name=+ tr("air") which probably was due to the block being just
confusing with all the ?:
Unrolls to proper if statements, and fixes the bug.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:54:34 -08:00
Anton Lundin
26656310ab Add optional support for stopdepth import from csv
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:54:28 -08:00
Anton Lundin
5eccd73a30 Add optional support for cns import from csv files
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:54:21 -08:00
Anton Lundin
8dde12fa35 Add optional support for po2 import from csv files
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:54:16 -08:00
Anton Lundin
8e60f3bb44 Give room for more options in csv dialog
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:54:00 -08:00
Anton Lundin
cf06f78892 Make temperature optional in csv import
This adds a checkbox to be able to import csv files without temperature.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:53:54 -08:00
Anton Lundin
1a0adea0cc Rework csvimportdialog to make room for features
This rewires things a bit to make room for new features coming.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:53:49 -08:00
Dirk Hohndel
60a5d1d070 Fix a couple of warnings
Removing unused variables.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 15:50:56 -08:00
Patrick Valsecchi
fe2eabf375 Added a configuration option to have gf_low apply at max depth instead of at deepest ceiling.
Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 08:11:40 -08:00
Patrick Valsecchi
4c4a7a6d96 Refactoring of the configuration handling.
Before, when clicking the OK button on the preferences GUI, we were
updating in-memory preferences from the GUI, saving them to the
configuration file from the GUI, reloading from the file to the
in-memory preferences. Then, to add to the ducplication, when the
application was exiting, some fields were saved again.
Basically the first step and the last step were useless appart from
the fact the the other steps where missing a few fields here and there.

This patch removes the first step and fixes the missing fields.

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
ACKed-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 08:11:40 -08:00
Henrik Brautaset Aronsen
e0b376622c Fix typo
All hail the groub!

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 08:11:40 -08:00
Dirk Hohndel
a24eb8ac12 Hack to make tank selection work on Mac
This is an ugly hack as it partially breaks the ability to abort a selection
(so if you click outside of the combobox, the last value you hovered over is
selected). But this seems much better than not being able to select a different
tank at all.

Fixes #275

(and by 'Fixes' I mean "hacks to sort of make work"... but the trac automation
is rather inflexible in which words it understands...)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 08:08:04 -08:00
Dirk Hohndel
58088d5897 Complete add bookmark for the profile context menu
This (together with the commits fixing the QMessageBox title) should
finally close all the issues in bug 250.

Fixes #250

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 05:13:18 -08:00
Dirk Hohndel
995192c5fb Work around QMessageBox not showing its title on Mac
This is a bit hacky and simply adds the title to the message text when
compiling on a Mac, but hopefully this will be enough.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 04:23:10 -08:00
Anton Lundin
8aadd4d372 Quiet down warning about return in non-void
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 03:35:02 -08:00
Anton Lundin
27d6b2be6e Quiet down warning about duplicate name
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-21 03:34:46 -08:00
Dirk Hohndel
9c5e037a61 Trigger redraw of the Dive Info pane on preferences change
If we change the units we need to redraw the info on this pane.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 23:08:20 -08:00
Dirk Hohndel
0ca12c3601 Collect per tank SAC rate
This is a bit painful, but we basically walk the samples and pick the
valid tank from the events. And then we do a simple discrete integration
to figure out the mean depth per tank and duration per tank. And then we
assemble all that into per tank statistics.

Strangely the value calculated here seems slightly higher than one would
expect from the overall SAC rate. This inconsistency should be
investigated a bit further, but my guess it it's based on the assumption
that the DC provided mean depth is possibly more accurate than what we can
calculate from the profile.

Fixes #284

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 23:07:04 -08:00
Dirk Hohndel
36cb50fb37 Add gas change event from profile context menu
This allows to add missing gas change events to the currently shown dive
computer. Only gases defined in the Equipment section are offered.

Fixes: #250

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 20:35:15 -08:00
Dirk Hohndel
28ad26e878 Use the correct dive to create the gas list
If we are adding a dive, it's the stagingDive, otherwise it's the
current_dive that we need to look at.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 18:23:14 -08:00
Dirk Hohndel
c1f936f288 Hiding events doesn't change the dive_table
So let's not mark it as changed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 18:22:40 -08:00
Dirk Hohndel
0d512b2dd9 Small whitespace cleanup
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 18:17:50 -08:00
Tomaz Canabrava
df6a80fb37 Hooked up 'Hide Events'
With this commit one can hide all events of the selected type through a
context menu on the profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 18:17:41 -08:00
Tomaz Canabrava
e8d1f14c90 Enable the 'Remove Event' callback.
Based on the code in the Gtk branch.

[Dirk Hohndel: whitespace cleanup and changed the message text]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 17:58:18 -08:00
Tomaz Canabrava
4c2e6c4658 Adds half of the support for the menu on the profile.
This adds the menu, it just doesn't do anything, yet.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 17:04:25 -08:00
Anton Lundin
eb027f2a4b Do per cylinder statistics
This shows how much gas form each cylinder was used. I would like to add
SAC to that list too but it became a mess trying to calculate average
depth per cylinder.

Design based on idea in #284

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 15:46:19 -08:00
Tomaz Canabrava
732f7a69b0 Better handle the mouse movements on the Add Dive profile
Better handle the mouse movements on the add dive profile,
when outside of the canvas boundaries. It had bugged me for
quite a while, but this is so much better.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 15:43:12 -08:00
Tomaz Canabrava
82ac9ef9c6 Enable gas selection through a context menu
This patch re-enables gas selection through in the add dive profile.
Good thing ( and I really didn't think of that before ) is that
it is less than half of the code of the other implementation.
:D

Fixes #265

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 15:41:34 -08:00
Tomaz Canabrava
25a52056c6 Fixes positioning the first Gas Label on the add dive profile.
We didn't take into account that last == first when checking for
the first item on the list. Now the gas is correctly placed on screen.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 15:41:11 -08:00
Tomaz Canabrava
f5be24609a Removed obsolete Code ( gaslist on text click )
This commit removes obsolete code, there was a
gaslist selection when user clicked on the buttons, but
this shouldn't be anymore, since the next commit will
add a menu to select the gas for that particular point.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 15:38:58 -08:00
Anton Lundin
c7941f66b4 Print bailout on separate row from SP change
It looked kinda weird without a separator between the SP change and the
bailout.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 15:34:40 -08:00
Dirk Hohndel
6acff53735 Fix trip summary line in dive list
Two errors fixed.

- With no location set, the summary line would start with a ','.
- When auto creating a trip for a manually added dive or when editing the
  dates of dives in a trip, the timestamp for the trip was not updated
  after editing the dive.

Fixes #293

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 14:20:18 -08:00
Dirk Hohndel
33f7c6bb28 Clear selected trips after restoring selection
The rememberSelection() / restoreSelection() functions ONLY handle
selected dives, not selected trips. This is a bit of a misfeature, but
because of that we need to make sure we clear our notion of selected trips
when we use restoreSelection()

Fixes #285

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 06:05:43 -08:00
Dirk Hohndel
1a876a85b9 Hook up MOD in the preferences dialog
For some reason this was never connected. Oops.

Fixes #267

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 05:32:24 -08:00
Dirk Hohndel
1a5e94006c Sanity check on gas percentages
O2 + He + N2 = 100%
(well, there are some other gases, but this is close enough)

Since N2 can't be negative that means we should refuse any change where
O2 + He > 100% (or o2.permille + he.permille > 1000).

Fixes #280

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 05:02:08 -08:00
Dirk Hohndel
4619bfd9ca Immediately update the dive flag label when editing location text
This seems like a much nicer user experience. Editing a location's name is
immediately reflected on the globe label, the moment it happens.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 04:32:24 -08:00
Dirk Hohndel
e8a4420c59 Immediately show new locations on globe widget
When modifying or adding a dive location on the globe widget while in dive
edit or dive add mode, we now show the modified / new location right away
on the globe (assuming a location name has been given). This makes it much
easier to manually reposition a dive location.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 04:28:15 -08:00
Dirk Hohndel
7886719443 Handle double clicks on globe during dive edit mode
When we are editing or adding a dive, the globe widget needs to act
differently. Instead of directly changing the lat/lon of selected dives,
it needs populate the coordinate text field as if this information was
entered by the user (effectively all it is is a way to more conveniently
enter coordinates).

As a side effect, this also allows us to change the location once it has
been added (you just need to go into dive edit mode to do so).

There is one weird issue that occasionally (and I can't quite reproduce
this) I get lat/lon very close to 0/0 (as if the globe widget was centered
on 0/0 and not on whatever it is actually showing). That still needs to be
addressed.

Fixes #239
Fixes #131

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-19 04:12:31 -08:00
Dirk Hohndel
0877d93457 Quick hack to make the dive add icons smaller
This is about the right size, but the scaling pixelates the icons. So this
is not really a fix, just a hack.

See #269

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 17:01:58 -08:00
Tomaz Canabrava
a63d61042d Change the order of the increase / decrease buttons on the planner.
Change the order of the increase / decrease depth button on the planner
since 'bottom' means increase depth and 'top' means decrease. Sorry
I'm too undiver currently :)

See #269

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 17:01:45 -08:00
Tomaz Canabrava
66fdd9bc91 Do not let the dive have the 0 value.
The number 0 means "this dive has not been numbered". So manually
assigning this seems wrong.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 16:54:59 -08:00
Tomaz Canabrava
61ac0a7c8d Make it posible to renumber dives.
If the user doubleclicks on the number of the dive in the dive list,
this will present to him a dialog to change that number. Pressing enter
will renumber the dive if there's no dive with the same number already.

Fixes #288

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 16:53:16 -08:00
Tomaz Canabrava
4433830f55 Anchor bottom of the dive ruler editor ro items on the DivePlanner
This patch is a crude attempt to 'anchor' the bottom of the Dive
ruler editor ( the new graphics ) to the bottom of the scene.
since QGraphicsView doesn't have a good way to modify the origin
point of an item, I'v just shifted all other items up a bit, this
way the 0,0 point is in the bottom of the drawing and I can safely
move it around, making it bottom-anchorable. :D

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 16:43:41 -08:00
Tomaz Canabrava
0c3eef1c4c Just some code cleanup.
This flag is added to all items on the parent, so there's no need
to implement this on all of them.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 16:42:04 -08:00
Dirk Hohndel
8ae8c81d3d Fix various issues with the dive add / edit manual dive code
- get_gas_from_events does NOT always set o2/he. It only updates them IFF
  a matching event is found; so we need to make sure we start out with a
  valid gas mix
- the way we tried to restore the edited dive in case of an edit to a
  manually added that is cancelled was completely bogus. Way too complex
  when we can simply and reliably simply store the dive and then copy it
  back

Fixes #270

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 11:55:56 -08:00
Dirk Hohndel
3801b765ff Don't add spurious 5m/15ft node at 10 minutes when canceling edit
When cancelling the edit of a manually added dive, we should send the
sample with timestamp 0 to addStop - that's a magic value and causes us to
add a node at 5m/15ft and 10 minutes instead. Since the dive always starts
at the surface, calling addStop is redundant, anyway, so let's just not do
that.

See #270

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 10:46:01 -08:00
Dirk Hohndel
7d0cc6b337 Improve shift time functionality
In commit 85fab31c71fc ("Shift times of selected dives") we added a dialog
that didn't align its content very well. This change improves the layout
(I hope) and makes the labels in the layout clearer (earlier and later seem
easier to correlate with the direction of the shift).

The original commit also forgets to deal with the consequences of shifting
the dives. The dive list needs to be re-sorted (as the relative order of
dives could have changed) and be marked as changed. And we should try to
maintain the selection across these operations.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 10:03:55 -08:00
Robert Helling
4966336e1d Shift times of selected dives
This patch adds the possibility to shift the times of all selected dives
by a fixed amount to correct for time zone problems or mis-set dive
computer clocks.

Select the dives and right click in the dive list.

[Dirk Hohndel: added .ui file to FORMS and fixed some whitespace damage]

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-18 10:03:45 -08:00
Dirk Hohndel
e289881db9 Make edit / dive add in progress check more consistent
We need to check for this whenever we do something that directly or
indirectly closes the data file. Previously we were missing the straight
"quit". Also, we should consistently check for both editing or dive
addition. And lastly, we should use consistent language with commit
0e9cd09442 ("Make editing message consistent with button labels").

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 15:46:27 -08:00
Tomaz Canabrava
5945c18c8a Removed the ugly icons on the visual profile editor
Removed the ugly icons on the visual profile editor and replaced them with
the much better looking ones that Luisa designed.  This was not a simple
search and replace since Luisa's design was a bit more sophisticated.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 15:38:48 -08:00
Dirk Hohndel
a2d6bd5c1d Add "add dive(s) to trip above" feature
This honors the sort order of the dive list when figuring which trip is
"above". It works both on a single dive or all selected dives.

This also fixes a couple other cases where the dive list selection and
trip display could get messed up.

Fixes #287

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 15:36:57 -08:00
Dirk Hohndel
7a6ff7a53c Fix a couple of problems with dive merging
- Dive list no longer has messed up trip entries
- Dive list is now correctly marked as modified after trips are merged
- When data file is closed, the list of selected trips is cleared which
  avoids a potential crash when loading a new data file

Fixes #286

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 14:41:12 -08:00
Dirk Hohndel
962abba1f7 Remove ununsed variables
The warnings are distracting - and the variables are truly obsolete by
now.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 14:36:37 -08:00
Tim Wootton
0e9cd09442 Make editing message consistent with button labels
Changes Ok button to a Save button Modifies editing messages to reference
buttons Save and Cancel.

Fixes #245

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 13:44:52 -08:00
Henrik Brautaset Aronsen
092e8463fe Add more file types to import/default log file dialog
- Allow ssrf as a default log file suffix.
- Allow sde/dld/db as import log suffices (we don't use the LIBZIP
  and SQLITE3 ifdefs anymore)

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 13:39:57 -08:00
Tomaz Canabrava
188cdc7d06 Make it possible to set the coordinates via map for all selected dives.
This patch makes it possible to set the coordinates on the map for
all selected dives. Note however that after a coordinate is set,
user cannot edit it unless he multi-edit it with a dive that doesn't
have coordinate's set. this is just because it's missing a 'edit coords'
button.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 13:39:36 -08:00
Anton Lundin
2b1c75a584 Use date format from system locale
Instead of hard coding a American date format, let qt use whatever the
locale suggests.

Fixes #248

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-17 07:08:53 -08:00
Tomaz Canabrava
612c5713b4 Fix crash when entering a dive via dive-add on a empty table.
We were selecting garbage, not anymore.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:33:21 -08:00
Tomaz Canabrava
47c833015b Fix showing the tooltips on the profile.
We incorrectly mapped the profile's widget tooltip based on the
global screen coordinates.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:33:02 -08:00
Tomaz Canabrava
5058d8914a Fix a crash with trying to show the tooltip on the profile.
Fixed a crash with trying to show the tooltip on the profile,
with an empty profile. Since the widgets are not created yet,
we got a crash trying to access the toolBarProxy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:32:41 -08:00
Linus Torvalds
7e9a7b6223 Fix dive merging
This limits merging dives to dives that have at most half an hour of
surface time between them. That "half hour" is kind of a random thing
to pick, but it's not horribly horribly wrong.

It also changes the semantics of "merge selected dives" to something
that actually works pretty well: you can select a whole range of
dives, and it will merge only the ones that makes sense to merge. I
tested it, and it's reasonable. I could select all my dives from one
dive trip, and then do "Merge selected dives", and it did the right
thing (Dirk: I selected the florida trip, and it merged the aborted
"missed the trench" dive with the _actual_ "trench" dive).

I'm _slightly_ hesitant about this in the sense that maybe some crazy
person actually would want to merge dives with more than half an hour
of surface time between them, but it really doesn't seem to make much
sense.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:31:35 -08:00
Tomaz Canabrava
314cf4c628 Removed duplicated method.
This patch removes a duplicated method: get_divenr and
get_index_for_dive. The two are exactly the same  ( if my
c is not broken, but I may be broken since I'm working like
crazy for almost 30h nonstop. ), so please take a good look
before applying this one.

[Dirk Hohndel: Tomaz took the slightly broken of the two implementations,
               so I switched that out for the correct one]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:27:54 -08:00
Tomaz Canabrava
ad0aa8cc49 Small code cleanup.
This was bugging me for a while. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:24:01 -08:00
Tomaz Canabrava
4f1cae7a2f Expand the trip of the newly selected dive.
I hit this bug on deleting dives and the newly selected
one got inside a trip, that wasn't expanded. anyway, easy one.
:)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:23:33 -08:00
Tomaz Canabrava
8476ea5ea8 Selects the dive before the deleted ones.
This patch makes a selection just after the dives that got deleted,
or nothing if the list is empty.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:23:22 -08:00
Tomaz Canabrava
73cd8f3e56 Do not break Dive Headings on trip mode when a delete dive is done.
When the dive is deleted, we force a recreation of the dive list,
this is done because we were broken by design on the first transition
to the Qt infrastructure - one thing to change for 4.1, but no time
for 4.0.

We forgot to ask the headers to 'please, span more than one row,
please' when we recreate the model. easy =)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:19:55 -08:00
Tomaz Canabrava
4f9526ef81 Fix wrong handling of Dive Table, and revert some wrong changes.
This patch just reverts some wrong changes that I'v done on a
past commit ( sorry ) and correctly handles the selectDive,
by using a IDX instead of the dive pointer, as dirk told me
it's extremely error-prone since the pointer can change.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 20:19:55 -08:00
Anton Lundin
c1a05fd034 Planner: Make cylinder and time/depth boxes scale
When moving the horisontal splitter the cylinder and time/depth boxes
didn't scale down but got "stuck" on a certain height. This makes them
scale down when pulling the horisontal splitter up.

I would prefer if we could scale them individually, but i didn't manage
to get that going, but i didn't manage to get that going.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-16 08:02:40 -08:00
Tomaz Canabrava
8827ea6f5d This moves the removal code to the model.
It's very important when programming via Model/View, in gtk or qt,
to not mess with the model data outside of the model. We were
deleting stuff that the model controlled outside of the model, so
it thought that there was still data there. This fixes the deletion
part, but there are also lots of other parts that I'll tackle in
the next commits.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 15:13:53 -08:00
Dirk Hohndel
0c833ef03b Don't close the active file or start "add dive" while editing a dive
Seems rather obvious to me - the language in the warning doesn't sound
very smooth, though.

Fixes #246

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 13:42:49 -08:00
Robert C. Helling
e5308c068f Forget old filename on starting a new log.
Fixes #253.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 12:43:53 -08:00
Dirk Hohndel
3b9c28bce7 Don't create stop at time zero when re-editing manually added dive
To our addStop method time = 0 & depth = 0 are a magic flag. And since we
always start at the surface, that is assumed, anyway. So let's just not
add a stop for that when re-creating a plan from a dive.

Fixes #254

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 12:42:21 -08:00
Dirk Hohndel
c4a47a7d60 Get rid of the planner
This is nothing but an indefinite time sink. Let's focus on things that
the majority of our users actually need and use.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 11:39:59 -08:00
Tomaz Canabrava
bae41ddafb Maintain opened the trips of the selected dive.
In various occasions the branches of selected dives
got collapsed because I'm dummy boy and didn't programmed
the logic correctly.

This one correctly works for the few cases that I'v tried,
I'm verifying if the current selected index is a trip or
a dive, and asking to expand it.

The expanded state is lost because we delete and recreate
the model ( and we do that because we can switch between
tree and table model ).

Now I think we correctly track the cornercases.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 11:14:46 -08:00
Tomaz Canabrava
1e63579cc6 Fix the sentense 'collapse' to 'collapse others' and scroll to it.
This patch changes the string 'collapse' to a more meaningfull
'collapse others', it also scrolls the view to the first selec
ted index, since after collapsing the others, things could be
in the wrong position.,

Fixes #233

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 11:13:31 -08:00
Dirk Hohndel
6bf12bde03 Make more context menu functions act on all selected dives
Remove from trip and delete both should deal with all selected dives.

Fixes #247

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 14:21:20 +09:00
Taiane Ramos
7e859da939 Make tooltips work in the profile toolbar
This patch enables tooltips on the profile toolbar. Tooltips were
being treated as text to be shown at notification area. Now it is
verified if the cursor was positioned over the toolbar when it
activated the event. If so, tooltip is shown normally.

Fixes #238

Signed-off-by: exhora <exhora.tat@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 13:26:01 +09:00
Thiago Macieira
711f2ddf8c Avoid std::string: QByteArray is enough and already compiled in
No need to add more code to Subsurface by bringing in std::string too.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 13:19:58 +09:00
Dirk Hohndel
66f5f32f11 Once again remove debug output.
Oops again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 13:17:38 +09:00
Tomaz Canabrava
cec30c27d9 Enable a context menu to remove dive handlers.
This commit enables a context menu to remove dive handlers,
because it was hard to find that ctrl+click selected it,
then a delete button press removed it. it's better now. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 13:15:35 +09:00
Maximilian Güntner
3302ee11c1 changed tag completition to case-insensitive
When completing tags, the case of the completion prefix
should not matter.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 13:14:39 +09:00
Dirk Hohndel
c0a6c136f0 Fix dive planner widget
In commit 0f50b73f9e ("Fix planner / add dive handling of DiveHandler
Points") some issues were introduced. While it is fine to remove the
artificial first point at the surface, the commit broke the special
handling for o2 == -1, i.e., the usual case where a default gas needs to
be picked.

This generalizes the algorithm previously used to also look to the right,
now that we are no longer guaranteed that there is a first point to our
left.

This also cleans up some whitespace damage introduced in the same commit.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 11:54:13 +09:00
Dirk Hohndel
5961579cda Manually add trips from dive list context menu
We had all the logic, we were just lacking the UI.

Fixes #243

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 11:32:19 +09:00
Dirk Hohndel
2c57568d56 Fix potential crash when merging trips
strdup doesn't like to be passed a NULL pointer.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 11:31:35 +09:00
Tomaz Canabrava
0f50b73f9e Fix planner / add dive handling of DiveHandler Points
Dirk, is this really necessary or it's just something that you forgot
to remove? this is adding a bit of pain to fix some issues on the planner,
so I'm commenting this out untill you have a bit of time to look at it.
It looks like this was added to handle the gas in the pos-1, but you reverted
if so, this completely reverts it, and things works as expected again.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:27:41 +09:00
Tomaz Canabrava
1ee08005b2 Adds the first DiveNode at 5meters / 10minutes when clicking on plus
Adds the first DiveNode at 5m / 10 minutes when clicking on the plus
button on the DiveNotes Table.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:27:13 +09:00
Tomaz Canabrava
2235da57a7 Fix adding DivePoints on the planner via the table.
Somewhere we broke this, most probably in the code that activated the
planner to be used together as an 'add dive'. This commit makes the code
workable again.

There's one thing, though. if the model is empty, this will add something
in the first point - it's behaving strangely. I'll try to fix this in a
way that's invisible to the user, but overall, why are we inserting
something in the first(0,0) time and depth?

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:21:50 +09:00
Tomaz Canabrava
a07c3d62af Use the correct font for the Air Types Model.
The air types model had a font bigger than the
other models, this patch creates a data() method
that correctly delivers the correct font.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:21:05 +09:00
Tomaz Canabrava
96d5687ab8 Correctly handle changes on the CylinderModel to update the AirModel.
What happened before was that the AirTypes model was only being updated
when the user requested to change the air by clicking directly
on the Air, in the planner ( but not on the Air Table. ).

This fixes it by calling 'repopulate' whenever the cylinder model
changes ( by adding, removing and changing something.)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:19:14 +09:00
Tomaz Canabrava
b77d990ed6 Close the Air list when clicking outside of it.
This patch closes the air list when clicing outside of it,
making the use of the planner more pleasant.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:16:22 +09:00
Tomaz Canabrava
a6615f67cd More code cleanup.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:15:35 +09:00
Tomaz Canabrava
b28237309a Good deal of code Cleanup.
Rewrite of the way we handle the last used directory for the loading /
saving of files.
we didn't reuse anything for the code, and that's error prone
and also dumb =p. Reworked that so we have a nice method
to help us out on that. lastUsedDir and updateLastUsedDir

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 09:13:58 +09:00
Anton Lundin
419e425030 Remove some unneeded member functions
We can wire qt to call the right functions directly, so we don't need
these members.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 08:59:46 +09:00
Anton Lundin
83426c59e1 Planner: Default to GF from prefs.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 08:59:01 +09:00
Anton Lundin
bc6a1a4c53 Planner: use a QSpinBox for GFLow/GFHigh
Switch to using a QSpinBox instead of a QLineEdit. This makes it a bit
more intuitive and now you can see how the deco plan changes based on
the GF's.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 08:58:35 +09:00
Anton Lundin
2d8cd44370 Make the info box look as it did in 3.1
In the Gtk version there were no option to disable the showing of time
in the mouse over, so this removes that option to limit the amount of
clutter in the settings panel.

This also renames the time and temperature to match the names they used
to have. T -> @, Temp -> T

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-15 06:06:57 +09:00
Dirk Hohndel
354a091e14 Change the menu structure
Mostly based on suggestions by Tomaz and Luisa (but with some changes
based on my rather strongly held believes).

I also tried to clean up the shortcut keys. Not sure if I got this right.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 22:17:27 +09:00
Dirk Hohndel
8d284b0e24 Hook up the tank change and tank update for the planner
This failed spectacularly when I first tried it, so I put it on the back
burner. And it appears that with all my recent fixes for "add dive" as a
side effect this is working, too.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:58:04 +09:00
Tomaz Canabrava
77a1ef9ebe Expand the trip of the first selected dive.
I probably broke this a while ago, as I was not using the big
dirk dive file to test ( just using some random files over the
test folder. )

Now it's working as it should.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:26:33 +09:00
Tomaz Canabrava
942c8632de Code Cleanup - Removed unused var.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:24:49 +09:00
Tomaz Canabrava
6996930110 Correctly sets the size of the Air Types on the planner
The last commit correctly setted the minimumSize, but
I forgot to set the maximum size, and thus, it still
expanded. sigh.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:24:48 +09:00
Tomaz Canabrava
dbbdf62e26 Makes the Air Types widget on the planner smaller ( but expanding.)
This patch makes the Air Types widget on the planner smaller,
since on most dives users will only enter 1 to 2 dives, it's
not good to have so much whitespace. this makes it smaller for
small screens, and it will grow on bigger screens where space
is not an issue.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:24:48 +09:00
Tomaz Canabrava
37e7984e15 Fix Last Column adding a horizontal Scroll on the Dive List.
Fixes the last column adding a horizontal scroll on the dive list,
since we have the hability to show / hide columns, I had to create
a helper method to discover what is the last column and set the
size of it very small so no scroll is created.

Also, I'v set the setStrechLastSection to true. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:24:48 +09:00
Tomaz Canabrava
9f8577a5ea Fix edition of alphanumeric input on equipments.
This patch fixes the edition of alphanumeric input,
columns like depth accepted '23ft', '20m' or '30', with
an inplicit conversion to the unit. But the code ignored
that the input could have a 'ft' or 'm' ( ot anything else
for that matter.

Signed-off-by: Taiane Ramos <exhora.tat@gmail.com>
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:24:48 +09:00
Dirk Hohndel
9c90d6790a Fix some random compiler warnings
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 21:06:31 +09:00
Dirk Hohndel
ed41d5a744 Sort the dive table after adding a dive
This commit scares me. Any pointers to dives or indices into the dive
table... anything like that is invalid after we resort the table. Well,
not technically "invalid" (as in bad pointers), but after re-sorting the
table these will possibly not be pointing at what we expected.

This starts with the selection being "wrong" after we add a dive that
isn't the last dive (once we click OK the chronologically last dive will
be selected).

But of course without doing this, our #1 assumption about the dive_table
is broken. The dive_table is supposed to be in chronological order.

Best advice of course would be "don't enter dives out of order" - but of
course that's not realistic.

Fixes #234

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 19:36:41 +09:00
Dirk Hohndel
f6eb26dbae Handle tank data correctly in profile editing mode for manually added dive
This is subtle. Normally you would expect someone to edit the tank data by
simply clicking on it in the equipment tab. But a user could conceivably
edit the tank data after clicking on the profile editing button instead.
This works now as well.

This also addresses the issue that start and end pressure were not shown
in profile editing mode.

Fixes #235

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 18:36:21 +09:00
Dirk Hohndel
dfd17c7a7f Maintain the selection when aborting "dive add"
We remember what was selected before and restore it. Maybe there's a more
"Qt way" of doing this, but my implementation appears to work :-)

Also remove unconditional debug output that snuck into an earlier commit.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 17:58:14 +09:00
Dirk Hohndel
179615f3a9 Switch to the Dive Notes tab when manually adding a dive
This gives a more consistent and expected user experience.

Fixes #236

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 12:18:33 +09:00
Miika Turkia
a93b6011f1 Add file naming dialog for save as
When right clicking a dive on the divelist a dialog for selecting a dive
was opened. However, Save As requires a getSaveFileName dialog so that
user can give a new file name as well as selecting an old file to
overwrite.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-14 07:17:26 +09:00
Dirk Hohndel
98322a976c Correctly convert an existing dive into a plan
I missed this one spot when converting back to the different semantics for
divedatapoints.

With this change add dive appears to work correctly (fingers crossed).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 22:39:53 +09:00
Dirk Hohndel
bb041069a3 Fix addGas to look at the correct cylinder
That was a stupid bug. You have to actually update the variable to look at
the right cylinder. Duh.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 22:38:14 +09:00
Dirk Hohndel
c18464b44f Don't overwrite the new cylinders when adding a dive
We carefully assembled the correct data in the cylinders - don't replace
that data when manually editing a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 22:27:03 +09:00
Dirk Hohndel
dee1645de0 Correct behavior when adding a dive to an empty list and canceling the add
We need to leave the widget disabled and the date / time and coordinates
cleared.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 22:23:59 +09:00
Dirk Hohndel
1a3ea5636a Don't change gas used in segments if there is still a cylinder with that gas
Otherwise adding a second cylinder (to the default one cylinder of air)
and subsequently changing the gas of that cylinder will illogically change
the gas used in all the segments.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 21:56:51 +09:00
Dirk Hohndel
d7fb6853a3 Connect changes in the tanks with the dive that is being added
- you can no longer delete a tank when its gas is in use
- therefore you can no longer delete the last tank
- when you change the gas mix of a tank, the corresponding segments in the
  dive change as well
- when changing gas for a segment the correct available gases are offered

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 21:56:22 +09:00
Dirk Hohndel
aa76d35923 Instead of a "Cylinder for planning" use a default cylinder
Right now hardcoded to AL80. This way in the future we'll have a volume of
gas that's available. And this makes much more sense then a random string
in the description field.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 21:45:24 +09:00
Dirk Hohndel
25e432e1d1 When selection gets confused, don't try to select non-existing dive
While the argument could be made that this is just a symptom of Subsurface
getting very confused about the selection (which it still gets at times -
most likely we are calling select_dive() instead of selectDive()  (or the
corresponding deselect functions) in places where we shouldn't), but
either way, we should not crash.

Fixes #220

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 13:59:02 +09:00
Dirk Hohndel
17b5618c39 MaxPPO2 should be a double, not an int
This just fixes the spinner used in the preferences dialog.

Reported-by: Benjamin <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 13:02:39 +09:00
Tomaz Canabrava
d06e6b7d20 Fix loading the information of splitter sizes on empty config.
We previously did did bad things when running with an empty configuration.
This attemps to clean it. We will now correctly handle the splitters in
almost all cases ( if I didn't break anything on the way. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 12:00:17 +09:00
Tomaz Canabrava
b98157a519 Partially revert d72c69db7a and fix its errors
In the offending commit a QWidget was changed to QTableView, but
only in the header - and thus making avaliable all method calls,
but the initialization of the widgets was still a QWidget, and
nothing of QTableView was used besides an incorrect call to
setColumnHidden.

This commit fixes that by using the view() method provided by the
TableView implementation which returns the true QTableView that should be
used for specific nitpicking, like hidding columns. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 11:58:47 +09:00
Anton Lundin
4bb8368a20 Introduce an on/off switch for calculating ndl/tts
Let the user choose if the calculation of ndl and tts is worth the time
it takes.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-13 11:55:19 +09:00
Michael Andreen
c7ea7426f7 Only auto-complete gps information when empty.
Previously gps information was always overwritten, unless the user had
modified it in the current editing session. This causes problem with
some use cases, like when coordinates are provided before the location
name by the companion app.

Now gps information is only overwritten when it is:
  - Empty
  - Auto-completed in the current editing session. (When the user hits
    accept it is considered hand-edited.)

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 16:46:17 +09:00
Dirk Hohndel
3c8155880a Make gas selection for add dive work
This now offers the correct gases for which we have cylinders defined.

For both the planner and add dive we still don't end up with the correct
cylinders in the resulting dive. But that's for another commit to fix.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 16:33:27 +09:00
Dirk Hohndel
83a7f1f5b4 Use existing helper function
And remove spurious extra ';'

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 16:33:01 +09:00
Dirk Hohndel
662b1061f0 Handle add dive cancel correctly
This should leave the program in a consistent state after add dive was
cancelled (and do the right thing in case the dive list was empty).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 14:41:29 +09:00
Dirk Hohndel
a683a217b9 First steps to make add dive work with the correct infrastructure
This just makes sure that we do the right thing with the staging drive,
that we don't mess up the selection, the we are smart about using our
helper functions, etc.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 14:21:50 +09:00
Dirk Hohndel
94222fbe49 Remove some debug output
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 11:20:23 +09:00
Dirk Hohndel
ad4812c22e Make planner work again
This partially reverts changes in commit 1b655d5c806b ("Correctly track
gases when manually adding and then editing dives") as it turns out this
did NOT help us correctly track gases (which is ironic, given the title of
that commit). I didn't actually want to revert that commit as
infrastructure has changed since then and this made the patches look even
more incomprehensible.

So we are back to tracking the "gas on which we arrive at this spot" in
each dive plan node as this makes the rest of our planning so much easier
- I had forgotten about the reasons why we did things this way when I made
the above mentioned commit.

Instead we now make sure that our available tanks are added the correct
way, that such entries are ignored when planning and when drawing the
editable profile, and that at the end it all gets assembled correctly.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 11:19:04 +09:00
Dirk Hohndel
d72c69db7a Add depth colum to cylinder model
To make the planner work this adds a new column to the Cylinder widget
(depth - for the depth at which we want to change to a certain gas
during deco).

This also tries to hide that column in the equipment view and hide the
start/end pressure columns in the planner view. Oddly that fails :-(

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-12 11:17:40 +09:00
Dirk Hohndel
cd1149e57f When entering a new point, pick the previous gas by default
This is much more useful than always picking air.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-11 18:13:55 +09:00
Dirk Hohndel
0a8892379d Connect cylinders entered in planner with the gases available
Now the gases for which we have cylinders are offered in the gas selection
list and correctly recognized and added for the plan.

Still tons of work to be done to make this work the way it is designed,
but we are getting closer.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-11 17:09:19 +09:00
Dirk Hohndel
9ead871d64 Stop clicks on the globe from changing dive list selection while editing
This caused us to get royally confused when manually adding a dive and
trying to set the location through the marble widget.

Fixes # 229

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-11 06:23:18 +09:00
Dirk Hohndel
f41651439c Mark divelist changed when deleting a dive
Fixes #232

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-11 05:57:43 +09:00
Dirk Hohndel
ea2e517e39 Fix crash when cancelling dive add on empty dive list
Don't pass NULL dives around.

Fixes #231

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-11 05:55:20 +09:00
Dirk Hohndel
e5098c443f Hook up delegate to enable cylinder autocompletion in planner
That was easy

Hand-holding-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-11 05:51:39 +09:00
Dirk Hohndel
55c127f7c3 Enable adding cylinders in the dive planner
This is in preparation of using those to define the gases available for
planning.

Right now this doesn't seem to work quite right - I don't get the
auto-completions for the cylinders that I was hoping for...

This commit also corrects the tooltip for addint dive data points.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-10 21:02:53 +09:00
Dirk Hohndel
aa4931e8c6 Show a cylinder widget in the dive planner
This is intended to allow the user to provide the gases / cylinders that
she will be diving with. With that information the planner can warn the
user about insufficient gases, but more importantly it can show relevant
gases in the gas select drop down.

Right now the add cylinder button doesn't add a cylinder - that's a
problem.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-10 07:07:59 +09:00
Dirk Hohndel
44c9316f14 Honor "last stop at 6m" in dive planner
And recalculate the dive when it changes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-10 06:08:42 +09:00
Dirk Hohndel
2a0f1fcf4e Remove left over qDebug() call
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 20:41:28 +09:00
Dirk Hohndel
487efb1ee9 Merge branch 'addDiveGasFix' 2013-11-09 20:35:09 +09:00
Dirk Hohndel
6d5b2d7592 Adjust planner to work with the new semantic
Insert the dive data point at 0,0 manually at the beginning of the plan.
Now everything should work. We still can't edit a plan created like this,
but at least we can once again plan things.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 20:33:33 +09:00
Dirk Hohndel
5dce73f62b Fix position of depth reading when entering dives
At 5% it would overlap the scale - now it's much easier to read.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 20:10:49 +09:00
Dirk Hohndel
1646517d28 After done with the DC download dialog, ensure it's in its original state
So in case the OK button was relabeled to 'Retry', relabel it back to OK.
Also, 'Retry' should be capitalized.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 15:58:57 +09:00
Tomaz Canabrava
e4ea41b7bc Forgot to remove this debug, sorry.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-11-09 15:36:25 +09:00
Tomaz Canabrava
8a970c64c2 Removed inconsistency when user tried to add dive while planning.
The user could add a dive, and in the middle click on the 'plan'
button. Since we didn't cared about that on the widget, a lot of
inconsistencies could occour. this fixes that by setting a flag
on the Planner, that has now three modes: nothing, plan and add.
(maybe in the future an edit mode will be valid too.)

If in 'NOTHING' mode, user can enter the addition, edition and
planning. If in any other mode, user can't do a thing. The mode
gets back to NOTHING when user accepts or cancels a plan / add
/ edition.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 15:35:29 +09:00
Tomaz Canabrava
f850a0817c Fixes garbage left behind when canceling edit dive.
Garbage was left behind when canceling edit dive, and thus when the user
set his dive to be editted, after a first canceled edition, all points of
the first edition got messed up and showing on the second dive too. if the
user clicked 'ok', he got a really bad surprise.

Fixes #226

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-11-09 15:34:39 +09:00
Tomaz Canabrava
d3fe3494fe Save / Restore the Tree after organizing by other columns.
This patch saves and restores the state of the TreeView after the user
clicks on another columns that will make the tree disappear. All of the
branche states are saved, this way the expanded nodes will be restored
when the user gets back to tree mode.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 15:33:55 +09:00
Tomaz Canabrava
38287a1c1e Save the status of the tree before trying to reset the display.
This is a try: when the user changes the orientation on the columns
by clicking on the title of them and organizing by something that's
not the number, we lost track of the opened branches. this commit
doesn't fix that, but it fixes a possible similar issue.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-11-09 15:33:34 +09:00
Tomaz Canabrava
7dbf76384f Moved the code that handles DiveList column sizes to its correct file.
I got a bit lost trying to find the code that handled DiveList columns
today, so I thought it was better to move it to its file, after all we
do have a divelistview.h :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 15:32:37 +09:00
Tomaz Canabrava
ba638cae05 Fixes breaking the sizes of the columns of the listView.
This just proves one point: I'm retarded.
I moved some code around and forgot to close the old group, so I created a
group inside 'MainWindow' that handled the ListWidget, wich was not the
right thing to do at all.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 15:31:58 +09:00
Tomaz Canabrava
d84cdb655e Fix inconsistent position of screen splitters
I basically rewrote the way we handled the splitters. It now uses a state
to know what it's doing, and will only update the value of the
saved-to-disk splitter size if the state shows the splitters (currently
only VIEWALL), where all the other states should hide the splitters, and
the values of the splitters don't matter.

Fixes #225

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-09 15:30:51 +09:00
Dirk Hohndel
8941e8677e Correctly track gases when manually adding and then editing dives
The code had quite a few odd special cases that may have been left-overs
from the old Gtk algorithm. With this the gas is actually in the dive plan
node where it's use starts. And we maintain the gas correctly between
multiple edit sessions.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-08 21:22:59 +09:00
Dirk Hohndel
1578c1edb2 Be consistent when passing around gas data in the planner
We need to make sure that the correct segment has the correct gas assigned
to it - and that those gases are correctly tracked when editing a manually
added dive as well.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-08 18:15:04 +09:00
Dirk Hohndel
bf0bd88226 Correctly identify air
Because of rounding issues we need to use our macro to test for air
(especially since the events store gas percentages and not gas permille).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-08 18:12:26 +09:00
Dirk Hohndel
460aa4c1bd Include the cylinder information in a dive added with "Add Dive"
We only copied the samples, but not the related cylinder data.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 18:07:10 +09:00
Dirk Hohndel
f2035bcd79 Don't translate the fake DC models
Since the model name is written into the XML file it has to be a literal
string that isn't translated. Otherwise a datafile written in one locale
behaves differently when opened by Subsurface under a different locale.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 16:52:39 +09:00
Dirk Hohndel
f11b2274ec Adjust default start time of added dive
It should be 'now' in the current timezone.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 16:34:07 +09:00
Dirk Hohndel
4e9a29a0af Remove debug output left in the previous commit by mistake
Oops.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 16:32:23 +09:00
Dirk Hohndel
f262ed69cc Make the tag widget act more sanely when pressing Tab
When dealing with autocompletion, tag usually means "take this, move on".
In the tag widget the tab was added to the tag itself (and then stripped
when the input line was processed). Not exactly useful.

This feels a bit "hackish", but it seems to get the job done.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 13:40:57 +09:00
Taiane Ramos
abd54cad61 Fix for equipment tab cancel button bug
On equipment tab, when editing a cell and then clicking on cancel button,
it would delete all the cylinders table. Now it performs the original
behaviour of recovering the original value of the cell and don't delete
the table.

Signed-off-by: exhora <exhora.tat@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 12:40:39 +09:00
Dirk Hohndel
1c3a1a9592 Hide temperature fields when displaying / editing trip data
And show them again when displaying a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-07 12:38:35 +09:00
Maximilian Güntner
6ee2d88896 Hide TadWidget and Label when editing a trip
Also hide ui.CoordinatedLabel when editing a trip,
since ui.coordinates is hidden.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-05 17:05:29 +09:00
Dirk Hohndel
0f66e7a025 Show a different message when editing more than one dive
I still wonder if we have all the semantics correct for multi dive
editing. This will need more testing.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-05 15:57:24 +09:00
Dirk Hohndel
e90f5c28df Fix dive merging
When merging dives, the indices of the following dives change - so we need
to adjust the variable used in the for_each loop.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-05 15:44:16 +09:00
Dirk Hohndel
01d515b5d8 Remember the column we are sorting by
A call to DiveListView::reload always reset our sortcolumn to be 0.
Instead we are tracking the correct sort column and sort direction.

This also removes an obsolete private member that was unused.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-05 14:23:37 +09:00
Dirk Hohndel
eaa0d647b7 Don't force the DiveListView to be a tree when reloading
We should keep whatever view the user last used.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-05 13:56:20 +09:00
Maximilian Güntner
c4d8b6a4d5 Fix the inconsistent behaviour of QCompleter
The TagWidget behaves now similiar to a QLineEdit.
Pressing Enter/Return will now close the completion widget.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-11-02 17:10:34 +01:00
Maximilian Güntner
2967391ffe Correct tabstops in MainTab
Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-11-02 17:10:34 +01:00
Maximilian Güntner
5d93242b34 Corrected indentation, added license/copyright
Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-11-02 17:10:30 +01:00
Maximilian Güntner
04cdfce782 Added a custom widget for tagging dives
A custom tag widget has been added to MainTab.
Tags are seperated by a comma ",". The implementation
supports escaping a comma by using "\,".
While typing, the widget supports the user by suggesting
tags using a QCompleter.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-11-02 03:37:31 +01:00
Dirk Hohndel
9e63539237 Merge branch 'editMode' of github.com:tcanabrava/subsurface 2013-11-01 11:19:23 -07:00
Tomaz Canabrava
0e96c9f62e Enable undo for the Edit mode on Added Dives.
This enables undo for the edit mode on added dives, it uses the
premade backup to fill the old dive with data. :)

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
2013-11-01 14:06:03 -04:00
Tomaz Canabrava
23a193b0d1 Changed the backup implementation of the samples on EditDive.
Changed the backup implementation of the samples on EditDive,
it's way cleaner now what's happening, and it's also better for
the cancel edit.

Next: The Cancel Edit.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
2013-11-01 13:45:14 -04:00
Tomaz Canabrava
f7cd3e780c Enable editing a dive that was manually entered.
This patch enables editing a dive that was manually entered,
it doesn't cover dive plans yet because on the plan I need to
figure out what are the 'user-entered' points, and what are
the algorithm point. and I feel lazy. =p

One last thing that's missing is to revert the dive to the
previous condition if the user cancels the edition, currently
canceling and applying ok is the same thing.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
2013-11-01 11:48:34 -04:00
Tomaz Canabrava
d9afcdc8cb Code cleanup - Stop calling the same 6 lines everywhere.
There's a method named refreshDisplay, fairly unused, let's
use it a bit mroe.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
2013-11-01 09:43:41 -04:00
Tomaz Canabrava
69d4ccae6d Added a new option to edit the dives.
Added a new option to edit the dive in the profile view. The option
will only be visible if the dive was manually entered or if the dive
is a plan.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
2013-11-01 09:33:39 -04:00
Tomaz Canabrava
a7b19b251d Removed Reference to dangling pointer.
We cannot use tr("").toLocal8bit().constData(); on a function
that expects a char* because the object will be deleted on the
next line, so a strdup is necessary.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
2013-10-31 16:50:09 -04:00
Miika Turkia
1a4d098ef2 Add alt based shortcuts to access menus
This adds alt-f shortcut to access file menu as well as other similar
alt based shortcuts for other menu items.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-27 10:58:52 -07:00
Tomaz Canabrava
a4da3004da code cleanup: removed unused function from mainwindow.h
The setupSplitters method was created quite a while ago
to deal with the splitters when I didn't used a more sane
approach. I forgot to delete it back them, removing now.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 23:04:34 -02:00
Tomaz Canabrava
7bea2e1be0 Minimum hooking-up done, divelogs.de shows on menu-activation.
This patch does the hooking up to show the dialog of the
divelogs.de window when the user selects it on the menu.:

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 23:02:59 -02:00
Tomaz Canabrava
6cf875ed92 Reorganized the downlads menu for the inclusion of more webservices.
This patch moves around a few items on the menu to a new submenu
downloads/uploads. I think it's not the best way, but it already
fives a bit more of 'unverbosity', because the old menu had
'Download from Dive Computer', 'Download from Webservices', and
now we would introduce a new 'Download from Divelogs.de'
I tougth it was better to have a 'parent' named 'Download' and
put all children inside. this can grow quite big as soon as I implement
the plugin system for that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 22:57:43 -02:00
Tomaz Canabrava
216f9212b9 Added the skeleton for the Download / Upload from Divelogs.de
Added the skeleton code for the Download / Upload from Divelogs.
de webservice. Now I need to hoopup things from the .ui side and
do the actual implementation of the code.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 22:52:11 -02:00
Tomaz Canabrava
06ba04ab78 fix the string of the subsurfice webservice on the settings.
The setting was 'webservice', but this is too wide, since we are
supporting more than one. changed it to 'subsurface_webservice_uid'

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 22:39:21 -02:00
Tomaz Canabrava
d2b87e0eb5 Fixed a crash when the user canceled the download from webservice dialog.
Null references, ah, love them.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 22:38:41 -02:00
Tomaz Canabrava
5eb2cc4594 Created a 'WebService' dialog that will handle download and upload.
Created a WebService dialog that will handle download and upload
from all child based webservices. Also, ported the currently - only
- one webservice to use the new dialog.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-24 22:30:21 -02:00
Michael Andreen
695f64a23a Subject: [PATCH] No need to center on dive after editing coordinates.
This is done automatically now.

Signed-off-by: Michael Andreen <harv@ruin.nu>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-24 16:58:05 +01:00
Miika Turkia
3e48511318 Export dives in UDDF format
Implement exporting in UDDF format as was done in Gtk version. File menu
exports all the dives, right click on selection exports the selected
ones.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-20 15:26:02 +02:00
Thiago Macieira
f22065874b Remove the "in C" part about Subsurface's description
It's not written purely in C anymore. There's quite a lot of C++ now,
not to mention Perl, XSLT, shell scripting, etc. :-)

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 20:28:22 -07:00
Dirk Hohndel
75a004d44a Some adjustments to "save as"
The popup menu entries should be all lowercase.
Also we should handle this the same as regular save and open when it comes
to remembering the last path.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 20:26:38 -07:00
Tomaz Canabrava
ed28628449 Added 'Save As' option on the dive list menu.
This adds the 'Save As' option on the dive list,
very straigth forward, just simple and beauty.
tested and working.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 20:19:50 -07:00
Dirk Hohndel
8259b1a59a Implement hook up autogroup menu
This tracks the autogroup state remembered in data files. Toggling the
checkable menu item causes the divelist to be marked as changed. This
might actually be untrue - but that's really hard to track so this is the
"better safe than sorry" approach.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 16:30:32 -07:00
Dirk Hohndel
8f623c2c72 Fix marble losting track of zoom level
Marble had a bug on the way it treats zoom level, there's
no way for it to find out if it's user-input or algorithm input
and when a user clicks on a dive, it spins and centers on it,
but if the user clicks on another dive when it's still spinning,
it will get the zoom in the actual state ( spinning, usually zoom
is far away from the first position ) and continue the spin to the
other position.

This patch works by saving the first location and triggering a
helper function with a timer that will only update the zoom level
if the timer is not active ( and thus, will not get the bugged
zoom state set by the animation. ).

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 15:00:22 -07:00
Anton Lundin
579d1cb915 Show SAC in the mouseover.
This is really nice to have when looking at specific parts of a dive.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 14:56:52 -07:00
Anton Lundin
437246d3ed Move sac-calculation to profile.c
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-17 14:54:11 -07:00
Lubomir I. Ivanov
861b524e7a Helpers: move some date related function to qt-gui.cpp
divelist.c:
get_dive_date_string()
get_short_dive_date_string()
get_trip_date_string()

MinGW support for *printf and parameter positions (e.g. %1$d)
is horribly broken. Instead of implementing *proper* support
for this feature Microsoft decide to ignore the standard (again)
and they implement new functions with the '_p' suffix,
such as 'sprintf_p', which seem to be available from a 2003 runtime.
To top that 'sprintf_p' is not really a 'sprintf' but rather
a 'snprintf'.

It seems that the MinGW people ignore the issue and do not provide
wrappers of any sort, or at least for the current recommended compiler
for Qt 4.8.5 on Windows - which is a 4.4.0. A note of warning;
inspecting how MinGW does certain things in headers such as stdio.h,
can ensue bad dreams or other negative effects on to the viewer.

This forces us to move the following functions from the 'back-end'
(divelist.c) to the 'front-end' (qt-gui.cpp) and use QString.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-16 15:04:44 -07:00
Miika Turkia
4c49670cdb GUI for CSV import
This patch implements GUI for importing CSV log files. One is able to
configure what columns contain time, depth and temperature fields.
Pre-configured log applications currently included are ADP log viewer
and XP5. (Both of these use actually tab as separator, so the field
separator currently hard-coded.)

[Dirk Hohndel: minor fixes]

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-16 12:44:07 -07:00
Patrick Valsecchi
4f23ff144f Prettier printing
Going through pixmaps for the profile was not needed and was making our prints
look very pixelated.

In Qt4, QWidget child classes are printed as bitmaps. So appart from
changing the code to print the tables to use a QGraphicsView instead,
there is nothing we can do, so the rest of the printing is still done as bitmaps.

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-16 07:02:06 -07:00
Dirk Hohndel
f96299ea94 Dependencies are too aggressive for version.h
Apparently qmake can't tell that #include "version.h" and #include
"libdivecomputer/version.h" are not the same thing. Instead of spending
another bunch of hours on fixing the buildsystem I decided to just cleanup
the spots where we actually use the version file and rename it to
ssrf-version.h.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 19:54:15 -07:00
Tomaz Canabrava
22afca58bf Fixed the moving around of the InfoPanel on non KDE enviroments.
This patch restores the ability to move the info-overlay panel on the
profile. For some reason the eventFilter wasn't working (and actually,
looking at the code, it really shouldn't, because I didn't see where I set
it to work, maybe someone (me) broke it a long time ago) well, it seems
fixed now at least. :)

Tested on XFCE, Gnome and KDE, with three different window managers.

[Dirk Hohndel: removed debug output]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 19:40:16 -07:00
Robert Helling
c59d594e00 Printing adjustments
Add units to the SAC in the print-out, reduce max depth in metric to one
decimal place, and leave some more characters of the notes to be printed..

Signed-off-by: Robert C. Helling <helling@atdotde.de
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 10:34:40 -07:00
Dirk Hohndel
252caeea1c Fix stupid editing error
Don't do "obvious cleanups" at 4 in the morning when you can't sleep because
of emotionally draining issues outside of your control... and if you do,
at least compile test them.

This was introduced by me in commit 2f9f46cb0253 ("Random white space
cleanup").

Sorry.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 10:25:53 -07:00
Tomaz Canabrava
34f2a5ecc7 Fixed the Tab behavior on the QCombobox Delegate
This Patch fixes the tab behavior on the QComboBox
delegate. For a QComboBox, tab was being treated as
'cancel' action on edit, but since it will send a
editingFinished() signal, and the Qt::Key_Return
will also send a editingFinished() signal, I couldn't
use that method and had to do a little hack around it.

The code is mostly clean and works.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 09:49:12 -07:00
Dirk Hohndel
6ccb541f1d Random white space cleanup
Because I can.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 04:37:31 -07:00
Lubomir I. Ivanov
2ec6303f50 printlayout.cpp: Remove convertPixmapToGrayscale()
Function is redundant as we should only render the profile
with a custom color table.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 04:24:27 -07:00
Lubomir I. Ivanov
2b98d28980 printdialog: Remove the pre-set DPI and some comments
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 04:24:15 -07:00
Lubomir I. Ivanov
005f8ecf83 profilegraphics.cpp: Use text sizes in plot_text()
Make the active font (fnt) use the 'size' member of the received
text_render_options_t. This allows changing the size of
certain text elements.

For the moment most text elements are set to 12px.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 04:24:02 -07:00
Lubomir I. Ivanov
88b1e09dee printlayout.cpp: Increase the font size in tables bellow profile
Because of varying font (screen) DPI we use pixel sized fonts
when printing. Apparently 8px does not look that good on Windows
default fonts, but kinda OK on Linux. We compensate by
increasing the font size and table rows to 9px.

Also decrease the padding between the table and profile to 5px.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 04:23:56 -07:00
Lubomir I. Ivanov
f818ece074 graphicsview-common.cpp: Add more contrast to certain B/W colors
There was a report that the depth and time texts were small
and require more contrast on the B/W print. Use BLACK1 for these.

Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-15 04:23:43 -07:00
Lubomir I. Ivanov
7861103139 Print: remove profile border when printing
Custom widget frame styles such as 'Sunken' and 'Raised' which seem to
varry between OS will be captured as well:
http://harmattan-dev.nokia.com/docs/library/html/qt4/qframe.html#Shape-enum

So instead we temporarily set the profile frame to QFrame::NoFrame and
then restore it to the previous value.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-14 13:15:58 -07:00
Miika Turkia
080b1bcc5a Enable file selection dialog for preferences
This enabled a file selection dialog for selecting default log file
under the preferences.

[Dirk Hohndel: added missing declaration to .h file]

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-14 13:14:09 -07:00
Patrick Valsecchi
291ce1d9ac Fix the DC ceiling in the profile.
entry->ndl is computed and therefore should not be used for showing
the DC's ceiling. That made the DC ceiling jump to 0m when the computed
celing was at 0.

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-14 12:30:32 -07:00
Lubomir I. Ivanov
a2a93ff04b Models: fix two potential crashes
CylinderModels::setDive() and WeightModel::setDive() have
potential to pass the 'last' argument to beginInsertRows() as
a negative number which triggers an assert that 'last' cannot
be smaller than 'first'.

Patch attempts to fix that by only calling beginInsertRows()
when there is at least one row to insert.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-13 11:31:25 -07:00
Tim Wootton
a014fb1099 Adds missing "EndPress" column header for cylinder table
The end pressure was appearing in the column headed "O2"

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-13 11:30:56 -07:00
Dirk Hohndel
f5fbbfddb2 Fix uninitialized variable
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-13 11:30:36 -07:00
Linus Torvalds
58b668c714 Fix dive planner sidebar depth units
The dive planner always showed the depth in our internal units, ie
millimeter, in the sidebar that showed the plan points.

That made little sense in metric mode, and none at all in imperial. The
_graph_ showed things in meter and feet.

So make the DivePlannerPointsModel always convert things to and from the
user units.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-11 20:26:28 -07:00
Anton Lundin
dd3b8210a9 Remove unused arg in plot_cylinder_pressure
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-11 10:18:07 -07:00
Tomaz Canabrava
beb40ae494 Finish clearing up the TableModels
There are other models ( Tree Models and Model Items
) that are not affected by this commits, this is
already a good cleanup but it can be extended
to also fix those two other possibilities.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-11 11:42:33 -03:00
Tomaz Canabrava
fac316865c Another Model Cleanup
Conversion of the WSInfoModel, that populates the list
of weigthsystems in the Equipment tab.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-11 11:13:16 -03:00
Tomaz Canabrava
a4efa8c444 Second model converted to be less boilerplated.
Second model converted to be less boilerplated,
there are right now 7 models that will need to
be ported. each model can remove around 30 to 40
LOC, so this is not such a bigger improvement,
but it's an 'keeping an eye on the future'.

Also fixed a bug where the returned value was dummy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-11 11:04:27 -03:00
Tomaz Canabrava
26c87fafc2 Begin to Cleanup the Models, trying to reduce boilerplate.
The Model View system in Qt is *very* verbose, this is the
beginning of a series of patches that will concentrate
the boilerplate somewhere and reduce the amount of lines
and will also try to make the code cleaner and easyer to
understand,

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-11 10:50:40 -03:00
Tomaz Canabrava
1b9a4f2bf8 Good deal of whitespace fixes and code cleanup.
I just went thru all of subsurface code removing
some whitespaces issues and trying to make the
code prettyer, I also removed a few QString issues.d

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-11 10:21:04 -03:00
Patrick Valsecchi
1dccf84c67 Added salinity to the Dive Info tab.
Took the opportunity to remove some copy&paste.

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
2013-10-10 07:11:32 -07:00
Patrick Valsecchi
c5a15c6a45 Fixed mix of spaces and tabs in maintab.ui
Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
2013-10-10 07:11:18 -07:00
Dirk Hohndel
c74b286e70 Fix potential uninitialized variable
Most of the "possibly unitialized" warnings are bogus, but this one is a
potential real bug.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-09 00:15:46 -07:00
Dirk Hohndel
8e8a631cbc Fix crash when cancelling 'Add Dive'
If selected_dive is -1 get_dive(selected_dive) will return NULL.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-08 23:24:44 -07:00
Thiago Macieira
00eba99039 Compile without depending on the global MAX macro
There's a C++ way for it. And, for some reason, it wasn't defined on my
MinGW build:

qt-ui/profilegraphics.cpp:1006:57: error: 'MAX' was not declared in this sscope

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-07 16:57:54 -07:00
Dirk Hohndel
054406b420 Remove even more code and declarations
There's lots more stuff that can go.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-07 13:43:17 -07:00
Dirk Hohndel
90b0f75d40 Remove info.c/info.h
The one remaining helper function in there was moved to maintab.cpp (which
was the one remaining user).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-07 11:48:14 -07:00
Lubomir I. Ivanov
edd2db6886 Print: allow optional table on top of profile
Patch enables the 'Profile on top' / 'Notes on top'
functionality in the print options dialog.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-07 09:29:40 -07:00
Benjamin
47ca630cc2 Maximum depth of a dive/a series of dives is not show correctly
After selecting a dive or a series of dives, the "Stats" tab shows the
minimum, average and maximum stats for the selected dives. The "Depth"
section does not display the correct value for the maximum depth.

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-07 09:22:16 -07:00
Dirk Hohndel
b3490213f4 Merge branch 'glib-removal-hack'
Fix obvious merge issue in Rules.mk

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-06 10:57:16 -07: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
Dirk Hohndel
4b12f28ca4 First steps towards removing glib dependencies
- remove the build flags and libraries from the Makefile / Configure.mk
- remove the glib types (gboolean, gchar, gint64, gint)
- comment out / hack around gettext
- replace the glib file helper functions
- replace g_ascii_strtod
- replace g_build_filename
- use environment variables instead of g_get_home_dir() & g_get_user_name()
- comment out GPS string parsing (uses glib utf8 macros)

This needs massive cleanup, but it's a snapshot of what I have right now, in
case people want to look at it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-06 10:41:44 -07:00
Robert C. Helling
05eabae62a Modify the dialog text for the question to make more sense.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-05 19:48:39 -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
Dirk Hohndel
f63605e02e Merge branch 'bugfixes' of git://github.com/tcanabrava/subsurface 2013-10-04 11:12:11 -07:00
Tomaz Canabrava
834800a179 Fix display sane values on subsurface at first time opening.
This patch fixes some unsane values that was being retrieved
by the ui-files on first time opening. it creates a basic layout
of the application using the current desktop size.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-04 15:07:36 -03:00
Tomaz Canabrava
3c97cc5b6a Fix showing all columns by default on first run.
Some columns are a nice addition, but not a must have,
and thus are hidden-by-default, uncluttering the user interface.

This was discussed with a few designers before writting the code,
and also discussed with dirk on irc.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-04 14:28:49 -03:00
Patrick Valsecchi
36c28089db Added the .ssrf extension to the open dialog filter.
Fixes #205

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-04 09:46:26 -07:00
Benjamin
fb5ae28865 Correct spelling of "weight" throughout the code.
"Weight" was misspelled "weigth" in several places in the code
and comments.

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-04 09:40:56 -07:00
Benjamin
9961cf13b1 Use the same conversion grams->lbs in dive and equipment list
Subsurface stores weight values in grams. When displaying lbs,
the dive list was not rounding the converted weights up, but
rather truncating the value at the decimal place. The equipment
list was rounding the converted weights up. This gave two
different displayed values for the same weight value.

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-04 09:40:05 -07:00
Tomaz Canabrava
30bee57b60 Code Cleanup - Uneeded preferences stored at the old prefs setting
Those preferences removed ( basically the ones about visibility of
the List View of the Table ) are now managed by the Qt Settings
system, and thus there's no need to have them there. wich gave us
a pretty good cleanup.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-04 13:17:37 -03:00
Patrick Valsecchi
c28fe00bfe Added configuration options for vertical speed units.
Some people (free divers) are loving ft/s or m/s units for vertical speeds.
Now they can choose between /min or /s in the configuration (only Qt UI).

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-04 09:16:39 -07:00
Tomaz Canabrava
a5b351ed72 Fixed First run of subsurface - Start on Fullscreen.
For a new installation, subsurface will now start on fullscreen,
this fixes the bug where subsurface would start using the interface
file ( mainwindow.ui ) configured size, and that silly monster
always changes when editing something.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-10-04 12:28:40 -03:00
Tomaz Canabrava
7bd43bfaaf Fix the first load of Subsurface - "File not found" error.
The first time the user loads subsurface, the default_filename
is not configured yet, but yet the software tries to load "",
sending an error message that this file doesn't exists.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Taiane Ramos <exhora.tat@gmail.com>
2013-10-04 12:12:46 -03:00
Thiago Macieira
b3b729e629 Partially revert 7a368ab06b
If we #include "qt-ui/ui_anything" from anywhere, the Makefile rules
will blow up.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 15:45:06 -07:00
Anton Lundin
d53d00db02 Lookup gas via the plot_data, not the event
When straight decoding the event, it failed to handle older
SAMPLE_EVENT_GASCHANGE(11), the ones without he-part correctly. This was
shown clearly when it printed the 21/35 in dives/test20.xml as air.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 13:49:06 -07:00
Thiago Macieira
ad52301ca7 Turn off Qt including the C++ Standard Library headers
We don't use any of the Standard Library features or classes in
Subsurface, except for three uses of std::sort, for which I added the
necessary #include.

It's always a good idea to include directly the headers you want,
without relying on indirect inclusion

On my machine, the build time dropped from 16.96s to 13.38s or a 12%
improvement.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 13:47:24 -07:00
Dirk Hohndel
7a368ab06b Better fix for the compile problems
Still don't like the order dependency - but at least this seems to work
and correctly build after make confclean.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 13:21:36 -07:00
Thiago Macieira
8e81d3f100 Make the classes generated by uic be real members of our classes
This means we don't have to new/delete them, which is a waste of
overhead.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 12:13:48 -07:00
Thiago Macieira
f0f76056ac Include the ui_*.h headers in the main headers.
This means we can also remove the forward declarations.

This is the first step in removing the memory allocation for the ui
sub-classes. Without the second step, this commit is just making the
compilation time increase for no good reason :-)

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 12:13:15 -07:00
Lubomir I. Ivanov
c79def40b1 Print: small adjustments to table printing
PrintLayout::printTable():
- hide the QTableView widget border using a stylesheet
- add a guard to fix the last column extending post the page width
due to rounding
- use 1 extra pixel instead of 2 when grabbing the page region

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 09:39:16 -07:00
Lubomir I. Ivanov
e727b899a6 Print: provide means to print profile tables
This patch adds a couple of classes and some other modifications
in PrintLayout that handle the printing of tables under a profile.

models.h : ProfilePrintModel
The class uses a 'struct *dive' to output all required data
for a certain dive at specific rows and columns. It also handles
font formatting and text alignment.

modeldelagatates.h : ProfilePrintDelegate
The class is used only for drawing a custom grid for profile tables.

PrintLayout::createProfileTable()
The function is used to create and setup the profile table object

PrintLayout::printProfileDives()
The function now has correct padding of dive profiles on a page
and also the printing of actual tables below them.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 09:38:37 -07:00
Lubomir I. Ivanov
374f3d0de6 Profile: use a 10px font when printing profile text
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-03 09:38:26 -07:00
Patrick Valsecchi
adefc8805a Added a spacer at the bottom of the dive info and stats grids
Fixes #204

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-01 09:50:43 -07:00
Patrick Valsecchi
f02b5e5d90 Fix weight adding in the Qt UI & fix the header height for tables
Fixes #203

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-01 09:49:41 -07:00
Patrick Valsecchi
413f649ad8 Make the renumbering of dives accept numbers up to 99999
Fixes #201

Signed-off-by: Patrick Valsecchi <patrick@thus.ch>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-10-01 09:47:33 -07:00
Dirk Hohndel
ff0b2745a7 Merge branch 'toolbar-ruler-rb' of github.com:mguentner/subsurface 2013-09-27 10:03:13 -07:00
Maximilian Güntner
a3ce871e0a correct the placement of pressure markers
Adding +30 (seconds) to the position works fine for long dives but
when zoomed in on short dives, 30 seconds are a lot.
This commit sets the offset to +10 px regardless of the scaling.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-09-27 18:45:07 +02:00
Maximilian Güntner
88172571ca Added a toolbar to the profile
The toolbar adds two buttons to the profile.
The user can now toggle the scaling (zoomed to dive/round up to 30 mins)
and adding /removing ruler to/from the profile using this toolbar.

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-09-27 18:45:04 +02:00
Maximilian Güntner
248f1b86d1 Added a ruler which can be dragged along the profile
This patch adds a ruler QGraphicsItem which can be dragged
along the profile. The ruler displays minimum, maximum and
average for depth and speed (ascent/descent rate). Also, all used
gas will be displayed.

This also adds a new attribute to struct plot_data to store the
speed (not just as velocity_t).

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-09-27 18:42:19 +02:00
Maximilian Güntner
3312c9a3a4 implemented zoom action
Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-09-27 18:37:53 +02:00
Maximilian Güntner
59736a9d96 plot seconds with a fixed width of 2
before: 0:50 1:0 1:10
after:  0:50 1:00 1:10

Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
2013-09-27 18:37:53 +02:00
Lubomir I. Ivanov
df8107830e Print: provide means for profile layouting
printlayout.cpp(h):

This patch cleans some test code and adds the function
printProfileDives() that accepts a number of dives
per rows and columns. It can technically fit any number
of dives on a page given the page size allows it. Both
landscape and portrait layouts are supported.

It now replaces the old methods:
printTwoDives()
printSixDives()

Space is reserved for data tables that will be placed
bellow profiles on a later stage.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-27 09:29:30 -07:00
Tomaz Canabrava
e81bbc1dab Hack to make the subsurface work on Gnome3 shell
The Gtk+ style on the Gnome shell is somewhat broken on Qt for
some reason. This hack pokes the system, checks if it's running
gnome-shell, and if the current style is gtk+ ( I couldn't just
check for gtk+ since it worked on XFCE and other Gtk based enviro
ments. so a double check is needed. ) then I changed the Pallete
of the affected widgets by hand.
not a pretty hack but worked.

[Dirk Hohndel: redid the patch to be simpler and more consistent]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-27 09:22:19 -07:00
Tomaz Canabrava
d629321799 Fix the positioning of the add button when on Gtk style
Fix the positioning of the `add` button when on Gtk style,
in my XFCE install (and thus, may differ a bit from the
Gnome3 one ) the Plus button to add cylinders and weigths
got really strange placements, this seems to fix this,
I also tested on Oxygen and nothing broke there.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 20:35:30 -03:00
Tomaz Canabrava
b036a318c6 Fix the edition of cylinders and weigths by keypress
This patch fixes the cylinders and weigth edition
by keypress. I don`t know when I broke this and linus found,
most probably when I added the code for showing the
cylinder size and working press while moving the mouse
around the list - sorry guys.

So, now this *seems* fixed, tested for a fairly good
amount of time and everything seemed ok.

I was unable to reproduce the behavior that linus got
on two value overlapped on each other, tougth.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 19:59:58 -03:00
Tomaz Canabrava
098aa6343b Fixed the display of Subsurface in Smaller Screens
This patch fixes the display of subsurface in smaller
screens by creating ScrollArea containers that are
now englobbing each of the Tab-pages and the Planner
Widget. Some of those widgets were pretty big by the
amount of things on it and it was too big for small
( 14" and 15" ) screens.

This seems to fix it, and looks good both on Gtk+ and
Oxygen styles.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 18:14:09 -03:00
Tomaz Canabrava
57ebed9dd0 Only set documentMode on tab if in Oxygen style.
This is much better looking in the Oxygen style, and
on the other styles it looks like crap - so let`s not
use that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 17:02:27 -03:00
Tomaz Canabrava
28dd4d144a More cleanup for the Gtk+ Style
This patch eliminates 18px offset from the MainWindow main
layout, making the window feel less spacy. Good on the Gtk+
style, but seems to also make a good work on the Oxygen one.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 16:55:41 -03:00
Tomaz Canabrava
8f94b904dd Cleanup the prettyness of subsurface on Gtk+ style.
Fix some stuff concerning the pretyness of subsurface while running
on Gnome and XFCE enviroments. This is the kind of stuff that I
really didn`t want to put on the code but sometimes it`s for the
best. this makes the MainTab much more bearable. There are still
things to fix, like the size and positioning of some of the icons.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 16:51:11 -03:00
Tomaz Canabrava
d6f2988bcf Code Cleanup, less magic indexes.
This patch removes the magic indexes used to control the mainwindow
display of the profile and planner by an enum. a bit more verbose
but hard to miss.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 11:14:40 -03:00
Tomaz Canabrava
fd7a671a1d Set the Cylinder/Weigth even if it's the same old value.
Since the cylinders and weigths have other data attached
to it, like size and working pressure, one could mess the
other data and want it to revert to the cylinder / weigth
defaults, but for that the user had to choose another
item, then go back to the previous one, so the cache would
be clean.

This patch fixes that by reverting the values to the
it fixes linus bug n2, where he had invalid data
on the other fields and had to go back and forth for it
to be fixed.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-26 10:26:58 -03:00
Tomaz Canabrava
e6be14bf10 Make the Qt ComboBox behave in a Better Way
So, the ComboBox is a beast, and when used on a Delegate
it's very hard to get things right, wich is a pitty, because
I overly like qt. So:

1 - Combobox needs to show the popup when user press ↓ and ↑ keys
2 - Combobox needs to select when user press enter, not twice.
3 - Combobox neesds to select when user selects from the mouse, not
pressing enter after.
4 - Combobox needs to not mess with stuff when moving around.

Everything that I listed there works on a non-delegate combobox,
but for some reason, a delegate missed those, so I reimplemented
all. not nice, but now we have a code that will work, I hope.
*fingers crossed*

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 12:48:24 -07:00
Tomaz Canabrava
bc837163f5 Hook 'Add' from cylinders and weigths to enable Edition
This code hooks the plus button on both cylinders and
weigthsystem tables to trigger the enableEdition() and
thus the work done when you click on + will be saved /
discarted when the user cancels the plan or accepts it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 12:48:24 -07:00
Tomaz Canabrava
2819ee6510 Code cleanup
Fixes a couple of whitespace issues.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 12:48:17 -07:00
Tomaz Canabrava
d9067582a9 Set the Cylinders and Weigths to all selected dives after pressing 'Accept'
This bit of magic actually performs the save on the
dive list for the changed weigths and cylinders,
it will set the cylinders only if there's a change
on the cylinder model, and it will set the weight
only if there's a change in the weigth model.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 14:57:41 -03:00
Tomaz Canabrava
8ce5d91dfe Code cleanup - create a method for cleaning the Palette.
Code cleanup, create a method for cleaning the palette,
less code is better in this case. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 14:36:59 -03:00
Tomaz Canabrava
94c8f64316 Only mark dive list as changed if 'Accepted' was clicked.
The old code marked the dive list as changed on any
of the changes in the model, this was incorrect since
the user could just cancel the edition, wich means
that the divelist shouldn't be marked as changed at all.

when the user clicks on'accept', and the item is indeed
changed on the dive list, then we mark_divelist_changed
to TRUE

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 14:30:03 -03:00
Tomaz Canabrava
2c14f3aa3b Added a 'changed' member on Cylinder/Weigth models to know when to Apply a change.
Added a 'changed' member on Cylinders and weigth models to mark when
one was changed or not. Only the changed data should be inserted on
the selected dives, so if the user changes the cylinders on a multi
edit, there's no need ( and it will actually break things if we did that )
set the weigths too.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 14:23:51 -03:00
Tomaz Canabrava
c805e2c941 Enable Edition by clicking anywhere on the Cylinders and Weigths.
This patch enables edition on the selected dives as soon
the user press delete or any other column on the Cylinder
/ weigthsystem.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 14:11:38 -03:00
Tomaz Canabrava
26cec576ee Revert to the old values of Cylinders and Weigthsystems on cancel
This patch enables canceling the edition of cylinders and weigth
systems, as soon as the user press cancel, the old values are
re-populated on all selected entries.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 14:10:15 -03:00
Tomaz Canabrava
4f0112c420 Created a placeholder for the Equipment Edition.
This creates a placeholder for the equipment edition,
it will ease the 'revert' and 'apply' when editing
multi dives.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-09-25 13:30:51 -03:00
Dirk Hohndel
72f0516f6d Disable info widget when canceling 'add dive' for a first dive
One more corner case that we cover correctly.

Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-24 12:32:18 -07:00
Dirk Hohndel
446ab45858 Only offer to merge dives if they are consecutive in the divelist
You cannot merge dives if there is another, unselected dive "between"
them.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-24 03:42:40 -07:00
Dirk Hohndel
2d40172d78 Much easier way to detect if more than one dive is selected
Instead of getting data from Qt just use our internal notion of the number
of selected dive to decide if more than one dive is selected (and
therefore if we need to show the 'merge dives' option in the context
menu).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-24 03:02:02 -07:00
Dirk Hohndel
be418458db Add "merge selected dives" to dive list popup menu
This is fairly straight forward. What I dislike is the check for the magic
number of "14 indeces". I'm sure there's a better way to tell if more than
one dive is selected...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-23 21:57:28 -07:00
Dirk Hohndel
c6140c6e21 Call refreshDisplay() after editing a dive
We now can change the dive date and the order of dives could have changed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-23 21:14:40 -07:00
Anton Lundin
0c9e6f9acc Remove o2/he from plot_data and fix gas plot text
plot_data.o2 and plot_data.he was wrong for all dives, due to that
cylinderindex was set right first in populate_pressure_information, and
thus those two contained bogus information.
This makes the plot-text use cylinderindex-lookup as everything else.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-23 21:05:35 -07:00
Dirk Hohndel
dba16202c4 Correctly handle empty dive list after delete
Things need to be cleared out and disabled. But fixing this bug leaves
another issue - while the newly selected dive after a delete acts as if it
was selected, it doesn't show up as selected in the dive list.

Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 22:24:28 -07:00
Dirk Hohndel
6ce5704435 Support imperial measurements in dive planner / add dive
This was not as hard as I assumed it would be. I may still change the
horizontal dimension to be the more logical seconds instead of minutes,
but for now this achieves the main goal.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 12:37:49 -07:00
Dirk Hohndel
ff58fd7dca Whitespace fixes in dive planner
I know this may seem anal retentive... but it's driving me insane.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 12:34:50 -07:00
Dirk Hohndel
9ba7b12767 Prevent nodes in planner / dive add profile edit to run past each other
I always disliked the fact that when you moved the handlers around you
could just 'run over' the neighbors. This also (as a somewhat intended
side effect) prevents vertical descents and ascents).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 11:01:18 -07:00
Dirk Hohndel
799b56a1f3 Don't exit profile editor when hitting ESC in dive add mode
I'm sure there are more issues like this where we need to handle things
differently depending on whether we are planning a dive or adding a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 08:45:14 -07:00
Dirk Hohndel
9820ca5eda Fix tab order for dive info edit
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 08:37:54 -07:00
Dirk Hohndel
3335f083bf Disable the info widget when no dive is selected
This solves the odd case when closing the data file that clicking in the
info widget caused the input fields to respond and the little warning icon
to show up.

Also some minor whitespace cleanup for readability.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 08:20:03 -07:00
Dirk Hohndel
88fb82411e Hack to clear the date when no dive is displayed
This mostly happens with no XML file or when closing the current XML file.
Sadly the user still can click on the empty date field (even if nothing
else is active on the screen) and a date reappears.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 07:33:09 -07:00
Dirk Hohndel
765e5b76e6 Fix crash when closing the data file
Only dereference the dive pointer if there actually is a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 07:05:03 -07:00
Dirk Hohndel
21b7ebbaf0 Fix crash when adding dive to empty dive list
Only look up the dive number of a previous dive if there is a previous
dive.

Reported-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 07:00:14 -07:00
Alexandre Dupas
5935f372ab Fix enabling info widget when closing a dive
If the close action is triggered while there is no current dive (empty
history), the info widget is enabled. To avoid this behavior, we only
enable the info widget during update if the dive index is valid.

Signed-off-by: Alexandre Dupas <alexandre.dupas@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-22 06:54:34 -07:00
Dirk Hohndel
b1a3c1047a Simplify the default dive profile given in add dive
Suggested-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-21 08:56:19 -07:00
Dirk Hohndel
5e6ed53e40 In planner / add dive use 'ESC' to hide the gas selection popup
Not sure if there are other keys we should support.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-21 08:50:09 -07:00
Dirk Hohndel
a8888eaf26 Allow editing of date & time and air & water temperatures
Add two more rows to the widget - this is getting quite busy.
There still is some weirdness where the focus isn't returned where it
should be and a few other details, but overall getting there.

Added helper functions to parse a temperature and to deal with the
timezone offset - with that latter one I also fixed the time offset bug in
the planner.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-21 08:30:32 -07:00
Dirk Hohndel
acd3599548 Adding a dive changes the dive list
Duh.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-20 07:53:06 -05:00
Dirk Hohndel
5f4aec867e When manually adding a dive, start with a simple dive
This is much friendlier than just showing an empty profile. I picked a
nice and simple three level dive. 25 minutes at 18m, 15 minutes at 9m, and
a safety stop.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-20 07:38:15 -05:00
Dirk Hohndel
e04acd4189 Simplistic solution to add dive number to dive added
If this is the last dive and if the previous dive had a number, give this
dive the next number.

Of course there are a couple of issues with the current implementation. We
have no way of changing the date / time of the added dive, so we KNOW that
it will be the last one. But I put that check there so that once we add
the ability to change the date / time (and hopefully remember to then move
the dive to the correct spot in the dive_table), we only assign a number
if it is the last dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-20 07:17:35 -05:00
Dirk Hohndel
46c23c53a1 Merge branch 'addDive'
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-19 23:05:17 -05:00
Dirk Hohndel
6881f52739 Hook up cancelling out of adding a dive
This was surprisingly easy - which of course has me worried that I'm
missing something that I should do when cancelling out of this dialog.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-19 22:58:53 -05:00
Dirk Hohndel
46b125782e Hook up adding a dive
This gets things mostly right.

It creates a dive and uses the planner widget to create samples which are
copied into the dive. It fills in some reasonable defaults (DC model,
timestamp), but doesn't allow editing the timestamp (or the temperatures
and air pressure).

On accept the planner gets reset and the dive appears correctly in the
dive list.

Cancel still needs to be handled.

And I bet there are many subtle bugs lurking here and there. But it's a
start.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-09-19 22:54:00 -05:00