Commit graph

684 commits

Author SHA1 Message Date
Tomaz Canabrava
52fd769efb Added 'up' and 'down' actions on the dive planner.
Added 'up' and 'down' keyboard actions on the dive planner,
you need to select the handlers with ctrl + click, then
press up to make the handler go 1m up, or down, to make the
handler go 1m down.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 11:28:39 -03:00
Tomaz Canabrava
932ee3da94 Added a 'delete' action, with the keyboard.
Added a delete action from the keyboard, there's also
a possibility to add the same action from the menu, but
I frankly don't like much the idea. so, to delete a handler
now, you need to select it ( ctrl + click ) then press
the delete button. Multiple delection is also possible.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 11:16:42 -03:00
Tomaz Canabrava
c23dd354b9 Added a shortcut to 'esc', so it clears the selection or cancels the plan.
Added a shortcut to the esc key, so it clears the selection,
if there's no selection, it acts just like clicking on the 'cancel'
button. Next: delete selected handlers.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 11:06:28 -03:00
Tomaz Canabrava
f457415f7a Make possible to 'select' an handler by ctrl+click
Make possible to select an handler by ctrl+click on it,
this will be used in the future for the shortcut actions,
like delete, arrow keys, and such.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 11:01:59 -03:00
Tomaz Canabrava
ae08a81739 Fixed the 'hard to grab' Handler, Dive Planner now is very smooth.
So, it was on the docs, but I didn't read it before, if the
scene has items that ignores transformations, we need to
pass the view transform to the method that gets the items
in the scene. I also used IntersectsItemBoundingRect instead
of IntersectsItemsShape because it's faster, and our items
are small, so we don't need an very accurate but slower method.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 10:34:30 -03:00
Tomaz Canabrava
20ec98f2a5 Make it possible to drag a handle between handlers
Make it possible to drag a handle between handlers,
this way the configuration of the dive is more acurate
and easyer to make. I'v discovered a problem where it's
a bit hard to 'grab' the handler, investigating it now.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 10:29:28 -03:00
Tomaz Canabrava
603d2f5cb3 Make it possible to add a handler between others
Make it possible to add a handler between others,
someone asked why I didn't make like this from the
beginning, the answer is that I wanted to have something
stable before messing a bit more with the planner, but
since the planer is almost-stable, I added. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 10:06:52 -03:00
Tomaz Canabrava
55f8979160 Better positioning of buttons on dive planner
Better positioning of buttons on the dive planner. The ok / cancel
buttons are in the correct place, and the '+' sign for time will not
overlap the time string anymore.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-04 09:45:25 -03:00
Lubomir I. Ivanov
b68e86a141 Profile: add white outline to all text
To draw the white outline around profile text we trace a text path
using QPainterPath::addText() and then create a couple of
QGraphicsPathItem objects. One of the objects is outlined using
QPainterPathStroker and is placed at the bottom of a QGraphicsItemGroup
with a white brush. The other object holds the standard colored text
and is placed on top.

Notes:
- possibly quite expensive on older machines
- ProfileGraphicsView::plot_text() now returns a QGraphicsItemGroup
- QGraphicsSimpleTextItem uses a top-left baseline anchor
while QPainterPath::addText() uses a bottom-left baseline
which is a bit mysterious, requires the -3 offset for a match
and is possibly non-portable across fonts and sizes.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-07-02 15:51:10 -07:00
Dirk Hohndel
9d9d516c26 Revert "Profile: add white outline to all text"
This reverts commit 44c33742c2.

I mistakenly applied the wrong version of the patch.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-07-02 15:50:40 -07:00
Dirk Hohndel
6b08a6d428 Silence some warnings
One of them actually looks like it was a bug...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-07-02 13:58:03 -07:00
Dirk Hohndel
be6e6638de Merge branch 'nitpicks' of github.com:tcanabrava/subsurface 2013-07-02 13:43:48 -07:00
Tomaz Canabrava
7c8bdf70d5 Make the increase time button to work.
Makes the increase time button to work, it will
increase the minimum time, not the correct time of the
dive. the total time is calculated by the deco, and
does not come from this, unless the deco is smaller
than the minimum time.

This patch also fixes the problem where a button
would only click once - I was holding the first
clicked button as the 'mouse grabber', bad tomaz.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 14:36:52 -03:00
Tomaz Canabrava
6e6a1c08c3 Make the 'increase depth' button to work.
Make the increase depth button to work, it also adds
a 'safety' stop at 150m, I know that this is deep, and
maybe we need to adjust this to a better safety stop.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 14:14:09 -03:00
Tomaz Canabrava
a7506848b3 Removed user-entered lines on the plan, keeping only deco.
Removed the user-entered lines on the plan, keeping only deco,
This way the graph looks way prettier and we don't loose any
functionality.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 13:39:54 -03:00
Tomaz Canabrava
effb7e2fac Change the color of the DepthString based on it's deepness
Change the color of the DepthString based on it's deepness
on the profile planner. The new color of the profileString
( the string that follows the mouse stating how deep you are)
is now interpolated from SAMPLE_SHALLOW and SAMPLE_DEEP -
but since those two colors were the same and I had to change
it so that could work, I want somebody to check if my choose
of colors were ok.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 13:31:25 -03:00
Tomaz Canabrava
23b29bd3cd Use the same profile colors on the planer for the Time and Depth
Use the same profile colors on the planner for the Time and Depth
rulers. this needed a new method on the rulers - setColor, that
will call the setPen method and make everything behave properly.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 12:01:47 -03:00
Tomaz Canabrava
43664d7cd5 Fixed positioning of the dive Handlers.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 11:47:26 -03:00
Tomaz Canabrava
94c2e5dc18 Correct collors for the DivePlanner background.
Use the correct colors for the Background on the Dive Plan,
same as on the Profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 11:21:28 -03:00
Tomaz Canabrava
b07429ff8b Added the last 'tick' to the rulers
The last tick to the rulers were missing, this was making
them to look odd, this make the rulers better looking,
but it caused the other-non-ported-yet-to-percent stuff
to behave in a not so good way, most visible one is the
handlers, gonna update them next.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 11:18:31 -03:00
Tomaz Canabrava
6115dc1f12 Change the rules so they work with percentages.
Changed the ruler so that they work with percentages,
also added a new method to the rules to set the size of the
ticks.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 11:12:15 -03:00
Tomaz Canabrava
c98894fd52 Added a method and a simple stub to position things using percentage.
Added a method and a simple stub to position things on the canvas
using percentage - this way I have a proper control on where I want
to put things on screen and it will make simpler for future changes,
even if the amount of code written is a bit bigger.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 10:53:08 -03:00
Tomaz Canabrava
ca517f1bf8 Shared background for profile and planner.
Share the background for profile and planner. Those are not the same
class, but they should behave somwheat the same.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 10:13:06 -03:00
Tomaz Canabrava
2df0b398f3 Added 2 new files to handle the common stuff for graphics.
Added 2 new files, graphicsview-common.h/cpp, that should have
the common stuff shared between the dive profile viewer and
the dive planner. the amount of duplicated code would be huge
if we go the road of two different classes for each one, but
since the planner took a more 'Qtish' way of behavior, in
comparisson to the profile - that's most a Cairo-To-Qt literal
translation, we cant easily merge the code without a complete
( and unwanted ) reestruturation of the profile code, thus,
this new files will serve as a bridge between them. Initially
I put there only the colors - since that's wat most easilyy
shareable.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-07-02 10:08:16 -03:00
Lubomir I. Ivanov
44c33742c2 Profile: add white outline to all text
Goal: no blending between profile text and graph lines

Qt doesn't seem to provide an easy-to-go solution in terms
of styling the z-order of the pen and brush layers of a
QAbstractGraphicsShapeItem (or alternatively pen offset),
which is needed if for example one likes the pen not
to cover the text fill.

Calling QGraphicsSimpleTextItem->setPen() on small text can
cover bigger portions of the text, as the pen ends on top of the
fill and given the pen stroke path ends up scaling exactly
at the fill path border but not on the outside, for example.

Since we don't get quick control over that (and to avoid
the issue in a naive way), we set the text as bold
and the white outline lands over the "bold-ed" area of glyphs.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-29 04:24:06 +08:00
Lubomir I. Ivanov
48cf2fd6bc Profile: move the bounding box below plot data
In certain conditions a number such as '51' could end up being
partially hidden under the white bounding box in such a way
that the digit '1' is barely visible. Putting the bounding
box bellow all plot data solves the issue.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-28 20:24:20 +08:00
Lubomir I. Ivanov
fb4dcbc685 A couple of dialog modality considerations
While most dialogs can be open and the main application window
can still be accessed, certain should possibly be modal
in these terms.

This patch proposes the download from webservice and DC dialogs
to lock the main application window until they are closed, with
the consideration of preventing eventual unexpected behavior
in the divelist if both dialogs are active at the same time.

To solve that QtDialog::exec() is used instead of
QtWidget::show().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-28 20:24:14 +08:00
Lubomir I. Ivanov
880b8394d2 Close child windows and dialogs with main window
Most child windows should be closed with the main application
window otherwise if left open and if making specific
modifictions could potentially cause a SIGSEGV.

