diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2014-02-05 14:53:57 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-02-06 06:29:19 -0800 |
commit | 40cb57b2020321a0e3c898dac2c54daab3f22026 (patch) | |
tree | 940a07342e711edba2603d929ee6f9a1d61263f2 /qt-ui | |
parent | 19585d9a135257a74f92471ee82bb56499aa0680 (diff) | |
download | subsurface-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.cpp | 29 | ||||
-rw-r--r-- | qt-ui/profile/divetooltipitem.h | 9 | ||||
-rw-r--r-- | qt-ui/profile/profilewidget2.cpp | 3 |
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); |