X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fcolumnhandleitem.h;h=9cc131b2996b4e319f25d35f5f02350f7de23343;hp=3bfe5bac1997d435c6e224c8be1829b24479de57;hb=62192fb6cd9cc211b5b9fe844c9b4c2f98f923cc;hpb=206ce9444661cc7b2f65bdd8c8c0d1c365e6306f diff --git a/src/qtui/columnhandleitem.h b/src/qtui/columnhandleitem.h index 3bfe5bac..9cc131b2 100644 --- a/src/qtui/columnhandleitem.h +++ b/src/qtui/columnhandleitem.h @@ -21,34 +21,52 @@ #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); +public: + ColumnHandleItem(qreal width, QGraphicsItem *parent = 0); - inline qreal width() const; - inline QRectF boundingRect() const; - void setXPos(qreal xpos); + inline qreal width() const { return _width; } + inline QRectF boundingRect() const { return _boundingRect; } + inline qreal sceneLeft() const { return _sceneLeft; } + inline qreal sceneRight() const { return _sceneRight; } - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void setXPos(qreal xpos); - void sceneRectChanged(const QRectF &); + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - private: - qreal _width; -}; + 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); -qreal ColumnHandleItem::width() const { - return _width; -} +signals: + void positionChanged(qreal x); -QRectF ColumnHandleItem::boundingRect() const { - return QRectF(0, 0, _width, scene()->height()); -} +private slots: + void hoverChanged(qreal value); + +private: + qreal _width; + qreal _sceneLeft, _sceneRight; + QRectF _boundingRect; + qreal _hover; + bool _moving; + qreal _minXPos, _maxXPos; + QTimeLine _timeLine; +}; #endif