X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fcolumnhandleitem.h;h=c96c687d3348961fd02ed59a7ca2ef49be5aaf87;hb=3be0b60bc79f9de4c5428ce2972599b2c03f8cc4;hp=81c411ed3aa3beb6509442f8e0ee6590cc4a0d2d;hpb=39e2a78383295f86c5aa2dadbeac6f02b53eb7a4;p=quassel.git diff --git a/src/qtui/columnhandleitem.h b/src/qtui/columnhandleitem.h index 81c411ed..c96c687d 100644 --- a/src/qtui/columnhandleitem.h +++ b/src/qtui/columnhandleitem.h @@ -21,31 +21,47 @@ #ifndef COLUMNHANDLEITEM_H_ #define COLUMNHANDLEITEM_H_ +#include #include +#include +#include -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(-_width/2, scene()->sceneRect().y(), _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 setXLimits(qreal min, qreal max); + + public slots: void sceneRectChanged(const QRectF &); + 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