summaryrefslogtreecommitdiffstats
path: root/qt-ui/profilegraphics.h
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/profilegraphics.h')
-rw-r--r--qt-ui/profilegraphics.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h
index 928c8ea89..9ad04674b 100644
--- a/qt-ui/profilegraphics.h
+++ b/qt-ui/profilegraphics.h
@@ -2,17 +2,59 @@
#define PROFILEGRAPHICS_H
#include <QGraphicsView>
+#include <QGraphicsItem>
+#include <QIcon>
struct text_render_options;
struct graphics_context;
struct plot_info;
typedef struct text_render_options text_render_options_t;
+
+class ToolTipItem;
+class ToolTipStatusHandler;
+
+class ToolTipStatusHandler :public QObject, public QGraphicsEllipseItem {
+public:
+ explicit ToolTipStatusHandler(QObject* parent = 0);
+protected:
+ void mousePressEvent(QGraphicsSceneMouseEvent* event);
+};
+
+class ToolTipItem :public QObject, public QGraphicsPathItem {
+ Q_OBJECT
+ Q_PROPERTY(QRectF rect READ boundingRect WRITE setRect)
+
+public:
+ enum Status {COLLAPSED, EXPANDED};
+ enum {ICON_SMALL = 16, ICON_MEDIUM = 24, ICON_BIG = 32};
+
+ explicit ToolTipItem(QGraphicsItem* parent = 0);
+
+ void collapse();
+ void expand();
+ void clear();
+ void addToolTip(const QString& toolTip, const QIcon& icon = QIcon());
+ void removeToolTip(const QString& toolTip);
+
+public Q_SLOTS:
+ void setRect(const QRectF& rect);
+
+private:
+ typedef QPair<QGraphicsPixmapItem*, QGraphicsSimpleTextItem*> ToolTip;
+ enum Status status;
+ QMap<QString, ToolTip > toolTips;
+ QGraphicsRectItem *background;
+ QRectF rectangle;
+};
+
class ProfileGraphicsView : public QGraphicsView {
Q_OBJECT
public:
ProfileGraphicsView(QWidget* parent = 0);
void plot(struct dive *d);
+ void addToolTip(const QString& text, const QIcon& icon = QIcon());
+ void removeToolTip(const QString& text);
protected:
void resizeEvent(QResizeEvent *event);
@@ -25,6 +67,8 @@ private:
QPen defaultPen;
QBrush defaultBrush;
+ ToolTipItem *toolTip;
};
+
#endif