Fill up plot_data with temperature all the way

This will fill out the gaps of temperature data between all the points
so we always have a temperature to show in the info box.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Introduce an on/off switch for calculating ndl/tts

Let the user choose if the calculation of ndl and tts is worth the time
it takes.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Remove the special handling of ndl < 3m

This changes the special handling of ndl calculations when we deem that we
are too shallow for doing them. Previously we just set ndl to -1 and
printed a "-", now we return and print max_ndl, just as how most
divecomputers work.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Reorder info in information window

When moving along the plot, it's hard to look at a certain value when its
place in the info box moves due to values being added or removed above it.
This commit moves the "stable" values up top in the info box and the
values that come and go further down, so that the box expands downwards.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Break up calculate_deco_information

Break the huge calculate_deco_information into three different functions.
One for the current deco calculations, one for the ndl/tts/deco stop and
one for the gas calculations.
This makes it easier to disable/enable different functionality.

This also gets rid if the ccrdive state variable, and keeps that state
in the plot_data struct. Now we calculate the deco before we calculate
the gas properties, so if we have a po2, we're in ccr-mode, and if we
don't, we're in oc mode.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Partially revert d72c69db7a49f and fix its errors

In the offending commit a QWidget was changed to QTableView, but
only in the header - and thus making avaliable all method calls,
but the initialization of the widgets was still a QWidget, and
nothing of QTableView was used besides an incorrect call to
setColumnHidden.

This commit fixes that by using the view() method provided by the
TableView implementation which returns the true QTableView that should be
used for specific nitpicking, like hidding columns. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix loading the information of splitter sizes on empty config.

We previously did did bad things when running with an empty configuration.
This attemps to clean it. We will now correctly handle the splitters in
almost all cases ( if I didn't break anything on the way. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
MaxPPO2 should be a double, not an int

This just fixes the spinner used in the preferences dialog.

Reported-by: Benjamin <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
When selection gets confused, don't try to select non-existing dive

While the argument could be made that this is just a symptom of Subsurface
getting very confused about the selection (which it still gets at times -
most likely we are calling select_dive() instead of selectDive()  (or the
corresponding deselect functions) in places where we shouldn't), but
either way, we should not crash.

Fixes #220

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Instead of a "Cylinder for planning" use a default cylinder

Right now hardcoded to AL80. This way in the future we'll have a volume of
gas that's available. And this makes much more sense then a random string
in the description field.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Connect changes in the tanks with the dive that is being added

- you can no longer delete a tank when its gas is in use
- therefore you can no longer delete the last tank
- when you change the gas mix of a tank, the corresponding segments in the
  dive change as well
- when changing gas for a segment the correct available gases are offered

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Don't change gas used in segments if there is still a cylinder with that gas

Otherwise adding a second cylinder (to the default one cylinder of air)
and subsequently changing the gas of that cylinder will illogically change
the gas used in all the segments.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Correct behavior when adding a dive to an empty list and canceling the add

We need to leave the widget disabled and the date / time and coordinates
cleared.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Don't overwrite the new cylinders when adding a dive

We carefully assembled the correct data in the cylinders - don't replace
that data when manually editing a dive.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix addGas to look at the correct cylinder

That was a stupid bug. You have to actually update the variable to look at
the right cylinder. Duh.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Correctly convert an existing dive into a plan

I missed this one spot when converting back to the different semantics for
divedatapoints.

With this change add dive appears to work correctly (fingers crossed).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Break calculated deco info to separate vars

Store the calculated values in separate variables in the plot_data
struct, and display them separate. This makes sure we don't confuse the
calculated values with the ones from a dc, and now we can compare the
two.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Reorder info in information window

When moving along the plot, its hard to look at a certain value when its
place in the info box moves due to that values are added above it. This
moves the stable values up top in the info box and the values that comes
and goes further down, so that the box expands downwards.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
TODO notes