To solve that we mark all custom windows/dialogs with
the Qt::WA_QuitOnClose attribute on instance creation.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-28 20:23:59 +08:00
Tomaz Canabrava
233e245b78 Make planner prettier. but still ugly.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-27 19:52:58 -03:00
Tomaz Canabrava
19fbc108c3 Removed memleak created by the diveplan calculations
Removed a small memleak created by the diveplan calculations.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-27 17:31:10 -03:00
Tomaz Canabrava
c7c5ca7c3e Added the Ok / Cancel buttons on the dive planner canvas.
Added the ok / cancel buttons on the dive planner canvas.
I still need to hook the esc button to cancel it too, but
since I removed the 'floating dialog' option and merged it
into the mainwindow, it's necessary.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-27 16:45:58 -03:00
Tomaz Canabrava
1244438b01 Moved the DivePlanner to the MainWindow.
Now, activating the dive planner will hide the profile
and show the planner on the same place. we still need
a way to 'cancel' or 'accept' the profile created.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-27 14:48:03 -03:00
Dirk Hohndel
de7506b44d Somewhat saner behavior for rescaling the planner time axis
We always resize if the dive is longer than the current scale allows, but
we don't shrink it overly aggressively and we never shrink it below the
initial size.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 22:10:03 +08:00
Dirk Hohndel
3cdf8dc4c1 Correctly prevent time travel in planner
Prior to this change the visual feedback (the handle that is drawn when
the user moves the mouse while pressing the left mouse button) would not
move to an illegal position (one that is impossible without time
travel), but it the user moved the mouse to such an illegal position and
then released the mouse button, we still added that illegal position to
the plan.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 21:38:12 +08:00
Lubomir I. Ivanov
47e6e555cc Show empty labels in the Stats tab
Remove a couple of TextLabel text entries from maintab.ui
which can be seen right after program start and if no dives
are present.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 20:57:13 +08:00
Lubomir I. Ivanov
bdd89f0e7a Coordinate some mark_divelist_changed() calls
1) Make a call mark_divelist_changed(TRUE) when the user adds new
cylinder or weight entries.

2) Call mark_divelist_changed(FALSE) in
MainWindow::on_actionClose_triggered() so that each time after
a file is closed or a new one is created it does not ask immediately
the user for a save confirmation for the blank file/divelist.

3) Call mark_divelist_changed(TRUE) once a dive's geo location
has changed in GlobeGPS::changeDiveGeoPosition().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 20:57:11 +08:00
Lubomir I. Ivanov
8678e2d57c Better positioning of the plus sign icons in the Equip. tab
There are a couple of problems with said icons:
- When the Equip. tab is first seen, no relative event is monitored
so that the correct position is updated and the icons are positioned.

To solve that we connect the signal MainTab::currentChanged(int)
and call MainTab::equipmentPlusUpdate().

- When the info-profile QSplitter resizes with a snap towards/from
the edges of the main window, no resize handler is called such as
MainTab::resizeEvent().

A solution is to monitor the resize of the info-profile splitter
with MainWindow::on_infoProfileSplitter_splitterMoved() and again
call MainTab::equipmentPlusUpdate()

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 20:57:10 +08:00
Dirk Hohndel
937fef819a Remove unused code
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 20:55:36 +08:00
Dirk Hohndel
3fa3f55163 Remove incorrect logic for first line in planner
This greatly simplifies the code.
Similar to (but not based on) code submitted by Robert Helling.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 20:54:17 +08:00
Robert Helling
8eb2dc3d65 Removes circle in plan
Remove circle in plan by starting the first line at the first point
rather than the last.

In addition marks all entered points as entered and not just the first and
sets line color accordingly.

