diff options
-rw-r--r-- | qt-ui/profile/diveprofileitem.cpp | 35 | ||||
-rw-r--r-- | qt-ui/profile/diveprofileitem.h | 6 |
2 files changed, 33 insertions, 8 deletions
diff --git a/qt-ui/profile/diveprofileitem.cpp b/qt-ui/profile/diveprofileitem.cpp index bf8af7956..158202638 100644 --- a/qt-ui/profile/diveprofileitem.cpp +++ b/qt-ui/profile/diveprofileitem.cpp @@ -18,7 +18,11 @@ AbstractProfilePolygonItem::AbstractProfilePolygonItem(): QObject(), QGraphicsPolygonItem(), hAxis(NULL), vAxis(NULL), dataModel(NULL), hDataColumn(-1), vDataColumn(-1) { - connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(modelDataChanged())); + connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(preferencesChanged())); +} + +void AbstractProfilePolygonItem::preferencesChanged() +{ } void AbstractProfilePolygonItem::setHorizontalAxis(DiveCartesianAxis* horizontal) @@ -36,6 +40,7 @@ void AbstractProfilePolygonItem::setHorizontalDataColumn(int column) void AbstractProfilePolygonItem::setModel(DivePlotDataModel* model) { dataModel = model; + connect(dataModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(modelDataChanged())); modelDataChanged(); } @@ -102,6 +107,9 @@ void DiveProfileItem::modelDataChanged(){ if(polygon().isEmpty()) return; + show_reported_ceiling = prefs.profile_dc_ceiling; + reported_ceiling_in_red = prefs.profile_red_ceiling; + /* Show any ceiling we may have encountered */ if (prefs.profile_dc_ceiling && !prefs.profile_red_ceiling) { QPolygonF p = polygon(); @@ -124,7 +132,7 @@ void DiveProfileItem::modelDataChanged(){ QLinearGradient pat(0, polygon().boundingRect().top(), 0, polygon().boundingRect().bottom()); pat.setColorAt(1, getColor(DEPTH_BOTTOM)); pat.setColorAt(0, getColor(DEPTH_TOP)); - setBrush(QBrush(pat)); + setBrush(QBrush(pat));AbstractProfilePolygonItem::preferencesChanged(); int last = -1; for (int i = 0, count = dataModel->rowCount(); i < count; i++) { @@ -148,6 +156,14 @@ void DiveProfileItem::modelDataChanged(){ } } +void DiveProfileItem::preferencesChanged() +{ + //TODO: Only modelDataChanged() here if we need to rebuild the graph ( for instance, + // if the prefs.profile_dc_ceiling are enabled, but prefs.profile_red_ceiling is disabled + // and only if it changed something. let's not waste cpu cycles repoloting something we don't need to. + modelDataChanged(); +} + void DiveProfileItem::plot_depth_sample(struct plot_data *entry,QFlags<Qt::AlignmentFlag> flags,const QColor& color) { int decimals; @@ -371,12 +387,6 @@ void DiveReportedCeiling::modelDataChanged() if (!hAxis || !vAxis || !dataModel || hDataColumn == -1 || vDataColumn == -1) return; - if (prefs.profile_dc_ceiling){ - setVisible(prefs.profile_red_ceiling); - }else{ - setVisible(false); - } - QPolygonF p; p.append(QPointF(hAxis->posAtValue(0), vAxis->posAtValue(0))); plot_data *entry = dataModel->data(); @@ -399,6 +409,15 @@ void DiveReportedCeiling::modelDataChanged() setBrush(pat); } +void DiveReportedCeiling::preferencesChanged() +{ + if (prefs.profile_dc_ceiling){ + setVisible(prefs.profile_red_ceiling); + }else{ + setVisible(false); + } +} + void DiveReportedCeiling::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { QGraphicsPolygonItem::paint(painter, option, widget); diff --git a/qt-ui/profile/diveprofileitem.h b/qt-ui/profile/diveprofileitem.h index 9b737db5e..57b1e70e8 100644 --- a/qt-ui/profile/diveprofileitem.h +++ b/qt-ui/profile/diveprofileitem.h @@ -38,6 +38,7 @@ public: void setVerticalDataColumn(int column); virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) = 0; public slots: + virtual void preferencesChanged(); virtual void modelDataChanged(); protected: DiveCartesianAxis *hAxis; @@ -54,7 +55,11 @@ class DiveProfileItem : public AbstractProfilePolygonItem{ public: virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); virtual void modelDataChanged(); + virtual void preferencesChanged(); void plot_depth_sample(struct plot_data *entry,QFlags<Qt::AlignmentFlag> flags,const QColor& color); +private: + unsigned int show_reported_ceiling; + unsigned int reported_ceiling_in_red; }; class DiveTemperatureItem : public AbstractProfilePolygonItem{ @@ -93,5 +98,6 @@ class DiveReportedCeiling : public AbstractProfilePolygonItem{ public: virtual void modelDataChanged(); virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); + virtual void preferencesChanged(); }; #endif
\ No newline at end of file |