From 7b9400685d86eee904b07471353435f34fec3686 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Tue, 4 Feb 2014 19:21:57 -0200 Subject: Optimizations and fixes on the new profile. This patch optimizes a few items when hitting the 'save preferences' dialog, since when a preference is modified, all the items try to reload their visual based on wether a preference changed or not, the correct code for 'hey, my pref changed, let's update' needed to be done. now the axis will only set a new maximum if it's different from the old one ( and thus, going to a new dive with the same maxdepth or maxtime as the old one will not touch their axis, not triggering gratuitous animations. ) also, the 'incr by 3m' was not being called - it seems that our 'syncsettings' method is not storing things on the 'prefs' global var. I added just for the incr by 3m case, but it's something that we need to check later. Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-ui/profile/divecartesianaxis.cpp | 14 +++++++++++++- qt-ui/profile/divecartesianaxis.h | 2 ++ qt-ui/profile/diveprofileitem.cpp | 3 +-- qt-ui/profile/diveprofileitem.h | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) (limited to 'qt-ui/profile') diff --git a/qt-ui/profile/divecartesianaxis.cpp b/qt-ui/profile/divecartesianaxis.cpp index 7c91281b4..c6567d413 100644 --- a/qt-ui/profile/divecartesianaxis.cpp +++ b/qt-ui/profile/divecartesianaxis.cpp @@ -21,12 +21,16 @@ static QPen gridPen(){ } void DiveCartesianAxis::setMaximum(double maximum) { + if (max == maximum) + return; max = maximum; emit maxChanged(); } void DiveCartesianAxis::setMinimum(double minimum) { + if (min == minimum) + return; min = minimum; } @@ -255,7 +259,7 @@ QColor DepthAxis::colorForValue(double value) return QColor(Qt::red); } -DepthAxis::DepthAxis() +DepthAxis::DepthAxis() : showWithPPGraph(false) { connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); settingsChanged(); // force the correct size of the line. @@ -267,11 +271,16 @@ void DepthAxis::settingsChanged() s.beginGroup("TecDetails"); bool ppGraph = s.value("phegraph").toBool() || s.value("po2graph").toBool() || s.value("pn2graph").toBool(); + if ( ppGraph == showWithPPGraph){ + return; + } + if (ppGraph) { animateChangeLine(QLineF(0,2,0,60)); } else { animateChangeLine(QLineF(0,2,0,98)); } + showWithPPGraph = ppGraph; } QColor TimeAxis::colorForValue(double value) @@ -419,6 +428,9 @@ void PartialGasPressureAxis::preferencesChanged() max = model->po2Max(); qreal pp = floor(max * 10.0) / 10.0 + 0.2; + if (maximum() == pp) + return; + setMaximum(pp); setTickInterval( pp > 4 ? 0.5 : 0.25 ); updateTicks(); diff --git a/qt-ui/profile/divecartesianaxis.h b/qt-ui/profile/divecartesianaxis.h index 3f18fe8ff..f321983ab 100644 --- a/qt-ui/profile/divecartesianaxis.h +++ b/qt-ui/profile/divecartesianaxis.h @@ -63,6 +63,8 @@ protected: QColor colorForValue(double value); private slots: void settingsChanged(); +private: + bool showWithPPGraph; }; class TimeAxis : public DiveCartesianAxis { diff --git a/qt-ui/profile/diveprofileitem.cpp b/qt-ui/profile/diveprofileitem.cpp index 05791eed5..11d80e96b 100644 --- a/qt-ui/profile/diveprofileitem.cpp +++ b/qt-ui/profile/diveprofileitem.cpp @@ -471,9 +471,8 @@ void DiveCalculatedCeiling::preferencesChanged() if ( dataModel && is3mIncrement != shouldShow3mIncrement){ // recalculate that part. dataModel->calculateDecompression(); - is3mIncrement = shouldShow3mIncrement; } - + is3mIncrement = shouldShow3mIncrement; setVisible(s.value("calcceiling").toBool()); } diff --git a/qt-ui/profile/diveprofileitem.h b/qt-ui/profile/diveprofileitem.h index 4dd32b9fa..1f9fa26e3 100644 --- a/qt-ui/profile/diveprofileitem.h +++ b/qt-ui/profile/diveprofileitem.h @@ -123,7 +123,7 @@ class DiveCalculatedTissue : public DiveCalculatedCeiling { Q_OBJECT public: DiveCalculatedTissue(); - void preferencesChanged(); + virtual void preferencesChanged(); }; class MeanDepthLine : public DiveLineItem { -- cgit v1.2.3-70-g09d2