X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fstyledlabel.h;h=ef9bad25cd7f95460b33b29e80329a63f79214f9;hp=4eefb6a0c146eb0b48a3fe89674b768f844d6ebe;hb=c0952944e11623170024362f8317aae0cc453a63;hpb=148964099b6e799121402d297c854393f9988be8 diff --git a/src/uisupport/styledlabel.h b/src/uisupport/styledlabel.h index 4eefb6a0..ef9bad25 100644 --- a/src/uisupport/styledlabel.h +++ b/src/uisupport/styledlabel.h @@ -23,15 +23,23 @@ #include +#include "clickable.h" #include "uistyle.h" class StyledLabel : public QFrame { Q_OBJECT public: + enum ResizeMode { + NoResize, + DynamicResize, + ResizeOnHover + }; + StyledLabel(QWidget *parent = 0); void setText(const QString &text); + void setCustomFont(const QFont &font); virtual QSize sizeHint() const; //virtual QSize minimumSizeHint() const; @@ -45,27 +53,40 @@ public: inline bool toolTipEnabled() const { return _toolTipEnabled; } void setToolTipEnabled(bool); + inline ResizeMode resizeMode() const { return _resizeMode; } + void setResizeMode(ResizeMode); + +signals: + void clickableActivated(const Clickable &click); + protected: virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); + virtual void enterEvent(QEvent *); + virtual void leaveEvent(QEvent *); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); - //void mouseMoveEvent(QMouseEvent *event); - //void mousePressEvent(QMouseEvent *event); - //void mouseReleaseEvent(QMouseEvent *event); - //void mouseDoubleClickEvent(QMouseEvent *event); + int posToCursor(const QPointF &pos); private: QSize _sizeHint; QTextOption::WrapMode _wrapMode; Qt::Alignment _alignment; QTextLayout _layout; + ClickableList _clickables; bool _toolTipEnabled; + ResizeMode _resizeMode; QList _layoutList; + QVector _extraLayoutList; void layout(); void updateSizeHint(); void updateToolTip(); + + void setHoverMode(int start, int length); + void endHoverMode(); }; #endif