]> sigrok.org Git - pulseview.git/blobdiff - pv/view/viewport.hpp
ViewWidget: Moved in event and touch_event
[pulseview.git] / pv / view / viewport.hpp
index 07bfcad9c5263a49b2fa5d22e9992dbf0541add5..43905337fefaad1c4b78cc6a71ef432212e15c11 100644 (file)
 #define PULSEVIEW_PV_VIEW_VIEWPORT_H
 
 #include <QTimer>
-#include <QWidget>
 #include <QTouchEvent>
 
+#include "viewwidget.hpp"
+
 class QPainter;
 class QPaintEvent;
 class Session;
@@ -34,31 +35,43 @@ namespace view {
 
 class View;
 
-class Viewport : public QWidget
+class Viewport : public ViewWidget
 {
        Q_OBJECT
 
 public:
        explicit Viewport(View &parent);
 
-protected:
-       void paintEvent(QPaintEvent *event);
+private:
+       /**
+        * Gets the first view item which has a hit-box that contains @c pt .
+        * @param pt the point to search with.
+        * @return the view item that has been found, or and empty
+        *   @c shared_ptr if no item was found.
+        */
+       std::shared_ptr<pv::view::ViewItem> get_mouse_over_item(
+               const QPoint &pt);
+
+       /**
+        * Gets the items in the view widget.
+        */
+       std::vector< std::shared_ptr<pv::view::ViewItem> > items();
+
+       /**
+        * Handles touch begin update and end events.
+        * @param e the event that triggered this handler.
+        */
+       bool touch_event(QTouchEvent *e);
 
 private:
-       bool event(QEvent *event);
+       void paintEvent(QPaintEvent *event);
+
        void mousePressEvent(QMouseEvent *event);
        void mouseReleaseEvent(QMouseEvent *event);
        void mouseMoveEvent(QMouseEvent *event);
        void mouseDoubleClickEvent(QMouseEvent * event);
        void wheelEvent(QWheelEvent *event);
-       bool touchEvent(QTouchEvent *e);
-
-private Q_SLOTS:
-       void on_signals_moved();
-
 private:
-       View &view_;
-
        QPoint mouse_down_point_;
        double mouse_down_offset_;
        bool mouse_down_valid_;