summaryrefslogtreecommitdiffstats
path: root/qt-ui/profile/divecartesianaxis.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2014-01-27 15:14:42 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-01-27 09:15:28 -0800
commitc99089e1fa3b7eaccf3a49ea35bae0dacad04060 (patch)
tree49b6491b19ca1bd2feb9dbb245cc4269626add0a /qt-ui/profile/divecartesianaxis.cpp
parenta57f950b302cdd54e9a71736aaa9e761070ece41 (diff)
downloadsubsurface-c99089e1fa3b7eaccf3a49ea35bae0dacad04060.tar.gz
Add settings awareness for the PP graph
This commit is rather big, and I forgot to cut it in pieces. The first part creates a new 'calculate_gas_information' that will not fill the profile_info->maxpp member ( that should be removed from it as soon as the new dialog is finished ). The reason for that is that all of the profile data will be calculated and the graph needs to update dynamically, so whenever the settings changes, I ask for the model which is the biggest graph and replot only the ones we need. The second part adds a new animation function 'animdelete' to fade-out and delete the item when it's done. the old function 'hide' did just that but a hide shouldn't delete anything. The third part is preferenes awareness for the PP graphs. I created two new functions that receive the settings key for visibility and use the QSettings to show / hide them. This also works quite well for the axis; if no graph is visible, the axis will also hide itself. The fourth part is colors. The pp graphs now have the correct colors. And a bit of code cleanup too. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/profile/divecartesianaxis.cpp')
-rw-r--r--qt-ui/profile/divecartesianaxis.cpp51
1 files changed, 44 insertions, 7 deletions
diff --git a/qt-ui/profile/divecartesianaxis.cpp b/qt-ui/profile/divecartesianaxis.cpp
index feeaf12b8..b1586f992 100644
--- a/qt-ui/profile/divecartesianaxis.cpp
+++ b/qt-ui/profile/divecartesianaxis.cpp
@@ -3,6 +3,8 @@
#include "divetextitem.h"
#include "helpers.h"
#include "preferences.h"
+#include "diveplotdatamodel.h"
+#include "animationfunctions.h"
#include <QPen>
#include <QGraphicsScene>
#include <QDebug>
@@ -20,13 +22,12 @@ static QPen gridPen(){
void DiveCartesianAxis::setMaximum(double maximum)
{
max = maximum;
- emit sizeChanged();
+ emit maxChanged();
}
void DiveCartesianAxis::setMinimum(double minimum)
{
min = minimum;
- emit sizeChanged();
}
void DiveCartesianAxis::setTextColor(const QColor& color)
@@ -64,15 +65,16 @@ void DiveCartesianAxis::updateTicks()
double steps = (max - min) / interval;
double currValue = min;
- if(!showText && !labels.empty()){
+ if(!showText && !labels.isEmpty()){
qDeleteAll(labels);
labels.clear();
}
-
+ if (steps < 1)
+ return;
if (!labels.isEmpty() && labels.size() > steps) {
while (labels.size() > steps) {
DiveTextItem *removedText = labels.takeLast();
- removedText->animatedHide();
+ Animations::animDelete(removedText);
}
}
// Move the remaining Ticks / Text to it's corerct position
@@ -290,7 +292,7 @@ QString TemperatureAxis::textForValue(double value)
void DiveCartesianPlane::setLeftAxis(DiveCartesianAxis* axis)
{
leftAxis = axis;
- connect(leftAxis, SIGNAL(sizeChanged()), this, SLOT(setup()));
+ connect(leftAxis, SIGNAL(maxChanged()), this, SLOT(setup()));
if (bottomAxis)
setup();
}
@@ -298,7 +300,7 @@ void DiveCartesianPlane::setLeftAxis(DiveCartesianAxis* axis)
void DiveCartesianPlane::setBottomAxis(DiveCartesianAxis* axis)
{
bottomAxis = axis;
- connect(bottomAxis, SIGNAL(sizeChanged()), this, SLOT(setup()));
+ connect(bottomAxis, SIGNAL(maxChanged()), this, SLOT(setup()));
if (leftAxis)
setup();
}
@@ -371,3 +373,38 @@ void DiveCartesianPlane::setup()
scene()->addItem(line);
}
}
+
+PartialGasPressureAxis::PartialGasPressureAxis()
+{
+ connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(preferencesChanged()));
+}
+
+void PartialGasPressureAxis::setModel(DivePlotDataModel* m)
+{
+ model = m;
+ connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(preferencesChanged()));
+ preferencesChanged();
+}
+
+void PartialGasPressureAxis::preferencesChanged()
+{
+ QSettings s;
+ s.beginGroup("TecDetails");
+ bool showPhe = s.value("phegraph").toBool();
+ bool showPn2 = s.value("pn2graph").toBool();
+ bool showPo2 = s.value("po2graph").toBool();
+ setVisible(showPhe || showPn2 || showPo2);
+ if (!model->rowCount())
+ return;
+
+ double max = showPhe ? model->pheMax() : -1;
+ if (showPn2 && model->pn2Max() > max)
+ max = model->pn2Max();
+ if( showPo2 && model->po2Max() > max)
+ max = model->po2Max();
+
+ qreal pp = floor(max * 10.0) / 10.0 + 0.2;
+ setMaximum(pp);
+ setTickInterval( pp > 4 ? 0.5 : 0.25 );
+ updateTicks();
+}