Columns are now moveable!
[quassel.git] / src / qtui / columnhandleitem.h
index 81c411e..1ed4c46 100644 (file)
 #ifndef COLUMNHANDLEITEM_H_
 #define COLUMNHANDLEITEM_H_
 
+#include <QObject>
 #include <QGraphicsItem>
+#include <QGraphicsScene>
+#include <QTimeLine>
 
-class ColumnHandleItem : public QGraphicsItem {
+class ColumnHandleItem : public QObject, public QGraphicsItem {
+  Q_OBJECT
 
   public:
     ColumnHandleItem(qreal width, QGraphicsItem *parent = 0);
 
-    inline qreal width() const;
-    inline QRectF boundingRect() const;
+    inline qreal width() const { return _width; }
+    inline QRectF boundingRect() const { return QRectF(0, 0, _width, scene()->height()); }
     void setXPos(qreal xpos);
 
-    virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
 
     void sceneRectChanged(const QRectF &);
+    void setXLimits(qreal min, qreal max);
+
+  protected:
+    void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+    void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+  signals:
+    void positionChanged(qreal x);
+
+  private slots:
+    void hoverChanged(qreal value);
 
   private:
     qreal _width;
+    qreal _hover;
+    bool _moving;
+    qreal _minXPos, _maxXPos;
+    QTimeLine _timeLine;
 };
 
-qreal ColumnHandleItem::width() const {
-  return _width;
-}
-
-QRectF ColumnHandleItem::boundingRect() const {
-  return QRectF(0, 0, _width, scene()->height());
-}
-
 #endif