summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2014-02-05 14:53:57 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-02-06 06:29:19 -0800
commit40cb57b2020321a0e3c898dac2c54daab3f22026 (patch)
tree940a07342e711edba2603d929ee6f9a1d61263f2 /qt-ui
parent19585d9a135257a74f92471ee82bb56499aa0680 (diff)
downloadsubsurface-40cb57b2020321a0e3c898dac2c54daab3f22026.tar.gz
Adapt the ToolTip to work on the new profile
With this patch the tooltip is ready to work on the new profile, we just need to actually use it. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/profile/divetooltipitem.cpp29
-rw-r--r--qt-ui/profile/divetooltipitem.h9
-rw-r--r--qt-ui/profile/profilewidget2.cpp3
3 files changed, 39 insertions, 2 deletions
diff --git a/qt-ui/profile/divetooltipitem.cpp b/qt-ui/profile/divetooltipitem.cpp
index dbc6f1df0..ffe22a820 100644
--- a/qt-ui/profile/divetooltipitem.cpp
+++ b/qt-ui/profile/divetooltipitem.cpp
@@ -1,4 +1,6 @@
#include "divetooltipitem.h"
+#include "divecartesianaxis.h"
+#include "profile.h"
#include <QPropertyAnimation>
#include <QGraphicsSceneMouseEvent>
#include <QPen>
@@ -176,7 +178,7 @@ void ToolTipItem::updateTitlePosition()
}
}
-bool ToolTipItem::isExpanded() {
+bool ToolTipItem::isExpanded() const {
return status == EXPANDED;
}
@@ -207,3 +209,28 @@ void ToolTipItem::readPos()
}
setPos(value);
}
+
+void ToolTipItem::setPlotInfo(const plot_info& plot)
+{
+ pInfo = plot;
+}
+
+void ToolTipItem::setTimeAxis(DiveCartesianAxis* axis)
+{
+ timeAxis = axis;
+}
+
+void ToolTipItem::refresh(const QPointF& pos)
+{
+ clear();
+ int time = timeAxis->posAtValue( pos.x() );
+ char buffer[500];
+ get_plot_details_new(&pInfo, time, buffer, 500);
+ addToolTip(QString(buffer));
+
+ QList<QGraphicsItem*> items = scene()->items(pos, Qt::IntersectsItemShape, Qt::DescendingOrder, transform());
+ Q_FOREACH(QGraphicsItem *item, items) {
+ if (!item->toolTip().isEmpty())
+ addToolTip(item->toolTip());
+ }
+}
diff --git a/qt-ui/profile/divetooltipitem.h b/qt-ui/profile/divetooltipitem.h
index 9f7b83656..8e9573e54 100644
--- a/qt-ui/profile/divetooltipitem.h
+++ b/qt-ui/profile/divetooltipitem.h
@@ -6,7 +6,9 @@
#include <QPair>
#include <QRectF>
#include <QIcon>
+#include "display.h"
+class DiveCartesianAxis;
class QGraphicsLineItem;
class QGraphicsSimpleTextItem;
class QGraphicsPixmapItem;
@@ -33,10 +35,13 @@ public:
void clear();
void addToolTip(const QString& toolTip, const QIcon& icon = QIcon());
void refresh(struct graphics_context* gc, QPointF pos);
- bool isExpanded();
+ void refresh(const QPointF& pos);
+ bool isExpanded() const;
void persistPos();
void readPos();
void mouseReleaseEvent(QGraphicsSceneMouseEvent* event);
+ void setTimeAxis(DiveCartesianAxis *axis);
+ void setPlotInfo(const plot_info& plot);
public slots:
void setRect(const QRectF& rect);
@@ -49,6 +54,8 @@ private:
Status status;
QRectF rectangle;
QRectF nextRectangle;
+ DiveCartesianAxis *timeAxis;
+ plot_info pInfo;
};
#endif \ No newline at end of file
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index de44e893b..400fa59aa 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -56,6 +56,7 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) :
setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
setMouseTracking(true);
+ toolTipItem->setTimeAxis(timeAxis);
scene()->addItem(toolTipItem);
// Creating the needed items.
@@ -387,6 +388,8 @@ void ProfileWidget2::plotDives(QList<dive*> dives)
int maxdepth = get_maxdepth(&pInfo);
dataModel->setDive(current_dive, pInfo);
+ toolTipItem->setPlotInfo(pInfo);
+
// It seems that I'll have a lot of boilerplate setting the model / axis for
// each item, I'll mostly like to fix this in the future, but I'll keep at this for now.
profileYAxis->setMaximum(maxdepth);