aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/profile
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-12-30 21:57:12 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-12-30 16:14:53 -0800
commitb3e3947b79e91d76db1d9d14f6c3701dad53a224 (patch)
tree6c36d983b784dea15b2d1d27844911d92c101fec /qt-ui/profile
parentd6fddcaadc6e912a94561483ae8a1297e12a5c3e (diff)
downloadsubsurface-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.cpp15
-rw-r--r--qt-ui/profile/diveprofileitem.h2
-rw-r--r--qt-ui/profile/profilewidget2.cpp4
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);