Show one-letter words again
[quassel.git] / src / uisupport / styledlabel.h
index 4eefb6a..ef9bad2 100644 (file)
 
 #include <QFrame>
 
+#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<QTextLayout::FormatRange> _layoutList;
+  QVector<QTextLayout::FormatRange> _extraLayoutList;
 
   void layout();
   void updateSizeHint();
   void updateToolTip();
+
+  void setHoverMode(int start, int length);
+  void endHoverMode();
 };
 
 #endif