X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fstyledlabel.h;h=beb8db42bd3cef6d5e769079d852900c9cc1de06;hp=4eefb6a0c146eb0b48a3fe89674b768f844d6ebe;hb=0a43227b8cd44625f4881cc1545d42c8c8a4876c;hpb=148964099b6e799121402d297c854393f9988be8 diff --git a/src/uisupport/styledlabel.h b/src/uisupport/styledlabel.h index 4eefb6a0..beb8db42 100644 --- a/src/uisupport/styledlabel.h +++ b/src/uisupport/styledlabel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef STYLEDLABEL_H @@ -23,49 +23,72 @@ #include +#include "clickable.h" #include "uistyle.h" -class StyledLabel : public QFrame { - Q_OBJECT +class StyledLabel : public QFrame +{ + Q_OBJECT public: - StyledLabel(QWidget *parent = 0); + enum ResizeMode { + NoResize, + DynamicResize, + ResizeOnHover + }; - void setText(const QString &text); + StyledLabel(QWidget *parent = 0); - virtual QSize sizeHint() const; - //virtual QSize minimumSizeHint() const; + void setText(const QString &text); + void setCustomFont(const QFont &font); - inline QTextOption::WrapMode wrapMode() const { return _wrapMode; } - void setWrapMode(QTextOption::WrapMode mode); + virtual QSize sizeHint() const; + //virtual QSize minimumSizeHint() const; - inline Qt::Alignment alignment() const { return _alignment; } - void setAlignment(Qt::Alignment alignment); + inline QTextOption::WrapMode wrapMode() const { return _wrapMode; } + void setWrapMode(QTextOption::WrapMode mode); - inline bool toolTipEnabled() const { return _toolTipEnabled; } - void setToolTipEnabled(bool); + inline Qt::Alignment alignment() const { return _alignment; } + void setAlignment(Qt::Alignment alignment); -protected: - virtual void paintEvent(QPaintEvent *event); - virtual void resizeEvent(QResizeEvent *event); + inline bool toolTipEnabled() const { return _toolTipEnabled; } + void setToolTipEnabled(bool); - //void mouseMoveEvent(QMouseEvent *event); - //void mousePressEvent(QMouseEvent *event); - //void mouseReleaseEvent(QMouseEvent *event); - //void mouseDoubleClickEvent(QMouseEvent *event); + inline ResizeMode resizeMode() const { return _resizeMode; } + void setResizeMode(ResizeMode); -private: - QSize _sizeHint; - QTextOption::WrapMode _wrapMode; - Qt::Alignment _alignment; - QTextLayout _layout; - bool _toolTipEnabled; +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); - QList _layoutList; + int posToCursor(const QPointF &pos); - void layout(); - void updateSizeHint(); - void updateToolTip(); +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