diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2014-12-30 21:57:12 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-12-30 16:14:53 -0800 |
commit | b3e3947b79e91d76db1d9d14f6c3701dad53a224 (patch) | |
tree | 6c36d983b784dea15b2d1d27844911d92c101fec /qt-ui/profile | |
parent | d6fddcaadc6e912a94561483ae8a1297e12a5c3e (diff) | |
download | subsurface-b3e3947b79e91d76db1d9d14f6c3701dad53a224.tar.gz |
Make the moving mean depth line work
It's a bit jumpy, but works.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/profile')
-rw-r--r-- | qt-ui/profile/diveprofileitem.cpp | 15 | ||||
-rw-r--r-- | qt-ui/profile/diveprofileitem.h | 2 | ||||
-rw-r--r-- | qt-ui/profile/profilewidget2.cpp | 4 |
3 files changed, 18 insertions, 3 deletions
diff --git a/qt-ui/profile/diveprofileitem.cpp b/qt-ui/profile/diveprofileitem.cpp index 1d930ad6a..03a2451a2 100644 --- a/qt-ui/profile/diveprofileitem.cpp +++ b/qt-ui/profile/diveprofileitem.cpp @@ -812,7 +812,7 @@ void DiveReportedCeiling::paint(QPainter *painter, const QStyleOptionGraphicsIte QGraphicsPolygonItem::paint(painter, option, widget); } -MeanDepthLine::MeanDepthLine() : meanDepth(0), leftText(new DiveTextItem(this)), rightText(new DiveTextItem(this)) +MeanDepthLine::MeanDepthLine() : meanDepth(0), leftText(new DiveTextItem(this)), rightText(new DiveTextItem(this)), model(NULL) { leftText->setAlignment(Qt::AlignRight | Qt::AlignBottom); leftText->setBrush(getColor(MEAN_DEPTH)); @@ -930,12 +930,23 @@ void PartialPressureGasItem::setColors(const QColor &normal, const QColor &alert alertColor = alert; } -InstantMeanDepthLine::InstantMeanDepthLine() +InstantMeanDepthLine::InstantMeanDepthLine(): vAxis(NULL), hAxis(NULL) { } void InstantMeanDepthLine::mouseMoved(int time, int depth) { + if (model == NULL || scene() == NULL || vAxis == NULL || hAxis == NULL) + return; + int count = model->data().nr; + for(int i = 0; i < count; i++){ + struct plot_data pI = model->data().entry[i]; + if (pI.sec == time) { + setMeanDepth(pI.running_sum / time); + setLine(0, 0, hAxis->posAtValue(time), 0); + setPos(pos().x(), vAxis->posAtValue(pI.running_sum / time)); + } + } } diff --git a/qt-ui/profile/diveprofileitem.h b/qt-ui/profile/diveprofileitem.h index 68a6debea..49631035b 100644 --- a/qt-ui/profile/diveprofileitem.h +++ b/qt-ui/profile/diveprofileitem.h @@ -209,6 +209,8 @@ protected: class InstantMeanDepthLine : public MeanDepthLine { Q_OBJECT public: + DiveCartesianAxis *hAxis; + DiveCartesianAxis *vAxis; InstantMeanDepthLine(); public slots: void mouseMoved(int time, int depth); diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp index 979e9c21b..b24132555 100644 --- a/qt-ui/profile/profilewidget2.cpp +++ b/qt-ui/profile/profilewidget2.cpp @@ -117,7 +117,7 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent), addItemsToScene(); scene()->installEventFilter(this); connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); - + connect(this, SIGNAL(mouseMoved(int,int)), instantMeanDepth, SLOT(mouseMoved(int,int))); QAction *action = NULL; #define ADD_ACTION(SHORTCUT, Slot) \ action = new QAction(this); \ @@ -606,6 +606,8 @@ void ProfileWidget2::plotDive(struct dive *d, bool force) meanDepth->setLine(0, 0, timeAxis->posAtValue(currentdc->duration.seconds), 0); Animations::moveTo(meanDepth,3, profileYAxis->posAtValue(plotInfo.meandepth)); + instantMeanDepth->vAxis = profileYAxis; + instantMeanDepth->hAxis = timeAxis; instantMeanDepth->setVisible(prefs.show_average_depth); instantMeanDepth->setModel(dataModel); |