Makes plan_add_segment return the added data point.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 19:51:04 +08:00
Dirk Hohndel
1ec8bc5de0 Merge branch 'divePlanner4' of github.com:tcanabrava/subsurface 2013-06-27 11:43:53 +08:00
Tomaz Canabrava
7a840d2668 Fixes most of the issues with the dive planner.
Fixes most of the issues with the dive planner,
The lines are removed when the drag starts, and
it's repopulated after. The time ruler updates
itself with the biggest time in the dive (I'll
add later the code to keep a minimum of 60 minutes,
and increase by 15 to 15 minutes, but for now
this will work ), Removed the code to do
line manipulation while we are moving handlers
around ( because it could trigger ruler-expansion,
that woul'd move everything, and that's not nice.

This showed that something bogus is going on with
the decompression algorithm - I don't know if it's
on the data or on the algorithm itself, but it's
creating a ring with the lines on the canvas
I painted all decompression-algorithm based lines
red so it's easier to spot where the hell things
got wrong.

midnight, sleepy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-26 20:41:39 -03:00
Lubomir I. Ivanov
ab95da8fd2 Update main window title depending of current file state
If a file has been opened from the command line or via the File
menu the main window title becomes "Subsurface: filename.ext".
Title also updates if 'File->Save As' is called. "Subsurface" only
is displayed when no active file is present or post 'File->New'
or 'File->Close'.

To make this work a new public method is added - MainWindow::setTitle()
and also an enum type MainWindowTitleFormat, which should allow
more complicated formatting, such as showing the selected dives
or the total number of dives (e.g. MWTF_FILENAME_N_DIVES).

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 07:23:12 +08:00
Lubomir I. Ivanov
c92cf925bd Reorder the 'View->View ..' list
Use Ctrl+1 for 'View All', while all the singular views follow
with Ctrl+2..5.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 07:22:49 +08:00
Lubomir I. Ivanov
fa96ebeed7 Enable 'View->View Globe'
For viewing the Globe section (pane) we need to collapse
both the 'list' and the 'main' splitters.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 07:22:26 +08:00
Lubomir I. Ivanov
865d4953df Add action to 'File->New'
File->New in the GTK version performed the same as File->Close.
Creating a new file may also ask the user if the current file has
to be saved.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 07:22:18 +08:00
Lubomir I. Ivanov
488ff19fd9 Add the 'Import files' functionality
Similar to File->Open but for multiple files and without
calling on_actionClose_triggered().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-27 07:22:00 +08:00
Tomaz Canabrava
03572e233d Remove the bogus time/depth, and fix the positioning of the Handler after updateTicks.
Remove the bogus time/depth that was duplicated in the
Handler - dirk didn't realized that I already created the
same data that he put on it later, but mine was double and
his his was int, I choosed his implementation since he knows
a bit more than I do about subsurface internals.

Besides that, I worked a bit on the logic that called update ticks,
because it was calling it for every mouseMoveEvent, it created
sooooo many ticks that it made the app unusable ( and slow. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-26 19:14:55 -03:00
Dirk Hohndel
48ba01b807 Enable downloads from the UEMIS Zurich
This behaves somewhat differently from the Gtk version - still needs
more investigation. But at least now it's hooked in.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-24 15:14:07 -07:00
Lubomir I. Ivanov
f3b04a88df Add an 'About' dialog for the Qt UI
The dialog is similar to the one in the GTK version

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-24 07:44:28 -07:00
Dirk Hohndel
ef0272f5ef Perform deco calculation for plan
This uses a bunch of default values that we eventually need to get from
the UI, but it's a first step towards a working dive planner.

This exhibits some graphical artifacts when running, but other than that
appears to be mostly correct.

Things go far worse if I enable the changing of the scale once the deco
makes the dive longer than the displayed time window. Things quickly
spiral out of control.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-23 21:36:50 -07:00
Dirk Hohndel
596095389b Start hooking in the deco calculations
I expanded the DiveHandler to include the actual time / depth of each
node on the graph - this way things will stay consistent if we need to
rescale the graph.

One thing that this makes obvious is that the whole design for the
planner so far assumes metric data. We need to make sure this works well
with feet instead of meters as well (and that it uses the information in
the units settings).

With this change we actually create a dive based on the plan input and
add the deco stops (if needed) to it - but we don't do anything with the
results of those calculations, yet.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-23 20:32:32 -07:00
Dirk Hohndel
4a184a60fc Print the rounded values for time and depth in planner
This looks much more natural than truncating the values. Now the displayed
numbers correspond to the "snap" behavior of the handles.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-23 17:32:23 -07:00
Tomaz Canabrava
a0e5244ffe Fix updateTicks
This is the correct way to add the ticks (and gets rid of two warnings).

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-23 13:21:01 -07:00
Dirk Hohndel
106775b196 Clean up coding style
Just to keep me sane.

The code still shows compile time warnings which are the areas where we
need to complete things to actually do the deco calculations, etc. But now
seemed a good time to merge it into master as hopefully more people can
contribute.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-23 13:14:31 -07:00
Dirk Hohndel
31449dca22 Merge branch 'divePlannerTry3' of github.com:tcanabrava/subsurface 2013-06-22 15:57:26 -07:00
Tomaz Canabrava
880b98ed35 Added the skeleton implementation of the increaseTime and depth
Added the skeleton implementation of the increaseTime and
increaseDepth methods - they will increase the time / depth by
10 units ( feets / minutes ) each time they are clicked.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 16:51:13 -03:00
Tomaz Canabrava
28f48227f7 Added a new class to handle the pseudo-buttons on the canvas.
Added a new class, named Button, that has a clicked() signal,
and can be connected to the view to emulate buttons. While
I know that Qt supports widgets on canvas - I think it's too
nineties to have such square controls on something that can have
rounded borders.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 16:44:38 -03:00
Tomaz Canabrava
01d1a49d94 Make the plot and handle movement stick to an 'Grid'
Make the plot and the handle stick to a grid, the
grid is defined by the integers in the rulers, so
a time of 10,2 is converted to 10, and will put the
point at 10.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 16:28:17 -03:00
Tomaz Canabrava
c9159da43a Depth doesn't suppose to show broken numbers.
This patch makes the depth to show only integers, as
dirk asked. I'v also added a 'm' at the end, I know that
this will need to be taken from the settings  but
i feel lazy today =p

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 16:14:22 -03:00
Tomaz Canabrava
43657d9944 Makes the first and last line of the plot inside of the boundingrect
This patch makes the first line and the last line of the plot
inside of the boundingRect defined by the timeLine and depthLine

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 16:12:04 -03:00
Tomaz Canabrava
1e4d360d0c Do not plot dive handlers outside of the Plane area.
This patch makes the behavior of inserting new hanflers
correct. it can only be inserted now inside of the plane
defined by the Depth ruler and Time ruler.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 16:07:44 -03:00
Tomaz Canabrava
397a94fcd1 Created the posAtValue method for the ruler
Created the posAtValue method for the ruler, you enter
a value, and it will return the coordinates in double
( coordinate system of a QGraphicsScene is double based )
this is not the best name for the function, but I couldn't
find any better suitable name.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-21 15:53:20 -03:00
Tomaz Canabrava
062515ba6f Added back the menu entry 'Dive Planner'
Added back the menu entry Dive Planner, and removed the
calee code from the Print action.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 18:48:21 -03:00
Tomaz Canabrava
fdd8a4811b Added a new class to handle the DivePlanner dialog
Added a new class named DivePlanner that is a QDialog,
and renamed the old DivePlanner class to DivePlannerGraphics.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 18:40:59 -03:00
Tomaz Canabrava
8fcd465a65 Make skeleton of 'create_deco_stop'.
This is a skeleton of 'create_deco_stop' plus a bit of
code cleanup. I'v commented the create_deco_stop so that
the other developers can help me a bit here - since I don't
know too well the internals of subsurface. In the original
GTK code - a new dive was created every time a user changed
something on the dive, I don't know if this will be needed,
I jusst need two things: the correct time of dive calculated
by the app, and the points to put the decompression lines.

The usability of the widget right now is 'ok', nothing to
be proud of, it's ugly as hell too, and the Rules are in
the wrong position ( they are 'inside' the area where
the lines are being drawn, but htis is easily fixable. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 18:25:03 -03:00
Tomaz Canabrava
0539a5fab6 Restore the original color of the Handler as soon as mouseRelease.
Restore the original color of the handler as soon as mouseRelease,
also a bit of code cleanup.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 18:02:01 -03:00
Tomaz Canabrava
cbdd78c0fc Added text to the rules so the user knows what's happening at that point.
Added text to the rules, so the user knows what's happening at that point
The text will move left / right ( for time ) and up / down ( for depth )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 17:54:36 -03:00
Tomaz Canabrava
2d683b66a8 Added the code to set the Depth / Time on the user Handlers.
Added the code to set the Depth / Time on the user handlers,
I think this finishes the difficult part. ( well, not really )
the depth and time is being set when handler is added or moved,
but as soon as the deco calculations enters on the code, the
handlers will need to be repositioned - and this code is not ready
yet.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 17:34:42 -03:00
Tomaz Canabrava
f129024fc7 Added a 2 Ruler Items, Time and Depth.
The ruler items are needed so I can get the correct
coordinates of the planned dive. This is a very
rudimentary ruler and it needs a bit of love, but
it already gives me something to work on.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 16:48:24 -03:00
Tomaz Canabrava
636550d413 Added the skeleton for the Ruler Item,
The ruler will deliver the Time and the Depth, later.
it should be vertical or horizontal, and will have
ticks

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 15:52:27 -03:00
Tomaz Canabrava
52a0e6c82d Make the plan handlers to not move across other handlers.
This patch disables the hability to move handlers across
the others, making a 'zigzag' in the time line.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 15:15:10 -03:00
Tomaz Canabrava
607f82ade3 Added drag and drop code to the dive plan
Added drag and drop code to the dive plan, it can move the user-
inputted data, but will not touch the computer generated ones.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 14:46:40 -03:00
Tomaz Canabrava
021a6a076e Created a class DiveHandle to make drag drop work.
Create d a class DiveHandle to make drag drop works,
it has a from and to Lines, and it will move them
around.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 14:29:32 -03:00
Tomaz Canabrava
1fb023d3c6 Make the cross red when you cant plot a dive stop
Make the cross red when you cant plot a dive stop,
also make impossible to put a dive stop before the last one.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 14:20:45 -03:00
Tomaz Canabrava
46483a096f Better defaults for placement of dive stops.
This patch makes it impossible to create a dive stop
outside of the scene - this, messing the complete
planning system.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 13:56:28 -03:00
Tomaz Canabrava
88e7aa36be Created a cross that follows the mouse on the dive planner.
Created a cross that follows the mouse on the dive planner,
this will help the user to know where it is placing the stop.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 13:53:12 -03:00
Tomaz Canabrava
b1c526ddb4 Fix creation of the poligon-based lines for the dive planner
This fixes the creation of the poligon-based lines
next thing to do is to forbit creation of the next point
before the last one.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 13:39:41 -03:00
Tomaz Canabrava
364254ed36 Better handling of the scene size for the dive Plan
Better handling of the scene size for the dive plan,
The scene can be resized and a transform will be applied,
the handles will not resize however - they are 10x10px
and that's it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 13:28:04 -03:00
Tomaz Canabrava
ab6aea73c1 Plots Lines and handles on the Planner
This is still a bit bugged - the lines are going to the wrong
end - most probaly I messed something on the math. I'll now fix
the sizing issue then I'll try to make it behave in the proper
way.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 13:20:41 -03:00
Tomaz Canabrava
0d45c77572 Make double click work to put new items on the canvas.
Make double click work to put new items on the canvas.
Those items right now are QGraphicsEllipseItems, but
it will change to 'draggable' items.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 12:37:41 -03:00
Tomaz Canabrava
beadeffaf5 Added the first scope of the visual dive planner.
Added the first files and skeleton code for the visual
dive planner. now I need to fill things. The code is
using the print action borrowed, this will need to move
to a better choice in the future.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-20 12:33:26 -03:00
Linus Torvalds
09ee8ece5c Show sample pressures in the cylinder equipment page
If we don't have any manually set pressure data, show the data from the
samples instead.  It uses an italic font for this case, mainly because I
couldn't figure out how to gray things out.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 21:53:34 -07:00
Linus Torvalds
bc24b9320f Don't show '0.0%' gas percentages
It's just distracting.  Leave it empty.  No helium should be visually
very different from actual trimix, and for oxygen, zero means something
different anyway (it's air).  In neither case is '0.0%' a good string to
show, just show it as empty.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 21:52:58 -07:00
Linus Torvalds
45d9ca09de Fix the imperial cylinder size calculations in equipment handling
This makes us use the same linear calculations as we did in the Gtk
branch.  We don't take compressibility into account, since tank
manufacturers don't seem to either.  A Luxfer AL80 is 11.1 liters, and
with the standard (non-compressibility) calculations, 80 cuft of air at
3000 psi is 11.094 liter, so that is the right model to use.

Also, stop with the horrible "units in edited numbers" stuff.  It uses
up precious space, and doesn't look any better.  If the user asked for
cuft, give him cuft without making a big deal about it.

Oh, and if the working pressure doesn't exist, sizes are always in
liters.  That's what we did in the Gtk branch, that's what we do here.
Again, no reason to even bother stating units, it's not helping.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 21:40:38 -07:00
Linus Torvalds
02f2768148 O2/He percentages aren't integral
We do gas mixes in permille, not in percent.  Some people really like
using the value they got from the analyzer, which is generally something
like 29.4% or whatever.  So don't truncate percentages to integers.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 21:39:12 -07:00
Dirk Hohndel
d126977e16 More logical layout for the Dive Info tab
Up until now the tiles seemed to be arranged rather randomly.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 15:28:40 -07:00
Dirk Hohndel
77725ecfe9 Replace wet_volume calculation with straight forward pressure formula
Since no one else approximates gas volumes at higher pressures, we
shouldn't do that either when converting imperial tank names (cuft @
working pressure) into wet volumes.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 14:36:48 -07:00
Dirk Hohndel
88f0f60439 Fix cylinder data O2/He percentage entry braindamage
I can't even begin to explain what got me to write this in the first
place. It makes no sense from any angle I look at it...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 13:46:00 -07:00
Dirk Hohndel
106327af43 Better minimum width for yearly statistics window
The Qt default was way too small.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 10:59:48 -07:00
Dirk Hohndel
138a00bd10 Improve readability of yearly statistics
Make the entries for years bold, keep the months non-bold.
It's still a sea of data, but this is an improvement.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 10:31:01 -07:00
Dirk Hohndel
07a16574e9 Consistently use slots / signals
We started out using Q_SLOTS and Q_SIGNALS but then changed our mind.
Let's make this consistent again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-19 10:20:56 -07:00
Dirk Hohndel
0a92052765 Fix yearly statistics
This commit fixes two issues. One is that there were situations where
the code would read an uninitialized parent pointer, the second was that
instead of the monthly statistics the tree view would show the yearly
statistics again under the yearly entries.

I assume that the second part of the fix (initializing the parent
pointers) actually takes care of both of them (that patch was suggested
by Tomaz), but the first part that just makes sure the pointer is at
least initialized to NULL seems to be at least not harmful, so I kept it
as well.

With this the yearly / monthly statistics seem to be pretty much at
feature parity.

Fixes: #115

Suggested-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 13:31:12 -07:00
Dirk Hohndel
370673cc99 Improve display of yearly statistics
Display the units in the header, make the header more consistent
looking, convert the values into the right units with appropriate
precision.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 10:48:46 -07:00
Dirk Hohndel
dda28c76aa Reduce the bleeding in my eyes
This is all just coding style and white space cleanup.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 09:27:34 -07:00
Dirk Hohndel
f780a56847 Clean up the last merge
While the code is correct, splitting the class like this is silly and will
confuse me later.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 09:25:24 -07:00
Dirk Hohndel
0773172f66 Merge branch 'qtHelper'
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 00:33:03 -07:00
Dirk Hohndel
29b242c703 Converting the device_info list into a Qt data structure
This data structure was quite fragile and made 'undo' when editing
rather hard to implement. So instead I decided to turn this into a
QMultiMap which seemed like the ideal data structure for it.

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

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

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

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-18 00:24:28 -07:00
Tomaz Canabrava
87e380c7a2 Yearly stats are being displayed.
Yearly stats are being displayed. the code is similar to the GTK one,
but I advise the reader that it's a bit risky  ( I got an unreproducible
crash but it seems to be fixed now. ). The selection behavior is *weird*
and I have no idea why, but I'm very sleepy - will try to look at
it again tomorrow.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-17 21:05:17 -03:00
Tomaz Canabrava
a05ea5a6e8 Create a view for the Statistics Model and Fix displaying the header
This simply creates a view to show the model, while doing that
I noticed that the model header wasn't showing, so I fixed it too.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-17 20:02:30 -03:00
Tomaz Canabrava
240cfa74be Started to do the Yearly Statistics
This is the fisrt bunch of compilable code for the new Yearly Statistics
there's nothing to see here, move along...

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-17 19:41:05 -03:00
Tomaz Canabrava
ae68ae38bb Changed a lot of code to reduce boilerplate on models in the future.
So, I changed a lot of code to reduce boilerplate on models in the
future. Currently we do not have a lot of models, but this can increase
quite rapdly. There's a second TreeModel in the works, the Yearly
Statistics, this patch will save around 250 LOC for this new model,
and more and more models will give us a greater saving.

Iwll do that for the table models in the future too - I did the tree
models now because they are the most complex case and I didn't wanted
to create a second tree model without this.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-17 18:59:50 -03:00
Dirk Hohndel
14ccbbf6e8 Merge branch 'renumberDialog' of github.com:tcanabrava/subsurface
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-17 12:59:37 -07:00
Dirk Hohndel
1ee894dced Show the device id in hex
This is consistent with what we used to do

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-17 12:46:35 -07:00
Dirk Hohndel
9d611ba279 Improve the initial size of the device name editing dialog
This is not "automagic" as I had hoped but appears to give a good
starting point.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-17 12:42:52 -07:00
Dirk Hohndel
f465230263 Merge branch '119_divecomputerManagement' of github.com:tcanabrava/subsurface
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-17 11:12:10 -07:00
Tomaz Canabrava
b00553919b add forgotten file.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-17 13:54:50 -03:00
Tomaz Canabrava
272338875d Addes a simple 'Renumber Dialog', very similar to the GTK one.
This code adds a Renumber Dialog, that's most a copy & paste
of the GTK visual, I didn't tried to do anything fance with it,
but I still dont like how it looks like. a better management
form is needed. :)

( Well, actually my dislike is mostly because it's on a menu
and it's on a popup, I think a 'toolbox' should exist to hold
all of those widgets that don't belong to the menu - will try
that later )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-17 13:41:00 -03:00
Linus Torvalds
6fd1e32452 Properly initialize device_data_t when downloading
The old gtk branch started out with device_data_t explicitly cleared,
but the Qt version never did that.  And we actually depend on the
deviceid in particular being initialized to zero (and then we fill in
the details in the divecomputer download callbacks)

Not properly initializing it meant that we ended up with random
deviceid's that got added to the divecomputer device lists, and then
saved to the XML file without actually matching the data in the dive
computers in the actual *dives*.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-16 21:17:35 -07:00
Tomaz Canabrava
c917b29701 Save / Restore the sizes of the columns in Cylinders / Weigth widgets
This patch saves / restores the sizes of the columns in the cylinders
and weigth table widgets, so everything is now properly behaved. There
's still other things to do - but I'm tired. i's sunday and there's a
protest against the brazilian government to go.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 14:36:23 -03:00
Tomaz Canabrava
c809b5a35b Removed the grid lines of the table views.
Removed the grid lines of the table views, this makes the table view
more similar with the dive list - I'm searching for an application
identity here.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 13:53:56 -03:00
Tomaz Canabrava
751c234d03 Remove the Vertical Header on Cylinder and Weigth edit
Remove the vertical header on the cylinder and weigth edit,
It was strange to show, since we don't show a thing there.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 13:37:32 -03:00
Tomaz Canabrava
20849f014e Make the columns have a sane default width for 'type'
Make the columns on Cylinders edit and Wheight Edit to
have sane values for 'type', this is needed because the
old behavior was to set it fixed size, and the default fixed
size was silly. this calculates a good predefined value
taking the font size in consideration.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 13:28:59 -03:00
Tomaz Canabrava
f9b4c6b889 Better handling of default sizes on the Cylinder and Weight widgets
Better handling of default sizes on the Cylinder and weight widgets,
the weigth widget didn't had a CSS applied so it looked odd compared
to the cylinder one, also the default behavior for the combobox delegate
didn't worked very well with the css applied, being too small.
this patch fixes that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 12:33:27 -03:00
Tomaz Canabrava
349a084496 Made all models have the same font.
The models were a bit messy - some of them got the correct font,
other didnt. This patch creates a new function 'defaultModelFont()'
that is being used to return the font in all cases now.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 11:13:32 -03:00
Tomaz Canabrava
10ea572f5a Create a 'ComboBoxDelegate' to concentrate the comboboxness of delegates.
This patch creates a ComboBoxDelegate where the other specific delegates
should inherit from. this adds a little code cleanup for the current
version, and will help as soon as more delegates got added to the code.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-16 10:15:19 -03:00
Linus Torvalds
84d4a2dae0 Partially fix dive downloading
The Qt branch didn't set the preexisting dive count, so matching old
dives didn't work and it always downloaded all of them.

Also, we need to autogroup dives before displaying them if autogrouping
is on.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-15 17:03:23 -07:00
Dirk Hohndel
a960cd2d45 Show & edit trip location and notes when exactly one trip is selected
While we still show the selected_dive in the profile and use it for Dive
Info and Equipment, in the Dive Notes tab we now show the trip location
and trip notes (and none of the other fields), if the user directly
selects a whole trip by clicking on the trip header.

This clever reuse of the widget now allows trip location and notes to be
edited in place.

As a side note: the Gtk version has long allowed the user to edit the
trip location and trip notes, but nowhere did it ever SHOW the trip
notes... so this is more than just feature parity...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-14 09:20:20 -07:00
Dirk Hohndel
8669de63e1 Don't offer "delete dive" context menu for trip
If we are not on a dive we shouldn't try to delete it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-14 07:13:06 -07:00
Dirk Hohndel
d8c5f366c8 First deselect, then select
For reasons I still don't understand, sometimes (but not always) when
clicking on a trip header we appear to get a select notification for the
trip and at the same time deselect notifications for every dive in the
trip. This seems wrong but I can't seem to figure out why it happens -
and of course it causes us to have a mixed up interpretation of what is
selected in our internal selection tracking.

Simply acting on the new selection after the newly deselected items are
handled appears to fix the issue, but I do worry about this change.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-14 06:17:38 -07:00
Dirk Hohndel
5e51d1e354 Plot cleanup
Use a helper to make things easier to read.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-14 14:34:44 +02:00
Linus Torvalds
788c513dd4 Improve the trip header
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-13 20:00:20 +02:00
Dirk Hohndel
e34da61362 Merge branch 'linusDiveList' of https://github.com/tcanabrava/subsurface
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-13 19:56:36 +02:00
Tomaz Canabrava
7e9d6e2829 Fixed the show / hide dialog shortcuts to take the splitter into consideration
Fixed the show / hide dialog shortcuts to take the splitter into consideration,
 So, here's the deal.
 We have a few QSplitters that takes care of helping us with the
 size of a few widgets, they are ok, and we should continue using them
 to manage the visibility of them too. But the way that we did before was to
 widget->hide(); something, and if you hided something using the splitter,
 by holding it's handle and collapsing the widget, then you used the 'ctrl+number'
 shortcut to show it, it whould only show a gray panel.

 This patch makes everything behave using the splitters.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-12 15:54:55 -03:00
Dirk Hohndel
863c485939 Add fifth view mode "Globe" for main window
For consistency I didn't change the meaning of Ctrl-1/2/3/4 and added
this as Ctrl-5 - but one could just as easily make the argument that
"ViewGlobe" should be Ctrl-4 and "ViewAll" should be Ctrl-5.

This ensures that only one of the four widgets is shown in the
individual modes, but it doesn't address the drawing issues with the
profile.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-12 14:53:23 -04:00
Tomaz Canabrava
9993d49966 Do not plot on showEvent if dive is already plotted.
We do a force-plot on showEvent because the user can
have asked to open a dive file via command line, so
the app needs to open already with a profile plotted.

if the user opens the program, loads a map, hides
the profile by hitting ctrl + 1, then shows the
profile again by hitting ctrl + 2, we do not want
to do all the math to show the profile again, because
we already have it in memory.

this also fixes dirk's strange behavior of funky profile.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-12 14:28:44 -03:00
Tomaz Canabrava
ab0213f28e Implements the DiveList to behave like Linus Explained.
Implements the divelist to behave like linus explained,
essentially, it filters the layoutChanges of the model,
greps for trips, and for each trip that it finds, it set
the 'firstColumnSpanned' property, to make the column
to have the size of the whole table. e

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-12 14:14:25 -03:00
Dirk Hohndel
04a7374917 Display the correct metric SAC rate in divelist
We were doing integer math by mistake.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-12 11:58:57 -04:00
Benjamin Fogel
7f60b2b0c6 Change title of dive download form
The title of the form to download dives from a computer was
simply "Form".

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-12 07:27:58 -04:00
Tomaz Canabrava
72d0030509 Added a slot to set the full time of the dive plan
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 21:00:30 -07:00
Tomaz Canabrava
939246acda Added a simple "TextEditor" in the graph, for a plan mode.
Added a simple TextEditor in the graph for the 'Dive Plan' mode,
this text editor is very simple, so the user can double click on
'depth' or 'duration' to set the depth or duration of the dive.
Since this was a test, only 'duration' was done, and I'll add
duration on the next commit.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 20:59:58 -07:00
Tomaz Canabrava
b4835badb6 Added a 'Plan' mode and a 'Dive' mode on the profile.
Added a 'Plan' mode and a 'Dive' mode on the profile. Those modes
tell the application what can be done: Plan - the dive's dinamyc and
can be changed, 'Dive', the dive is fixed ( most probably downloaded
from a dive computer and it's readonly. ) - now I need to properly
populate stuff.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 17:33:46 -03:00
Tomaz Canabrava
1baef83791 Added the option to create a new dive from the menu.
This patch adds a dive from the menu, it's the dive that will
be used to add a new dive plan. so, I also removed the option
'add imput plan' from the menu.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 15:34:57 -03:00
Tomaz Canabrava
ad5c186553 Implemented the movement of the ToolTip by Hand.
Reimplement the movement of the tooltip by hand,
we were adding / removing childs of the tooltip
quite often, wich broke the movement of the item
using the default behavior, aparently Qt uses
a cache of the transformation of the item, assuming
that the bounding box of it will not get modified
while dragging. wich in our particular case, is
a falacy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 14:48:31 -03:00
Tomaz Canabrava
34c6eec9ba Save / Restore toolTip information position on the Profile when switching dives.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 14:28:44 -03:00
Tomaz Canabrava
45f80afc1f Fix memory leak
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 13:54:17 -03:00
Tomaz Canabrava
3eac2360e7 Moved the 'create fake dc' to it's own function in device.c
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-10 13:35:27 -03:00
Dirk Hohndel
bd8470ebcf Merge branch 'fileopen' of github.com:heliocastro/subsurface 2013-06-09 21:01:04 -07:00
Helio Chissini de Castro
4b0c053e48 Ticket 127 - Repopulate context menu on preferences change
Ticket 127 mention that context menu is fixed on imperial mode, which is
partial true. Context menu only not have the changes on header model updated
when preferences are chenges during execution. Hard to note because if
program is closed and opened again, the context is initialized properly.
Since actions aren't bound to the header model, we need iteract of current
items and change the title.

Signed-off-by: Helio Chissini de Castro <helio@kde.org>
2013-06-09 20:09:39 -03:00
Dirk Hohndel
bdee5ea9a6 Fix webservice download dialog
We need to close the dialog after applying what was downloaded, and we
should not try to delete the manager in case of cancel (as that reliably
causes the SIGSEGV.

Suggested-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-08 21:11:07 -07:00
Linus Torvalds
c9113a1f42 Sort 'dive number' column by date, not number
Ok, so this sounds insane, but it fixes our currently broken sorting
of dive trips vs plain dives not in trips.

The reason for that is simple: the dive trips are sorted by date, but
that's column #0, and for plain dives is the dive number.

So currently the trip-vs-dive sorting looks at the date of the trip,
and compares that to the number of the dive. Since the date of the
trip is expressed as seconds-since-1970-in-UTC, unsurprisingly the
dive number is generally much smaller (even for some very avid divers
;), and so the plain dives end up sorting way at the bottom (or at the
top, if you do "oldest trips first"

Since the dive number *should* sort as the date, this stupid attached
patch just makes us return the dive date instead.

Now, there are other possible solutions to this:

 - make the date of the dive be column 0, and make the dive number be column 1.

   Quite frankly, while more logical for this particular problem, it
probably sucks as a solution. We do want to have a column we can sort
dives by that is date-based, but doesn't include trips. And while the
dive number *should* sort identically to the date one, the fact is
that you can have dives without any numbering, so it doesn't.

   In contrast, all dives have dates, and sorting numbered dives by
date should still result in sane behavior (and if it doesn't, then the
insanity comes from the dive numbering, and odd sorting is the fault
of the user and indicative of a problem)

 - We could possibly do something magical like sorting dives by number
when they are inside trips, or when no trips exist at all. But then
we'd sort by date when there are trips and the dive is outside the
trip. But quite frankly, that just sounds insane.

So on the whole, I don't love this patch, but it seems to be the least
confusing of the possibilities.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-08 20:45:29 -07:00
Thiago Macieira
1ee38b4e5e Use the official QItemSelectionModel::SelectionFlags
It's a typedef to the QFlags<QItemSelectionModel::SelectionFlag>.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-08 07:12:08 -07:00
Thiago Macieira
7218fa3568 Fix compile: mixup of GeoDataCoordinates and GeoDataPoint
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-07 22:06:46 -07:00
Henrik Brautaset Aronsen
0031b64df7 Disable Document Mode for MainTab on MacOSX
Commit c4f06dc536 introduced Document
Mode on the MainTab QTabWidget. This doesn't look good on MacOSX.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-07 21:42:13 -07:00
Linus Torvalds
00d5ab1bdc Make a map ctrl-click toggle the selection state
This way the map selection works like normal selections do.  Except we
don't do "ranged" selections (shift-click) for fairly obvious reasons.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-07 21:39:52 -07:00
Helio Chissini de Castro
ef873b4082 Hide/Show tooltip on mouse over view widget
Proper hide/show tooltip under ProfileGraphicsView. Events are not
properly handled and no custom tolltip status was stored.
Text are properly hidden now when tooltip is collapsed.

Reported-by: Tomaz Canabrava
Signed-off-by: Helio Chissini de Castro <helio@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-07 21:25:16 -07:00
Helio Chissini de Castro
1262a7c0bc Keep last open dives directory
Last open dives directory is stored in settings, so no need to walk through all
subdirectories all the time.

Signed-off-by: Helio Chissini de Castro <helio@kde.org>
2013-06-08 00:03:58 -03:00
Tomaz Canabrava
7681895fe0 Remove the dive computer clicking on the trash icon.
This code removes the dive computer clicking on the trash icon,
the result is not saved on the XML, this will need a bit of
hacking from some of the older guys. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-07 15:34:27 -03:00
Tomaz Canabrava
54128aa52f Added the code to remove a dive computer.
Added the code to remove a dive computer, plus a few fixes

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-07 15:25:29 -03:00
Tomaz Canabrava
478c24d797 Removed the buttons on the Edit Dive computers.
This edit dive computers thing doesn't really need buttons anyway.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-07 14:59:06 -03:00
Tomaz Canabrava
24446f9c3c Edit the name of the Dive Computer via dialog.
The GTK version seems to be bugged on this, since the dialog
doesn't save the dive computer nickname that I setted, but
the Qt version shows less dive-computers than the GTK one on the
same dive. I want somebody to do a quick review of my code too. :)

I also plan to remove the 'OK' and 'Cancel' buttom, they seem to
be overrated on this dialog - fairly uneeded.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-07 12:57:35 -03:00
Tomaz Canabrava
ebed836ee5 Created a new dialog - Edit DiveComputer
Created a new dialog, Edit Divecomputer, it will currently only lists
the divecomputers that are used on the xml file. I used the same method
that the gtk version used, but only 2 divecomputers got visualized in the
dirk dive data. I'll assume that it's correct and will fix it in the next
couple of commits.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-07 11:43:45 -03:00
Linus Torvalds
3677f4e5ea Allow ctrl-click to select dives incrementally from the globe view
I guess we should support de-selecting dives this way too, but right now
the interfaces only do selection.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-07 13:36:15 +09:00
Linus Torvalds
d3442a81b3 Fix unused variable warning and spelling
Commit 4b405caa2c ("Clean up divelist dive selection") made the sort
model variable in headerClicked unused, so get rid of it.  Fix a speling
eror closeby while at it.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-07 13:36:01 +09:00
Dirk Hohndel
3cca9eaf94 Merge branch '129_moveOverlay' of https://github.com/tcanabrava/subsurface 2013-06-07 13:34:53 +09:00
Dirk Hohndel
c774bab6e6 Merge branch '112_webservices' of https://github.com/tcanabrava/subsurface 2013-06-07 13:31:42 +09:00
Tomaz Canabrava
840f943acd Fix movement of the tooltip overlay
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-06 13:00:18 -03:00
Tomaz Canabrava
2d05f4227e Hoocked up the Apply button.
Hoocked up the apply button - Didn't tested ( as I frankly don't know
what the expected result should be. ). but the app is not crashing, yey.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-06 11:57:12 -03:00
Tomaz Canabrava
f55ae15707 Hoocked up the buttons and the parsing of the XML.
The XML is now being correctly parsed, Clicking on Help
will open the browser pointing to the api site, and clicking
on cancel will cancel the download.

Clicking on Apply still doesn't apply, but that's next. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-06 11:31:55 -03:00
Tomaz Canabrava
c1cf6c02a8 Added initial support for download dive info from the subsurface web service.
Added initial support for download dive info from subsurface web service,
the current code only downloads and output the xml downloaded in the debug
area. Now I need to parse things up and plug the unplugged stuff.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-06 10:33:15 -03:00
Dirk Hohndel
6f7e13ac70 Try to get rid of unnecessary reloads of the dive list
Don't call refreshDisplay() after preferences change. This strangely
somehow leads to a situation where I need to move the mouse over the dive
list before changes to the units are reflected.

When calling reload() do not force layout change / resort unless that is
the intention.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-06 11:28:20 +09:00
Dirk Hohndel
3f7490c205 Add delete dive context menu entry
Getting closer to the way this should work. Adjusted the call to reload
to not switch back to tree view and resort (oops).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-06 10:37:18 +09:00
Dirk Hohndel
cd7488491f Implement the context menu a different way
It seems that this is the way this is supposed to be done - instead of
manually looking at what kind of click we get, Qt decides when to create
a context menu for us - this way things like the Windows Menu button
will work automagically.

As an example I also implemented the "remove dive from trip"
functionality, which exposes some other bugs (like the fact that the
dive that isn't part of a trip ends up being sorted at the very end of
the dive list).

This commit contains a "testSlot" implementation to remind me how to
figure out which dive / trip we are on.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-06 09:06:42 +09:00
Dirk Hohndel
235833b93e Only show expand/collapse context menu when in tree mode
The options make no sense when in list view mode.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-06 06:51:15 +09:00
Dirk Hohndel
582253fe88 Distinguish between "collapse" and "collapse all"
Some users might want to really see nothing but trips, others might want
to be able to keep the trip with the selected dive open.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-06 06:39:54 +09:00
Dirk Hohndel
74d23ed83b Add context menu to dive list
So far we support "expand all" and "collapse" all. This still needs to
be restricted to only be shown when in trip / tree mode.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-06 03:29:11 +09:00
Linus Torvalds
4b405caa2c Clean up divelist dive selection
Since we have a "selectDive()" method, let's just use it rather than
opencoding it.  Similarly for "unselectDives()".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 17:49:39 +09:00
Dirk Hohndel
4d937051ca Fixing some issues with the dive selection after OK on preferences
These changes should be correct - but they still don't fix the problem
that after we click 'OK' on the preferences (regardless of whether any
changes were made), the first dive is set as current dive and shown in the
map window.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 17:15:32 +09:00
Dirk Hohndel
b115423aa1 Keep selected dive in view
Somehow we managed to break this. Again.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 16:46:23 +09:00
Linus Torvalds
a737f59553 First cut at selecting dives from the map
We'll want to enhance this: better logic for which dives are near the
selection, and it's probably best to have a "control-click" that adds
the dives to the selection rather than deselecting all the old ones.

But it's already useful.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 16:40:27 +09:00
Dirk Hohndel
b533cf299f Get single click on the map widget in a callback for further processing
Now Linus can write the code that selects the right dives...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 14:44:12 +09:00
Dirk Hohndel
6f979b48ed Show locations with same name on the map if they are more than 50m apart
Not showing them at all was a little too blunt of an instrument. There
likely are dive spots with the same name at different resorts. And even
at the same resort you could have multiple morings for the same dive
site.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 12:16:34 +09:00
Dirk Hohndel
9dab886117 Reload globe after dive location was modified
This way a change to the location name is immediately reflected in the
map display.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 11:39:40 +09:00
Dirk Hohndel
3fa6d981b0 Merge branch 'minMaxAvgWidget' of https://github.com/tcanabrava/subsurface 2013-06-05 10:01:27 +09:00
Dirk Hohndel
ca1c112424 Update the current dive when no dive was selected
The check to only update the dive if there were already dives selected
before seems bogus. I'm sure I put it there for a reason but it seems
flat out wrong.

This gets triggered when you select a trip by clicking on the trip
header. In that case all dives get unselected (amount_selected = 0) and
then we try to select the first dive in the trip - which fails because
of this check.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-05 09:51:40 +09:00
Tomaz Canabrava
48dda4192f Added a new widget 'MinMaxAvgWidget'
Added a new widget, MinMaxAvgWidget, a simple widget
that displays values in 'min, max, avg' fashion.
it has a setMaximum, setAverage and setMinimum
methods, that is userful for setting the minimum,
maximum and average of stuff. Ah, it also shows
the minimum, maximum and average of things.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-06-04 18:51:27 -03:00
Dirk Hohndel
87decaa798 Stop showing the first dive after a preferences change
What is missing is the code to actually show the RIGHT dive...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-04 21:56:20 +09:00
Dirk Hohndel
ed0f558efb Rewrite readSettings to do what it should have done from the start
This function was supposed to take the default_prefs into account but
clearly wasn't.

Now it should be much more readable and maintainable.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-04 21:40:28 +09:00
Dirk Hohndel
46112cbcd6 Explicitly store UI values to prefs
This helper wasn't called as intended - but because of the syncSettings
call which emits settingsChanged this only became visible for the
default_filename.

Next I need to clean up what is called for the settingsChanged signal.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-04 06:29:33 +09:00
Dirk Hohndel
b38e2ab485 Tie all the pieces together and make Preferences work as intended
Not Apply / Close without Saving / OK work as designed. And things get
correctly stored and reset.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-03 21:08:49 +09:00
Tomaz Canabrava
77c4b8ef87 Implement Apply / Close without Saving for preferences
This hooks up the buttons correctly

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-03 06:02:05 +09:00
Dirk Hohndel
de8395e09e Merge branch 'selection' 2013-06-02 20:36:41 +09:00
Dirk Hohndel
e88a9aa83e Once again try to fix the selection
Things got broken. Again. We no longer kept track of the selected dives in
our structures which broke statistics.

This attempts to fix that, but appears to still have a bug when selecting
trips. Sometimes this results in 0 dives being selected according to our
data structures, while Qt happily shows all dives of the trip as seected.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-02 20:31:04 +09:00
Dirk Hohndel
a98a7a1351 Correctly implement Metric / Imperial / Personalize preference
The code so far had completely ignored Metric / Imperial. Turning this
into a three way radio box seemed to make much more sense.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-06-02 19:52:18 +09:00
Dirk Hohndel
9a65798daf Use a slightly shorter date string for Info tab
This way the spacing of the elements looks nicer.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 17:59:01 +10:00
Dirk Hohndel
a31a8ca759 Merge branch 'showGas' 2013-05-31 17:33:04 +10:00
Dirk Hohndel
6f7467de7a Show the gas with the pressure diagram
This is a feature that had been requested a few times in the past and when
debugging my "show only used gases" commit I realized that this would have
been extremely useful to have...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 17:31:53 +10:00
Linus Torvalds
8307763212 Scroll to (and re-expand) the selection when sorting and moving
The keyboard movement wouldn't scroll to the newly changed selection.
Similarly, when sorting the dive list, we'd end up losing the currently
selected dive (and generally collapsing the currently exposed trips).

This adds the scrolling/exposing logic for those cases.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 16:33:06 +10:00
Dirk Hohndel
abb43f0f1d Show GF for calculated ceiling above the graph
The hardcoded position we previously had would make the text invisible
if a ceiling was drawn during the middle of the dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 13:47:34 +09:00
Dirk Hohndel
ff6e730e30 List only the gases used in the Info tab
The equipment tab will still show all defined gases, but the info for
the dive should only list the ones used.

Also change the name of the two gas related boxes to better reflect the
data that is shown.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 13:43:49 +09:00
Dirk Hohndel
e6d419f6be Fix compiler warnings for maintab.ui
Simply renaming all the elements with name conflict. None of these names
appear to be referenced anywhere so this seems like a rather odd thing to
happen - why doesn't the tool just rename them for me when I open and
close the file in designer? Or at least warn about it?

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 09:47:03 +09:00
Dirk Hohndel
06c9e59904 Merge branch 'bug123_designStatistics' of https://github.com/tcanabrava/subsurface
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 07:16:24 +09:00
Dirk Hohndel
616a2e7e5a Merge branch 'bug_123_designInfo' of https://github.com/tcanabrava/subsurface 2013-05-31 07:11:56 +09:00
Dirk Hohndel
c972c7cbd9 Display the Subsurface manual in the help widget
This adds a helper function to determine the Subsurface data directory
(are we running from build directory? installed on Linux? installed on
Mac? - still need to add support for Windows). This same function is
then used by both the setup for Marble and for the help browser.

This assumes that the user-manual.html file has actually been built and
installed (which we don't do by default with the current Makefile).

Right now there are rendering issues with our manual in the help browser
widget - I'm sure this can be fixed...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 06:26:56 +09:00
Tomaz Canabrava
422e0f94d6 Added the 'F1' key as standard shortcut for the Help
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-31 05:32:59 +09:00
Tomaz Canabrava
7f732559d8 Added preliminary support for a Manual Display Widget.
Added a preliminary support for a manual display widget,
it's a very basic HTML text-browser, so it can have
hyperlinks, images and everything that a 1995 browser
has.

The long term plan is to subsittute this manual by
a more modern 'help' using QGraphicsView, that will
interact on the application level.

See #121

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-31 05:32:41 +09:00
Dirk Hohndel
32d8051404 Cleanup minor issues with ceilings for individualy tissues
In commit b8d31d8534b ("Show ceilings for individual tissues") Robert
inadvertently broke the connection from dc_ceilings to red_ceilings and
also didn't correctly enable the checkbox for all_tissues when
calc_ceilings was already set in the preferences before the dialog was
created (and therefore the connection in the .ui file isn't run).

There's also a simplification / cleanup to the code deciding whether to
show all the tissues.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 05:28:24 +09:00
Robert Helling
344a429e48 Show ceilings for individual tissues
I think that displaying tissue loadings either as pressure or as
percentages is not very intuitive but that it makes much more sense when
translated to ceiling depths.

This change enables just that for the 16 tissues in our calculated ceiling
and visualizes this in the profile graph.

There is a checkbox in the preferences to turn this on. If enabled, all
tissues having non-trivial ceilings are also shown in the info box.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-31 05:18:25 +09:00
Tomaz Canabrava
8f71344708 Removed the code to center-allign labels on the Statistics
Since I already put the center-allign label on the interface designer,
this was just dead code. getting rid of it.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-30 11:46:06 -03:00
Tomaz Canabrava
085dca69e5 Redesign of the Statistics tab try1
This moves the contents of the statistics tab to groupboxes,
so it's similar to what we had in GTK, but a bit prettier.
it's not what I plan to do in the final form, since I think
that a few 'min max avg' can be in it's own widget ( and maybe
a cute graph showing the values would also be nice. ) but its
an improvement from what we had.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-30 11:44:27 -03:00
Tomaz Canabrava
bd6dfa1ebd Align Labels on center.
There was already a code for that on the maintab.cpp, but
since I moved all labels to groupboxes, the code stopped
working, and I tougth it'd better to kill the code since
it's faster and safer to use the interface builder for that.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-30 11:30:23 -03:00
Tomaz Canabrava
533d18e069 This is a redesign-tryout of the Info panel.
This is a redesign-tryout of the info panel, it's not the way
that I want to do, actually - I think that textual representations
are quite boring, and we can do much better if we use better widgets,
for instance, a Calendar to show the date, a Termometer to show
the temperatures and so on. This version has a fixed layout, but
I'll most probably try to make it more dynamic in the future.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-30 11:22:33 -03:00
Tomaz Canabrava
77880b7a07 Add a proof of concept for filtering the Dive List,
Press CTRL+F and a line edit will appear, whenever you write on that will
be used as a filter against all columns. The results are maybe somewhat
surprising in trip mode, but when sorting by another column this shows
some potential.

Hit ESC to remove the filtering.

I need to find a better position to put the Widget, but it's a proof of
concept.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 20:29:55 +09:00
Tomaz Canabrava
c4f06dc536 Puts maintab as 'DocumentMode'
This small patch enable maintab to be  in 'Document Mode', this means
basically that it size is smaller and there's not a line separating
the widget anymore, giving the user a more smooth experience.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-30 20:24:22 +09:00
Dirk Hohndel
2a4d981d09 Fixed running the Download dialog multiple times
We never reset the 'downloading' variable.

Solved-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 18:21:08 +09:00
Henrik Brautaset Aronsen
56eaea6993 Enable Marble Google Sat lookup when run as a MacOSX app
Following Dirk's commit ae2c132, add support for custom google sat
data in a MacOSX app bundle

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 18:05:02 +09:00
Dirk Hohndel
f32e86eb32 Hook up the Download dialog
The download already worked, but we didn't display the new dives. This
introduces a new slot for MainWindow that updates what is displayed in
Subsurface after files were imported.

With this change we can successfully download ONCE - but when trying to
download a second dive the dialog doesn't appear to get refreshed the
right way - the OK button doesn't appear to work anymore (Cancel however
does).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 18:02:29 +09:00
Dirk Hohndel
ae2c132a26 Do a better job finding Marble Google Sat files
First try if Google Sat is already installed as a provider (and just use
it if it is). Then use the executable path to make an educated guess where
these files might be found as part of Subsurface.

We now install the necessary directory tree under
$(DESTDIR)/usr/share/subsurface/marbledata

Still far from perfect - but this should work at least on Linux. MacOS
will need a different modifier for the path and Windows I haven't even
thought about, yet.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 14:00:55 +09:00
Thiago Macieira
7b75cfa808 Fix compilation: error: ‘GeoDataDocument’ does not name a type
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 12:03:25 +09:00
Henrik Brautaset Aronsen
94baac4cf3 Don't display "show" in front of every column
When (de)selecting columns, a the list of columns have a "show"
in front of every entry.  We don't need that.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 06:23:46 +09:00
Dirk Hohndel
85e3a4ad29 Fix sorting by rating
In commit beb4ed38f264 ("Add a "sort role" for sorting the dive list")
Linus forgot to add a case for the rating value.

Now all columns sort correctly.

With this I think we can close the bug...

Fixes #111

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 05:53:50 +09:00
Dirk Hohndel
f037b9e13f Code layout changes
Tomaz convinced me (with help from Linus) that it might be a good idea
to go with the compacter "single line" case statements in some specific
instances where this makes the code much more compact and easier to
read.

While doing that I changed Linus' code to do 'retVal = ...; break;'
instead of just 'return ...;' - this is more consistent and makes
debugging a little easier.

And while doing all that, I also cleaned up divelistview.cpp a little bit.
And removed an unused variable.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-30 05:49:41 +09:00
Tomaz Canabrava
94c3545c18 Code Cleanup.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-29 16:50:25 -03:00
Tomaz Canabrava
16d0a47853 Fixed the regression of selection not being stored from table to tree
This fixes the regression that I caused in the last commit,
where the selection was being correctly reestored from tree-to-table,
but it was incorrectly being restored from table-to-tree.

I also added a bit of speedup on the view while changing columns.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-29 16:46:27 -03:00
Tomaz Canabrava
9cc04c1ca6 More work on bug 111, Sorting works as it should.
Sorting is now working as it should, changing
from table to tree, keeping the selection from
table to tree ( but there's a regression on
tree to table conversion, I'll try to fix it
in the following commit. ).

this commit also cleans a lot of boilerplate
code that I wrote to bypass a graphics bug,
that I seem to have correctly fixed in this
version.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-29 14:03:36 -03:00
Tomaz Canabrava
f46a2d56bc Reimplement the Sort method to change from Tree / List, and remember selection.
Things are working as they should, but I hit on -probably- a Qt bug
that makes painting on the table view a bit weird ( it only updates
the painting by moving the mouse around ). I'll try to fake the
mouse movements in a couple of commits after this one.
There's also a few columns that are not being correctly sorted,
probably something to do with the SortRole.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-29 11:51:33 -03:00
Linus Torvalds
bb77f5a44e Add a "sort role" for sorting the dive list
By default, sorting is done by the display role, but then we end up
sorting by the string we display, which is almost always the wrong thing.

So this adds a new "SORT_ROLE" that is used for sorting, and then the
data lookup can return the raw data we want to sort by.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-29 20:10:20 +09:00
Dirk Hohndel
8df20f4149 Merge branch 'bug111' of https://github.com/tcanabrava/subsurface 2013-05-29 19:55:24 +09:00
Sergey Starosek
4371a4a298 Fix message widget visibility.
Hide message widget when closing dive with no GPS coordinates.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-29 19:24:20 +09:00
Sergey Starosek
823e870765 Fix default zooming.
Set default zoom level only when at least one dive selected
and user have not changed it.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-29 19:23:07 +09:00
Dirk Hohndel
da52ff56b2 Correct the ceiling preference handling
Added the red dc ceiling as preference option.
Hooked them all up together so the sub-preferences are enabled when the
master preference is set (for 3m and red ceiling).
Use the options in the profile plotting functions.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-29 15:32:31 +09:00
Dirk Hohndel
c78d0ad51b Correctly enable partial pressure threshold entry in preferences
The initial state needs to reflect the value of the checkbox. Once the
dialog is run, there is a signal/slot connection in the .ui file that
keeps things in sync.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-29 14:58:22 +09:00
Dirk Hohndel
4f53ad736d Connect preferences to the rest of the code
The biggest problem here was that bool has different sizes in C and C++
code. So using this in a structure shared between the two sides wasn't a
smart idea.

Instead I went with 'short', but that caused problems with Qt being to
smart for its own good and not doing the right thing when dealing with
'boolean' settings and a short value. This may be something in the way I
implemented things (as I doubt that something this fundamental would be
broken) but the workaround implemented here (explicitly using 0 or 1
depending on the value of the boolean) seems to work.

I also decided to get rid of the confusion of where gflow/gfhigh are
floating point (0..1) and when they are integers (0..100). We now use
integers anywhere outside of deco.c.

I also applied some serious spelling corrections to the preferences
dialog's ui file.

Finally, this enables the code that selects which partial pressure graph
to show.

Still to do: font size, metric/imperial logic

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-29 12:59:46 +09:00
Tomaz Canabrava
5a994b08f6 Saves the selection to select it later.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-28 17:46:40 -03:00
Tomaz Canabrava
4019fdaa24 Switch between Tree / list on column - click.
This patch adds support for switching Tree / List
while clicking on a column header. This triggers
a sad-painting bug on the list - I guess I'll have
to fix it too. I'd apreciate some help on it, tougth.
next: keep the selection.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-28 17:07:43 -03:00
Tomaz Canabrava
c6f84de37c Adds the code to make the dive list behave like tree or list
This code adds the possibility to make the DiveList behave
like a Tree or a List, depending on what layout is set.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-28 16:56:58 -03:00
Dirk Hohndel
8394828806 Fix the positioning of text in the dive profile
This had been bugging me for a while - the label texts were all not
quite where I expected them to be. I think this looks much better now.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-28 09:57:49 -07:00
Dirk Hohndel
b947cc924f Hook up most of the Preferences dialog
The imperial/metric super setting doesn't have any effect. But changing
the individual units now works and is tracked. And causes the display to
change after clicking "OK" (but not yet when clicking "Apply").

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-26 11:33:45 -07:00
Dirk Hohndel
96f74d9939 Repair the saving and loading of units
This way it should work...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-26 10:49:05 -07:00
Dirk Hohndel
43892e36fd Fix colum visibility selection in the divelist
Several changes:
- split the reload of the DiveListView from the reload of the header
- don't include the column title in the name of the setting; the title
  will change depending on the units and localization chosen by the user
- rename the slot that toggles visibility to make the code more readable
- use setCollumHidden() method to simplify the code
- don't save the width of hidden columns (as they would be saved as zero
  width and can then no longer be enabled)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-26 10:16:01 -07:00
Dirk Hohndel
2896dbdaf1 Apply some CSS goodness to the Cylinders widget
Alternating color and some hover highlighting to make things prettier.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-26 10:05:41 -07:00
Dirk Hohndel
a8cdc30dbf We had an extra column in the model for the dive list
It doesn't appear to be used anywhere, but it shows up in the UI and
confuses things.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 20:16:16 -07:00
Dirk Hohndel
81e27b6db9 Try to make the equipment tab more compact
My attempts to actually set the width of the columns with the
SizeHintRole all failed - so I gave up on that and am forcing things to
work by making the texts in the header somewhat longer and then resizing
to that. Definitely not what I wanted to do - but that plus reducing the
font size gives us a much more reasonable / compact look.

I really hope that someone else can explain to me how to get the
SizeHintRole to affect the width (and not just the height - that part
worked just fine) of a the cells in a column. Then we can replace this
hack by a much better solution (that won't fail if the translated strings
look different).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 20:07:36 -07:00
Dirk Hohndel
4409d61f7c Set a pleasant zoom level to start out with
If the user very quickly switches between dives the zoom level sometimes
gets reset to be much more "zoomed out" (basically if you change dives
before Marble had time to zoom all the way in to the previous dive it will
keep whatever was the last zoom level of the animation - I'd consider that
a Marble bug).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 11:13:15 -07:00
Dirk Hohndel
92ee374494 Find Google maps in Subsurface's source tree
This way the user doesn't need to move the two folders googlemaps and
googlesat around in the filesystem.

This only works if Subsurface is started from the build directory - it
doesn't work when Subsurface is installed (and it doesn't at all address
the need to install these files and bundle them as well).

