Commit graph

528 commits

Author SHA1 Message Date
Dirk Hohndel
bbfa2b655b Profile context menu: trigger editing of manually added dive
Right now the way to edit the profile of a manually added dive is really
counterintuitive: you have to first make some random change to the dive
information, then the profile switches in to editing mode.

This commit adds a simple context menu entry on the profile that is only
shown when the a manually added dive is displayed.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-23 13:56:24 -07:00
Robert C. Helling
8571dcf967 Introduce recreational planner mode
This adopts the planner to the needs of the recreational diver. Rather than immediately
starting to ascent doing deco stops this mode, this mode stays at the last manually
entered depth for the maximal time before mandantory stops appear (NDL). It does not
change gas but keeps using the last used cylinder.

TODO: * Grey out unused UI elements of the planner in this mode
      * Start ascent before gas runs out (or into reserve)
      * Do a 3min @ 5m safety stop.

Fixes #840

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-04-02 09:45:50 -07:00
Marcos CARDINOT
70b4c9f2d3 RulerItem2::settingsChanged() - NULL pointer dereference
The current code is dereferencing the null pointer 'profWidget'.
It can cause a segmentation fault.

Signed-off-by: Marcos Cardinot <mcardinot@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-19 15:34:10 -07:00
Lubomir I. Ivanov
7e7cddde8a Profile: fix a couple of warnings
profilewidget2.cpp:1398:25: warning: the omitted middle operand in
?: will always be 'true', suggest explicit middle operand [-Wparentheses]

profilewidget2.cpp:1403:39: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-14 18:17:43 -07:00
Lubomir I. Ivanov
57374fb9f0 Profile: call clearHandlers() in setAddState()
Points (handles) from the last dive ADD operation remain on
the profile unless we clear them.

fixes #846

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-14 18:17:30 -07:00
Lubomir I. Ivanov
da2d5b5ee1 Profile: fix potential mem leak in pointsInserted()
The point graphics are allocated but doens't seem to be
deleted anywhere. We attempt to fix that in clearHandlers().

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-14 18:17:26 -07:00
Dirk Hohndel
e9e9996766 Better testing if the first gas is explicit
Given that we might be adding a gas change event at t = 0 we need to check
for both that and t = time_or_first_sample.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-11 12:31:00 -07:00
Dirk Hohndel
0739da38c5 Don't allow two gas changes at the same time
t = 0 isn't really special here. We shouldn't allow two gas changes at the
same time, period.

We also can do away with the special handling to mark the dive list
changed and replot things if a gas change gets removed. That's done at the
end of this function either way.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-11 11:44:25 -07:00
Dirk Hohndel
e121b4b548 Make sure no gas changes with negative time can be added
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-11 11:43:17 -07:00
Dirk Hohndel
74638c5f65 Simplify the code that replaces a gas change event at t=0
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-11 11:42:57 -07:00
Yousef Hamza
22eb8e0617 Removing gas change events @0:00 when new one is added
Remove the existing gas change events @0:00 when new
one is added @0:00.

Signed-off-by: Yousef Hamza <jo.adam.93@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-11 11:06:13 -07:00
Lubomir I. Ivanov
1e81dff946 Planner: disable mouse interaction when zoomed in
When zoomed in, things like moving planner points is not possible,
but if the user attempts that, replan() -> plotDive() is called
and the zoomLevel should be reset to the default value (we don't
really want that), but instead it's lost for some reason
(as the user reports: "Somes times, it changes to 100% which is ok").

If moving points becomes possible eventually while zoomed in,
we need to figure a way to replot without resetting the zoom level
in plotDive().

Fixes #851

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-03-11 07:38:46 -07:00
Gehad elrobey
f61b59d961 Change the references to ShowError to the new notification object.
Showing an Error message is better called from the Notification Object,
So for consistency old references to showError is replaced by calling
the notification object.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-27 06:31:10 +01:00
Tomaz Canabrava
9b62d36757 Fix broken connection
The old way of creating the mainwindow made things a bit
dependent of the order of initialization, and we don't
assume that anymore.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-10 10:45:46 -08:00
Tomaz Canabrava
194dd8bd97 Finish the cleanup of mainwindow.ui
This is the last patch in the series of clearing up the
mainwindo.ui. Now to bugfixing.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-10 10:45:46 -08:00
Tomaz Canabrava
6b038c2a9a Remove the ProfileWidget from mainwindow.ui
It is now in mainwindo.cpp

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-10 10:45:45 -08:00
Tomaz Canabrava
238c0573da Remove information panel from mainwindow.ui
Now it's created in the mainwindow.cpp as part of the new
way to configure the interface.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-10 10:45:45 -08:00
Tomaz Canabrava
cf4d55c470 Remove the DiveList from the mainwindow.ui
It's now set up from the mainwindow.cpp file.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-10 10:45:45 -08:00
Dirk Hohndel
bd994c1722 Change the tooltip for bailout
While this text makes sense if this is a CCR dive and the diver does bail
out, the more neutral text "Manual switch to OC" works in all use cases
for this event, e.g. at the beginning of a dive when we manually set this
dive to be OC.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-07 08:52:05 -08:00
Dirk Hohndel
d276f9cb08 Don't show a setpoint switch event at t=0
When using that to indicate the dive type at the start of the dive, it's
visually strange to have an event marker.

