Commit graph

6112 commits

Author SHA1 Message Date
Tomaz Canabrava
1e4f744165 Fixes showing the Empty Profile when Add / Plan dive is cancelled.
for some reason the next selected dive is NULL after cancelling the
plan. I'm investigating.

This patch fixes the show of the empty profile and it also untangles
some parts of the code, keeping the mainwindow where it should belong
: the mainwindow.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28 12:25:36 -07:00
Dirk Hohndel
2f8f632cf6 Minor cleanup
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28 10:16:53 -07:00
Dirk Hohndel
f936776069 Try to clear out the profile when dive list is empty
This only partially works. If I start from an empty dive list, plan a
dive, then abort, there are still leftovers in the profile widget.
Hitting Ctrl-W clears that out. But it just runs the same cleanUpEmpty()
again...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28 10:16:00 -07:00
Dirk Hohndel
e4a438c96c Dive planner: remove the fake dive earlier on cancel
This way it's already gone from the dive list before it gets reprocessed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28 10:13:24 -07:00
Dirk Hohndel
f8a773b37f Dive planner: remember the selection before new dives get handled
On an empty dive list we would remember the new dive (which gets
auto-selected since it's the only dive) and then crash when we try to
restore that selection after cancel (in which case that new dive is gone).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28 10:12:33 -07:00
Dirk Hohndel
424d38e0c1 Dive add: remove duplicate code
This is already done when we create the fake dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28 10:09:44 -07:00
Dirk Hohndel
b08969ac33 Dive add: fix crash when canceling
We need to reset the editMode right away, otherwise all the changes to the
input field (when resetting the data after the user cancels) will cause
Subsurface to crash as current_dive will temporarily be NULL.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 20:31:18 -07:00
Tomaz Canabrava
7320748ace Much, much smarter way of finding the Tags
The old way manually implemented a parser, where it could simply call a
regexp (or, in my case, a QChar) that will split the QString into many, to
find the beginning and end of the strings on the tags.

This patch also fixes a Qt5 off-by-one bug on the tag Visualization.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 20:03:29 -07:00
Dirk Hohndel
f2ecb6d0eb Fix manually adding dive
I'm sure canceling the plan when saving an added dive made sense at some
point for some reason. Right now it makes things crash, so let's not do
it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 16:12:09 -07:00
Dirk Hohndel
b9e9eeb441 No need to separately enable and switch focus to the dive list
RefreshDisplay() does this for us.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:48:38 -07:00
Dirk Hohndel
c88a90f379 Planner: correctly refresh the display
We were making things way too hard (and were doing things that don't need
doing, like clearing the DivePlanPointModel).

Currently we still crash after manually adding a dive or when canceling
a plan.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:44:47 -07:00
Dirk Hohndel
eb59b97c2b SetFocus only works if the widget is enabled
One could argue that this makes sense...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:32:45 -07:00
Dirk Hohndel
1f2159dd0c Planner: return Profile widget to profile state
This still crashes when canceling the plan.
And doesn't display the correct dive profile until you switch to a
different dive and back.
And Keyboard focus is wrong.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:27:53 -07:00
Dirk Hohndel
7bed6e9873 Planner: use the gas in the first cylinder for initial plan
As Tomaz suggested, I don't need to pass the information whether we are on
the planner into the function - it's part of the DivePlannerPointsModel
and therefore already knows.

Also, we want to make sure we actually use the gas that's in the first
cylidner of the staging dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:12:41 -07:00
Dirk Hohndel
d1cd1eb933 Planner: better handle the temporary dive used for planning
This still crashes when you abort the plan.
And when you accept the plan, the profile stays stuck in PLAN mode.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:12:41 -07:00
Dirk Hohndel
7feea7ccfa Planner: disable the dive list when working on a plan
And reenable it when refreshing the screen.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:12:09 -07:00
Dirk Hohndel
12b9c75676 Planner: clean up the logic for starting up the planner
The existing code had no chance of every working - on so many levels.
First unselect all dives, then extract data from a selected dive?
Set up the cylinder data (which didn't work), and then clear the data
again?
What the heck.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27 15:09:47 -07:00
Tomaz Canabrava
4e3793c053 Paint the dive red if the user is breaking ceiling on the planner.
This patch paints the dive red if the user is breaking ceiling
on the planner - it's quite fast, it analizes the depth over the
max(tissue_1 .. tissue_16) and changes the color of the profile.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 15:42:43 -07:00
Tomaz Canabrava
d9abf885c2 Better movements from the lines when added / removed.
This makes the movements from the lines when added / removed
SO much better.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 15:39:04 -07:00
Dirk Hohndel
0d58cfb641 Planner: don't try to update the MainTab dive info while in plan mode
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 15:18:15 -07:00
Dirk Hohndel
0f023791f8 Fix warning
When converting from assert to if I forgot to invert the comparison...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 14:21:37 -07:00
Tomaz Canabrava
4c9dd0e698 Speed up the grid: don't repaint when uneeded.
Added a flag to only recalculate the axis when needed.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 14:07:48 -07:00
Tomaz Canabrava
addec6b69f Do not set maxTime when the handler is moving.
Fixes massive cpu hog.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 14:07:27 -07:00
Tomaz Canabrava
fe2eb1a9fc Activate the Planner
On the cleanup dirk forgot to set the plan tipe to PLAN instead of ADD

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 14:07:06 -07:00
Dirk Hohndel
9cc8e39d42 Merge branch 'Planner' 2014-05-26 13:28:18 -07:00
Dirk Hohndel
cf3701bbac Planner: convert assert into warning
We need to make sure we let the user know about this in a more user
friendly way...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:25:50 -07:00
Dirk Hohndel
42c54e7b7e Planner: copy samples and events for plan and add
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:23:52 -07:00
Dirk Hohndel
660235c9b7 Planner: Don't include the ascent in the default dive
Allow to both create the full default dive or ownly the descent and bottom
part (so the planner can deal with the ascent).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:19:35 -07:00
Tomaz Canabrava
eec0b327a3 Make the planner show something.
This is working in the wrong way, mostly because I'm setting the
plannermodel to ADD state ( and the planner graphic to the
correct PLAN state ), but I don't know why - when on PLAN state
on the model, things just don't work.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:18:53 -07:00
Tomaz Canabrava
9b9abd5f2a Created a function to create a fake dive for Add and Plan states.
This function should likely to move to C in the future, I'm only
adding this here because I'm changing this file so much ( already
4 rewrites of the function )

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:18:37 -07:00
Tomaz Canabrava
58d5d5ca41 Remove uneeded call.
The disableDcShortcuts is called inside of the ProfileGraphics
( I actually think that this method should be moved to there )

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:18:31 -07:00
Tomaz Canabrava
777f047247 Small code cleanup.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:18:22 -07:00
Tomaz Canabrava
dcd8381764 Planner: Move method down below to easy comparisson with another.
Planner and add states are driving me nuts.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:18:12 -07:00
Tomaz Canabrava
c4d022356e Planner: states Add and Plan have a similar behavior
So, the code is equal.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:18:00 -07:00
Tomaz Canabrava
feff22c222 Planner: Re-enable using the new profile.
This correctly enables the planner on the new profile,
but it doesn't triggers the correct paint on the canvas.

[Dirk Hohndel: remove other remnants of the disabled planner as well]

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 13:17:32 -07:00
Dirk Hohndel
a61c04bb58 Merge branch 'atdotde'
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>

Conflicts:
	qt-ui/diveplanner.cpp
2014-05-26 09:59:08 -07:00
Robert C. Helling
1093d6235b Reenabled copying the diveplan to dive notes.
Gas consumption calculation fixed. Pressure difference still needs cylinder size to be set.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 09:58:23 -07:00
Dirk Hohndel
cfe865dd0c Merge branch 'atdotde'
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>

Conflicts:
	qt-ui/diveplanner.cpp
	qt-ui/models.cpp
2014-05-26 08:23:22 -07:00
Robert C. Helling
04b6b6aaf9 Use get_o2() and get_he() instead of accessing permilles directly
This gets rid of problems with air.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 08:12:32 -07:00
Anton Lundin
d14a531510 Rework slot to quiet down Qt5 warning
Qt5 got confused about this slot. This does the same as previously but
gets Qt5 happy.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26 06:25:00 -07:00
Anton Lundin
f0f60e1f84 Use gas_mod and fix fpe
When removing o2 from a gas, eg setting it to "", air, this code would
raise a nice fpe. Fix that by using gas_mod instead.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 15:42:51 -07:00
Dirk Hohndel
d1366257f0 Dive list: make saving / restoring column widths actually work
It's a testament to how much I mess around with things that I hadn't
noticed that saving the column width doesn't actually work. Or actually,
saving them worked, loading them back failed as it was done too early and
the setColumnWidth() calls had no effect - and so the next time we quit
subsurface, the default width of 100 was written over all the saved
values.

This seems like an incredible hack but it has the advantage of actually
working. I look forward to someone with better insides into the inner
workings of Qt to properly fix this.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 07:30:50 -07:00
Dirk Hohndel
c29109744e Dive list: don't reset column width when reloading
We set the column width in the dive list widget when we create that
widget, based on what is in the settings. And we save the current column
width back to the settings when we destroy that widget (so if Subsurface
is shut down correctly and Qt actually gets to run the destructor but not
when someone kills the program).

That means that if we recreate the dive list at any point while Subsurface
is running (and we do that a lot when you manipulate your dive list in any
way shape or form), any changes to the column widths are lost.
DiveListView::reload() explicitly calls setupUi() which reads the column
widths back from the settings - but changes made to the columns aren't
saved to the settings until we destroy the widget...

I see no reason why reload() should call setupUi(), so I'm removing that
call. Let's hope this doesn't break anything else.

Fixes #518

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 07:03:38 -07:00
Anton Lundin
ff966f2c1a Move mod calculations to a separate helper
We use mod calculations on multiple places, so make a separate helper
from it with proper types.

The "clumsiness" of defining a local variable to pass into the function
and out from it comes from the discrepancies in how c and c++ handles
initializations of variables in a struct.

Thanks goes to Tiago and Linus for pointing me in the right direction.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 06:20:52 -07:00
Dirk Hohndel
a85023a661 Dive list: remember the current sort colum
Silly bug. We never actually remembered our current sort column when
changing the sort order.

See #518

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 06:19:05 -07:00
Miika Turkia
54592fdcfa Localize worldmap export
Call the translation functions for text strings when exporting the
worldmap to allow localized exports.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 05:39:39 -07:00
Miika Turkia
ae5c947460 Use user preferred units on worldmap export
We should use the temperature units preferred by the user when exporting
dive info on Worldmap.

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 05:39:16 -07:00
Miika Turkia
8f17caeedc Location must be quoted on worldmap export
User supplied text fields must be quoted on worldmap export. Without
quoting the HTML is broken e.g. with location "Angel's Window"

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-25 05:39:04 -07:00
Tomaz Canabrava
b88e6dc5fa Remove leftovers from the planner.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-24 21:11:55 -07:00
Tomaz Canabrava
2359bd3c2c Reenables the air edition and deletion of handlers on the planner/add
Only a tiny bit of poke around the contextMenuEvent - the events
of the planner are dealt by the QGraphicsItem, and this makes the
logic pretty easy to follow. :)

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-24 21:11:30 -07:00