I'd consider this a hack to show how the real solution should work.

There is one more part of this that is a hack: Marble no longer searches
its default data directory; the path we set replaces the Marble system
search path. Sadly, Marble doesn't support paths the way Unix thinks of
them with multiple directories, separated by ':'. So this means that
Marble no longer finds any of its default icons. For most of them that
seems fine as I don't think lacking the icons for "manned_landing",
"robotic_rover", "unmanned_hard_landing" or the various types of places of
worship that Marble supports is necessarily a big issues for Subsurface,
but at least the default_location icon seemed important. And since we now
need to carry our own, I replaced the boring circle with a tiny dive flag.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 08:58:37 -07:00
Sergey Starosek
dbb84188c2 Fix GPS coordinates rounding.
Better round the coordinates.

Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 08:18:13 -07:00
Dirk Hohndel
fe66fe5ff6 If we disable the compass, we don't need to place it, either
Just completing commit f1a4edc5497d ("Don't show the compass").

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 08:18:06 -07:00
Henrik Brautaset Aronsen
bf7d61e74e Don't show the compass
North is always up anyway.  At least that's the way we've done it so far.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 08:18:01 -07:00
Dirk Hohndel
5ca3c11e60 Correct the code to enter dive locations
The existing code converted the lat/lon to int before multiplying with
1,000,000 (in order to create udeg). Oops.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 08:17:56 -07:00
Henrik Brautaset Aronsen
5d05bb1207 Avoid marble widget resize when switching dives
The "no dive location" message box was displayed above the marble
widget, which made the layout splitter move horizontally.

