diff options
Diffstat (limited to 'qt-ui/profilegraphics.h')
-rw-r--r-- | qt-ui/profilegraphics.h | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h index b440adf5d..ccc4841cb 100644 --- a/qt-ui/profilegraphics.h +++ b/qt-ui/profilegraphics.h @@ -5,6 +5,9 @@ #include <QGraphicsView> #include <QGraphicsItem> #include <QIcon> +#include <QDoubleSpinBox> +#include <QPushButton> +#include <QGraphicsProxyWidget> struct text_render_options; struct graphics_context; @@ -25,6 +28,7 @@ public: enum {ICON_SMALL = 16, ICON_MEDIUM = 24, ICON_BIG = 32, SPACING=4}; explicit ToolTipItem(QGraphicsItem* parent = 0); + virtual ~ToolTipItem(); void collapse(); void expand(); @@ -32,7 +36,12 @@ public: void addToolTip(const QString& toolTip, const QIcon& icon = QIcon()); void removeToolTip(const QString& toolTip); void refresh(struct graphics_context* gc, QPointF pos); - + bool isExpanded(); + void persistPos(); + void readPos(); + void mousePressEvent(QGraphicsSceneMouseEvent* event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); + bool eventFilter(QObject* , QEvent* ); public Q_SLOTS: void setRect(const QRectF& rect); @@ -42,8 +51,9 @@ private: QGraphicsPathItem *background; QGraphicsLineItem *separator; QGraphicsSimpleTextItem *title; - + Status status; QRectF rectangle; + bool dragging; }; class EventItem : public QGraphicsPolygonItem @@ -57,10 +67,26 @@ private: QIcon icon; }; +class GraphicsTextEditor : public QGraphicsTextItem{ + Q_OBJECT +public: + GraphicsTextEditor(QGraphicsItem* parent = 0); + +protected: + virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event); + virtual void keyReleaseEvent(QKeyEvent* event); + +signals: + void textChanged(const QString& text); + void editingFinished(const QString& text); +}; + class ProfileGraphicsView : public QGraphicsView { Q_OBJECT public: + enum Mode{DIVE, PLAN}; + ProfileGraphicsView(QWidget* parent = 0); void plot(struct dive *d, bool forceRedraw = FALSE); bool eventFilter(QObject* obj, QEvent* event); @@ -74,6 +100,7 @@ protected: public Q_SLOTS: void refresh(); + void edit_dive_time(const QString& time); private: void plot_depth_profile(); @@ -81,7 +108,7 @@ private: void plot_events(struct divecomputer *dc); void plot_one_event(struct event *event); void plot_temperature_profile(); - void plot_cylinder_pressure(struct dive *dive, struct divecomputer *dc); + void plot_cylinder_pressure(struct divecomputer *dc); void plot_temperature_text(); void plot_single_temp_text(int sec, int mkelvin); void plot_depth_text(); @@ -91,6 +118,7 @@ private: void plot_pressure_value(int mbar, int sec, double xalign, double yalign); void plot_gas_value(int mbar, int sec, double xalign, double yalign, int o2, int he); void plot_deco_text(); + void plot_add_line(int sec, double val, QColor c, QPointF &from); void plot_pp_gas_profile(); void plot_pp_text(); void plot_depth_scale(); @@ -110,6 +138,12 @@ private: QGraphicsItem* timeMarkers; QGraphicsItem* depthMarkers; QGraphicsItem* diveComputer; + + // For 'Plan' mode.: + GraphicsTextEditor *depthEditor; + GraphicsTextEditor *timeEditor; + + enum Mode mode; }; #endif |