#ifndef DIVETOOLTIPITEM_H #define DIVETOOLTIPITEM_H #include #include #include #include #include #include "display.h" class DiveCartesianAxis; class QGraphicsLineItem; class QGraphicsSimpleTextItem; class QGraphicsPixmapItem; struct graphics_context; /* To use a tooltip, simply ->setToolTip on the QGraphicsItem that you want * or, if it's a "global" tooltip, set it on the mouseMoveEvent of the ProfileGraphicsView. */ class ToolTipItem :public QObject, public QGraphicsPathItem { Q_OBJECT void updateTitlePosition(); Q_PROPERTY(QRectF rect READ boundingRect WRITE setRect) public: enum Status{COLLAPSED, EXPANDED}; enum {ICON_SMALL = 16, ICON_MEDIUM = 24, ICON_BIG = 32, SPACING=4}; explicit ToolTipItem(QGraphicsItem* parent = 0); virtual ~ToolTipItem(); void collapse(); void expand(); void clear(); void addToolTip(const QString& toolTip, const QIcon& icon = QIcon()); void refresh(struct graphics_context* gc, QPointF pos); 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); private: typedef QPair ToolTip; QVector toolTips; QGraphicsPathItem *background; QGraphicsLineItem *separator; QGraphicsSimpleTextItem *title; Status status; QRectF rectangle; QRectF nextRectangle; DiveCartesianAxis *timeAxis; plot_info pInfo; }; #endif