See #826

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-07 08:51:54 -08:00
willem ferguson
802bf1d7c8 CCR gas composition and gas pressure labels on dive profile: revisited
This patch cleans up code for achieving the above with respect to
CCR dives. The code is simplified and shortened. The display of
gas lables on the profile is made consistent with the cylinder
pressure closest to the graph and the gas composition above/below
the cylinder pressure. The patch significantly improves the
maintainability of this code.

Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-05 07:31:52 -08:00
Dirk Hohndel
d34965135a Disable dive component copy/paste shortcuts when no profile show
Instead of inventing another way to do this (and inevitably forgetting a
path where this should be re-enabled) I renamed the DcShortcup related
function and made them enable/disable the copy and paste shortcuts as
well.

Of course there now is one exception (isn't there always?): in "ADD" state
we don't want to be able to switch DCs, but we do want to be able to
paste.

Fixes #825

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-03 07:36:09 -08:00
Dirk Hohndel
baa4b4d7c5 Don't show the plot_info table in every debug build
Instead add a new define SHOW_PLOT_INFO_TABLE that triggers if this
debugging aid is shown.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-02-02 13:14:04 -08:00
Robert C. Helling
1e45858ee6 Update ceiling when changing dive mode
Without this patch, the user effectively cannot change the dive mode as
any change is overwritten by replot copying current_dive over
displayed_dive. The way out is not to call replot but only update the deco
ceiling directly.

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-31 14:09:50 -08:00
Dirk Hohndel
fd33d6aa3f Hide tooltip when posting a profile to Facebook
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-31 10:32:02 -08:00
Lubomir I. Ivanov
8eb25f6700 DiveMeanDepthItem: fix bad translated depth units
probably just a typo; taking the value of a (char *) will return
the first char (or byte).

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-31 10:13:36 -08:00
Dirk Hohndel
4e40872fc0 Prevent potential access to uninitialized variable
If we have a dive with no data (e.g. from a failed import), we might never
assign a value otherwise.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-29 13:37:32 -08:00
Dirk Hohndel
eaec0bc842 Small changes to the mean depth text
Add a tiny bit of white space to the left and display the unit as well.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-28 13:35:49 -08:00
Tomaz Canabrava
7f1373ea6d Implement the mean depth text
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-28 13:35:43 -08:00
Tomaz Canabrava
343b82708e Remove dead code
We changed this MeanDepthLine to the MeanDepthCurve (or something),
no need to keep old code around.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-28 12:29:47 -08:00
Tomaz Canabrava
ee4f9494f2 Hide ruler when in ADD or PLAN mode.
This ruler shouldn't appear in ADD or PLAN mode, it's a bug
and may crash things.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-28 12:29:33 -08:00
Lubomir I. Ivanov
66fdb2b89d diveplotdatamodel.cpp: use space before sensor index
the manual uses "Sensor 1:", not sure if it breaks anything.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-27 07:21:49 -08:00
Tim Wootton
c38eaf68e9 Change mean depth/s to mean depth @ s
Mean depth/s sounds too much like a rate of change but this
referers to instantaneus mean depth at a time.

Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-26 07:28:03 -08:00
Tim Wootton
04749d6863 Heartrate sounds better than heart beat
Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-26 07:25:46 -08:00
Dirk Hohndel
d9fd4cb69b Fix crash with empty dive list
Don't access current_dc unless there is a valid current_dive.

Fixes #817

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 14:42:25 -08:00
willem ferguson
724a07b7e0 Avoid overprinting of cylinder presssure labels for CCR dives
This patch takes the cylinder pressures of CCR dives and prints them
in a non-overlapping way.

Remaining issue: When the dive profile is made taller by dragging the
window or the appropriate slider far down the screen, the labels move
further apart; similarly, when the profle is made flat/shallow by dragging
the window edge or appropriate slider up, the labels get close to each
other and start to overlap.

There are quite a few lines of additional code going into the patch. This
is primarily because separate provisions for when po2 > p(diluent) or vice
versa. In addition, I could not determine the size of the text characters
which would allow much more precise placement of text. This is because the
.scale member of the text is private and not available in the methods
involved in printing the labels. However, the height of the vertical scale
of the cylinder pressure graph can be determined [e.g. vAxis->maximum()].
This helped a lot to get the positioning of the text more or less correct.

While the results of the patch is not perfect, It contributes
significantly to make the profiles of Poseidon dives more readable.

Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 09:48:12 +12:00
Dirk Hohndel
c3614424f9 Correcly look at all relevant dive computer structures
When calculating maxima for a dive, we need to take data from all existing
dive computer structures plus potentially also a fake dive computer
structure that is just passed in in order to create a meaningful profile.

Commit 86c961614b ("Actually walk all dive computers, don't just claim
to do so") missed that second case and no longer took the fake_dc into
account, breaking the display of dives that don't have samples.

Reported-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 07:07:02 +12:00
Dirk Hohndel
6aee901f6f Don't show previous dive computer text
There were situations when the last text was still shown. E.g. when the
current file was closed and then a new dive was imported from CSV.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-24 06:54:16 +12:00
willem ferguson
4487e13e15 Code cleanup: CCR setpoint and o2 sensor visualisation
This patch does some cleaning up of the code that provides visualisation
of CCR o2 sensor and o2 setpoint data. It reduces the number of
conditional evalauations that are required and it improves the readability
of these parts of the code.

Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-23 21:41:28 +12:00
willem ferguson
a700be3207 CCR option: display o2 sensor data
This patch creates the possibility of viewing the individual sensor
values when the po2 button on the profile toolbar is activated. This
follows exactly the procedure for optionally displaying the setpoint
values while viewing po2. A checkbox in the preferences panel determines
whether sensor information is shown. By default it is set to OFF. When
checked, and the po2 button is activated, sensor1 values are shown in
grey, sensor2 in blue and sensor3 in brown.

Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-21 17:00:18 +12:00
Dirk Hohndel
86c961614b Actually walk all dive computers, don't just claim to do so
If the first dive computer had pressure samples, but the second one (and
no higher one) did, then we would draw a flat horizontal line for the tank
pressure graph (but lable it with the correct pressures). This routine
that is hunting for the actual maxima and minima does have to really go
through all dive computers, not just "this one and up".

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-19 21:52:08 +12:00
Tomaz Canabrava
ecf4d18b41 Fix extreme sluggish profile over time
Whoa, this deserves a good explanation.

Everytime that the mouse moved in add / plan mode, or anytime a new dive
was displayed on the profile, this method would be called and connect the
dataModel to the modelChanged method. This added the slot in a call-vector
that the fired signal would call, adding one call to the Slot per add /
plan mouse move (about 20x/s) or each time a new dive was displayed.
Quickly filling the vector with more than 200 - 300 calls to this same
Slot.

The fix is to only connect one time. this made the add / plan mode *so*
much smoother... :)

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-19 16:25:13 +12:00
Thiago Macieira
f5726ffa9d Fix build: add missing #includes
qt-ui/profile/profilewidget2.cpp:1351:10: error: invalid use of incomplete type ‘class QDebug’
qt-ui/printlayout.cpp:141:27: error: variable ‘QPointer<ProfileWidget2> profile’ has initializer but incomplete type

In commit f9ceff009b ("Clean up the header files") things got broken for
an as of now unreliesed future version of Qt.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-18 21:26:53 +12:00
Joakim Bygdell
76e3a10f08 Move the heart rate graph
Move the heart rate graph down to the same space as the tissue saturation
graph so that it does not overlap with temperature or partial pressures.

Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-18 21:26:06 +12:00
Dirk Hohndel
f9ceff009b Clean up the header files
Lots and lots and lots of header files were being included without being
needed. This attempts to clean some of that crud up.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-18 21:25:59 +12:00
Tomaz Canabrava
e0280048bc Cache the complex items to give us a boost of speed
This cache give us a huge gain in performance, going from
17% moving the mouse frenetically to 9%, wich is quite acceptable.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-17 10:41:18 +13:00
Tomaz Canabrava
c9499baf22 Fix memleak of QGraphicsRectItem
We used to create a new QGraphicsRectItem everytime a Pixmap
changed. Since I'm pretty sure I deleted every bit of the
PictureItem before setting a new one, no leak was due, but this
version is safer.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-17 10:41:07 +13:00
Tomaz Canabrava
947010991d Only update text if something changed
We were calling this even if we didn't really change anything
and paths are expensive to paint.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-17 08:54:11 +13:00
Tomaz Canabrava
d2c5770ae1 Fix the colors - brush wasn't being set anymore.
Also a bit of code cleanup.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-17 08:54:00 +13:00
Tomaz Canabrava
a6e95511a6 Reduce the amount of new/delete when setting a new text on DiveTextItem
We were recreating the PathItems (one for the outline, other for the real
text) for every call to setText. This was a very un-smart move.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-17 08:53:26 +13:00