Made the message box as an overlay on the map instead.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-25 08:17:14 -07:00
Dirk Hohndel
884e1c3379 Merge branch 'prefsDialog' of https://github.com/tcanabrava/subsurface 2013-05-24 12:30:29 -07:00
Tomaz Canabrava
efb7f109e8 Added support for a preliminary Preferences Dialog
Dirk asked me to try to make it more modern, so I
used as a base, the Firefox preferences. currently
it saves / loads the preferences, and also smits
a signal 'preferencesChanged' that should be connected
to anything that uses preferenes, via the PreferencesDialog::intance()
object. In the future, I plan to make it have a signal / slot for each
member that changes.

I also moved the icons to a new folder this time, because the
amount of icons is now more than just two, and it was
becoming messy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-05-24 15:19:48 -03:00
Dirk Hohndel
5926f9d4df Merge branch 'googleEarth' of https://github.com/tcanabrava/subsurface 2013-05-24 07:16:37 -07:00
Tomaz Canabrava
dfa59f9878 Trying the googlemaps integration 2013-05-24 11:07:59 -03:00
Alberto Mardegan
5e0a3cdad8 Fix usage of temporary QByteArrays
This commit fixes three different things:
 - a memory leak in WeightModel::setData()
 - getSetting() calling strdup() on a QByteArray
 - a possible usage of memory after deallocation

