summaryrefslogtreecommitdiffstats
path: root/qt-ui/profile/diveprofileitem.cpp
AgeCommit message (Collapse)Author
2015-02-10Fix broken connectionGravatar Tomaz Canabrava
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-10Finish the cleanup of mainwindow.uiGravatar Tomaz Canabrava
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-10Remove the ProfileWidget from mainwindow.uiGravatar Tomaz Canabrava
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-10Remove information panel from mainwindow.uiGravatar Tomaz Canabrava
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-05CCR gas composition and gas pressure labels on dive profile: revisitedGravatar willem ferguson
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-01-31DiveMeanDepthItem: fix bad translated depth unitsGravatar Lubomir I. Ivanov
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-29Prevent potential access to uninitialized variableGravatar Dirk Hohndel
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-28Small changes to the mean depth textGravatar Dirk Hohndel
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-28Implement the mean depth textGravatar Tomaz Canabrava
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-28Remove dead codeGravatar Tomaz Canabrava
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-24Avoid overprinting of cylinder presssure labels for CCR divesGravatar willem ferguson
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-17Clean up the header filesGravatar Dirk Hohndel
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-17Cache the complex items to give us a boost of speedGravatar Tomaz Canabrava
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-14Remove instantMeanDepthLineGravatar Cristine Guadelupe
Take instantMeanDepthLine out of the code. We have the moving average line plus the exact data in the information overlay. Signed-off-by: Cristine Guadelupe <cristineguadelupe@me.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-10Refactor dctype -> divemodeGravatar Robert C. Helling
... and repair a failed rebase (sorry). Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-04Close two compiler warnings about reorderingGravatar Anton Lundin
Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-01Make the moving mean depth line a less obnoxious colorGravatar Dirk Hohndel
The red made it stand out way too much. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-01Whitespace cleanupGravatar Dirk Hohndel
Quite a bit of wild white space going on... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-01Plot mean depth dataGravatar Krzysztof Arentowicz
As we already have running depth sum values for each sample why don't just plot running average depth graph. Signed-off-by: Krzysztof Arentowicz <k.arentowicz@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-01-01Avoid divide by 0 errorGravatar Krzysztof Arentowicz
Avoid crash when moving mouse to left side of the plot when showing mean depth Signed-off-by: Krzysztof Arentowicz <k.arentowicz@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-30Make the moving mean depth line workGravatar Tomaz Canabrava
It's a bit jumpy, but works. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-30Set data model for the MeanDepth lineGravatar Tomaz Canabrava
This way we can poke around data for the mean depth line. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-12-30Add skeleton for the instant mean depth lineGravatar Tomaz Canabrava
This class will hold the visible line of the mean depth for the time 'now' Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-24Reset plot info pointer when painting several polyonsGravatar Robert C. Helling
For each polygon that we paint we have to step through the plot_info from the start again. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-22Check error code of get_cylider_idx_by_use()Gravatar Robert C. Helling
If not cylinder with type DILUENT or OXYGEN is defined, this function returns -1 which should not be used as an index to an array. This patch adds code to check for this return value and exit gracefully. On line I marked with a comment. Someone more knowledgeable of that part of code than me should double check that return is here what we want. [Dirk Hohndel: fixed small oversight...] Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-17For CCR dives, show plot for diluent and O2 cylinder pressuresGravatar Robert C. Helling
Also fixes a bug in the diluent pressure interpolation Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-11-01Fix partial pressure graph thresholdsGravatar Dirk Hohndel
Since we only store things in the preferences if they are different from the default, the existing code that simply compared with the settings value didn't work when people used the defaults. We now compare to the actual preference at runtime which should address that. Fixes #731 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-20Recalculate the decompression if the date / time of a dive changesGravatar Dirk Hohndel
The pre-existing tissue load going into a dive can change if the start time of a dive changes. Therefore we need to recalculate the ceiling when editing start time (or date) of a dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-10-12Remove unused variablesGravatar Anton Lundin
Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-09-19Tissue saturation plot a la Sherwater PretelGravatar Robert C. Helling
This adds a toolbox icon to turn on a tissue plot inspired by the bar graph of the Sherwater Petrel, It shows the inert gas partial pressures for individual compartments. If they are below the ambient pressure (grey line) they are shown in units of the ambient pressure, if they are above, the excess is shown as a percentage of the allowed overpressure for plain Buehlmann. So it has the same units as a gradient factor. Thus also the a gradient factor line (for the current depth) is shown. The different tissues get different colors, greener for the faster ones and bluer for the slower ones. Positioning and on/off icon action still need some tender loving care. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-09-18Helper function for partial pressure calculationGravatar Robert C. Helling
This patch introduces a new structure holding partial pressures (doubles in bar) for all three gases and a helper function to compute them from gasmix (which holds fractions) and ambient pressure. Currentlty this works for OC and CCR, to be extended later to PSCR. Currently the dive_comp_type argument is unused. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-23Code cleanup: HeartRate item was doing insane thingsGravatar Tomaz Canabrava
This simplifies so much of the code that we were using to control the visibility of the HeartRate. now things are much saner. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-18Save / Restore the QPainter before operations.Gravatar Tomaz Canabrava
I don't know if this fixes anything, but it is asked of us to do that by the Qt docs. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-11Code cleanup: removed bogus animation functionsGravatar Tomaz Canabrava
All animations are now on the Animations namespace, which resulted in a bit of code cleanup, which is nice. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-11Planner: add event that explains when planner turns redGravatar Dirk Hohndel
I don't know why the plot_info was walked backwards - for our purposes walking forward needs to make a lot more sense. And the event nicely goes away when the diveplan gets modified and the displayed_dive gets reset. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-11Planner: fix calculation when it is safe to surfaceGravatar Dirk Hohndel
We were comparing with a negative depth which apparently confused the algorithm. Fixes #611 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03UI restructure: don't use random dives from the divelist for dataGravatar Dirk Hohndel
Everything should come from the displayed_dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-25Deco artefacts with low GFlowGravatar Robert C. Helling
In a dive, when you choose a very low GFlow (like 5 or 9) and a trimix with quite some He (12/48 in the example) and descend fast, the ceiling seems to do strange things in the first minutes of the dive (very very deep for example or jumping around). To understand what is going on we have to recall what gradient factors do in detail: Plain Buehlmann gives you for each tissue a maximal inert gas pressure that is a straight line when plotted against the ambient pressure. So for each depth (=ambient pressure) there is a maximally allowed over-pressure. The idea of gradient factors is that one does not use all the possible over-pressure that Buehlmann gives us but only a depth dependent fraction. GFhigh is the fraction of the possible over-pressure at the surface while GFlow is the fraction at the first deco stop. In between, the fraction is linearly interpolated. As the Buehlmann over-pressure is increasing with depth and typically also the allowed overpressure after applications of gradient factors increases with depth or said differently: the tissue saturation has to be lower if the diver wants to ascent. The main problem is: What is the first stop (where to apply GFlow)? In a planned dive, we could take the first deco stop, but in a real dive from a dive computer download it is impossible to say what constitutes a stop and what is only a slow ascent? What I have used so far is not exactly the first stop but rather the first theoretical stop: During all of the dive, I have calculated the ceiling under the assumption that GFlow applies everywhere (and not just at a single depth). The deepest of these ceilings I have used as the “first stop depth”, the depth at which GFlow applies. Even more, I only wanted to use the information that a diver has during the dive, so I actually only considered the ceilings in the past (and not in the future of a given sample). But this brings with it the problem that early in the dive, in particular during the descent the lowest ceiling so far is very shallow (as not much gas has built up in the body so far). This problem now interferes with a second one: If at the start of the dive when the all compartments have 790mbar N2 the diver starts breathing a He-heavy mix (like 12/48) and descents fast the He builds up in the tissues before the N2 can diffuse out. So right at the start, we already encounter high tissue loadings. If now we have a large difference between GFhigh and GFlow but they apply at very similar depth (the surface and a very shallow depth of the deepest ceiling (which for a non-decompression dive would be theoretically at negative depth) so far) it can happen that the linear interpolation as opposite slope then in the typical case above: The allowed over-pressure is degreasing with depth, shallower depth do not require lower gas loading in the tissue (i.e. can be reached after further off-gasing) but but tolerate higher loadings. In that situation the ceiling disappears (or is rather a floor). So far, I got rid of that problem, by stating that the minimum depth for GFlow was 20m (after all, GFlow is about deep stops, so it should better not be too shallow). Now the dive reported in ticket #549 takes values to an extreme in such away that 20m (which is determined by buehlmann_config.gf_low_position_min in deco.c) was not enough to prevent this inversion problem (or in a milder form that the interpolation of gradient factors is in fact an extrapolation with quite extreme values). This patch that gets rid of the problem for the dive described above but still it is possible to find (more extreme) parameter choices that lead to non-realistic ceilings. Let me close by pointing out that all this is only about the descent, as it is about too shallow depth for GFlow. So no real deco (i.e. later part of the dive) is inflicted. This is only about a theoretical ceiling displayed possibly in the first minutes of a dive. So this is more an aesthetically than a practical problem. Fixes #549 Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-10Planner: show the GF used for planning on top of the profileGravatar Dirk Hohndel
Showing the GF in the preferences is just confusing. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-01Rename two C++ methods to the more typical CamelCaseGravatar Dirk Hohndel
Silly little change. Whatever. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-01Convert plot_gas_value to gasmixGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26Paint the dive red if the user is breaking ceiling on the planner.Gravatar Tomaz Canabrava
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-22Gratuitous whitespace changesGravatar Dirk Hohndel
I keep trying to get to consistenct. Completely hopeless. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-22PreferencesChanged -> settingsChanged.Gravatar Tomaz Canabrava
We used both preferencesChanged and settingsChanged in different methods and classes to mean the same thing, this adds consistency. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-20Code Cleanup: use qMin instad of if( min ) setMin else setMax.Gravatar Tomaz Canabrava
silly code cleanup. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-19Change get_dive_by_diveid to get_dive_by_uniq_idGravatar Dirk Hohndel
The original name was a really bad choice as we have a 'diveid' as part of struct divecomputer - and that is not the diveid that is being used here. Instead we use the 'id' member of struct dive which holds the "unique ID" for this dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-13Rename getDiveById to get_dive_by_id to keep current c code organized.Gravatar Tomaz Canabrava
This commit renames getDiveById to get_dive_by_id, and it also removes the Q_ASSERTS and if(!dive) return that the callers of this function were calling. If it has a Q_ASSERT this means that the dive must exist, so checking for nullness was bogus too. I've changed the assert (done in a silly C-Way. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-16Renaming the prefs struct members to be consistent with the QSettings.Gravatar Gehad Elrobey
-Renaming prefs members for consistency. -Changing references of QSettings to the prefs structure instead. -Removing unused functions in pref.h were left over from an old version. -Changing the data-type of bool members to short for consistency with other members. Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-14Simplify codeGravatar Dirk Hohndel
This seems like a rather obvious optimization... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-04-14Make red ceiling workGravatar Dirk Hohndel
The existing code for toggling the DC reported ceiling in red or "surface color" clearly had never been tested. This seems to create a reasonably attractive implementation - not exactly what we had in the past, but good enough. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>