Here's an explanation of the last issue (taken from the mailing list, slightly
adapted):

toByteArray(), as well as others "toSomething()" methods, returns
a new object which the compiler allocates on the stack.  The compiler
will consider it a temporary data, and destroy it on the next line.  So,
when one does

	char *text= value.toByteArray().data(); // line 1
	if (strcmp(description, text)) {        // line 2

the compiler creates a QByteArray on line 1, calls ::data() on it, which
returns a valid char *, and assigns its value to "text".  So far, so
good.  But before jumping to line 2, the compiler destroys the temporary
QByteArray, and this will in turn invoke the QByteArray destructor,
which will destroy the internal data. The result is that on line 2,
"text" will point to some memory which has already been freed.

One solution is to store a copy of the temporary QByteArray into a local
variable: the compiler will still destroy the temporary QByteArray it created,
but (thanks to the reference-counted data sharing built in QByteArray) now the
destructor will see that the data is referenced by another instance of
QByteArray (the local variable "ba") and will not free the internal data.
In this way, the internal data will be available until the local variable is
destroyed, which will happen at the end of the {} block where it is defined.

Please note that when one uses the data in the same line, one doesn't need to
worry about this issue. In fact,

  text = strdup(value.toString().toUtf8().data());

works just fine.

Signed-off-by: Alberto Mardegan <mardy@users.sourceforge.net>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-24 06:18:27 -07:00
Henrik Brautaset Aronsen
57e7c3f5d0 Improve wording in askSaveChanges()
Don't Save/Cancel/Save is less ambiguous than OK/Cancel/Save. Also
being slightly more verbose when creating the QMessageBox.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-24 06:16:10 -07:00
Henrik Brautaset Aronsen
6fa670e612 Improve wording on buttons when editing a dive
Use the more familiar Save/Undo instead of OK/reset

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-24 06:15:28 -07:00
Dirk Hohndel
90a24255b2 Correctly add new weight / cylinder types, even when hitting 'tab'
We now detect if a weight / cylinder with this description exists and if
not add it on the fly. We also remember the additional values (weight and
size / workingpressure) for new entries and take the values for these
fields into account when autocompleting.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-23 23:26:17 -07:00
Dirk Hohndel
01a3bd2cc6 Add weightsystem delegate to enable editing of weightsystem
This is very much analogous to the way cylinders are implemented.
That means that just like with cylinders, if the user enters a new type
and hits 'tab' before hitting 'enter', Subsurface will crash.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-23 21:36:33 -07:00
Dirk Hohndel
ecbcd4db47 Enable the weightsystem info and move the declarations to dive.h
Having the tank_info declared in models.cpp seemed unintuitive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-05-23 21:33:19 -07:00