Allow configuring the resizing mode for StyledLabel
[quassel.git] / src / uisupport / styledlabel.cpp
index 372b9bb..a87aa8c 100644 (file)
@@ -30,7 +30,8 @@ StyledLabel::StyledLabel(QWidget *parent)
 : QFrame(parent),
   _wrapMode(QTextOption::NoWrap),
   _alignment(Qt::AlignVCenter|Qt::AlignLeft),
 : QFrame(parent),
   _wrapMode(QTextOption::NoWrap),
   _alignment(Qt::AlignVCenter|Qt::AlignLeft),
-  _toolTipEnabled(true)
+  _toolTipEnabled(true),
+  _resizeMode(NoResize)
 {
   setMouseTracking(true);
 
 {
   setMouseTracking(true);
 
@@ -40,6 +41,12 @@ StyledLabel::StyledLabel(QWidget *parent)
   _layout.setTextOption(opt);
 }
 
   _layout.setTextOption(opt);
 }
 
+void StyledLabel::setCustomFont(const QFont &font) {
+  setFont(font);
+  _layout.setFont(font);
+  setText(_layout.text());
+}
+
 void StyledLabel::setWrapMode(QTextOption::WrapMode mode) {
   if(_wrapMode == mode)
     return;
 void StyledLabel::setWrapMode(QTextOption::WrapMode mode) {
   if(_wrapMode == mode)
     return;
@@ -64,6 +71,17 @@ void StyledLabel::setAlignment(Qt::Alignment alignment) {
   layout();
 }
 
   layout();
 }
 
+void StyledLabel::setResizeMode(ResizeMode mode) {
+  if(_resizeMode == mode)
+    return;
+
+  _resizeMode = mode;
+  if(mode == DynamicResize)
+    setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
+  else
+    setWrapMode(QTextOption::NoWrap);
+}
+
 void StyledLabel::resizeEvent(QResizeEvent *event) {
   QFrame::resizeEvent(event);
 
 void StyledLabel::resizeEvent(QResizeEvent *event) {
   QFrame::resizeEvent(event);
 
@@ -175,8 +193,15 @@ void StyledLabel::mouseMoveEvent(QMouseEvent *event) {
   }
 }
 
   }
 }
 
+void StyledLabel::enterEvent(QEvent *) {
+  if(resizeMode() == ResizeOnHover)
+    setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
+}
+
 void StyledLabel::leaveEvent(QEvent *) {
   endHoverMode();
 void StyledLabel::leaveEvent(QEvent *) {
   endHoverMode();
+  if(resizeMode() == ResizeOnHover)
+    setWrapMode(QTextOption::NoWrap);
 }
 
 void StyledLabel::mousePressEvent(QMouseEvent *event) {
 }
 
 void StyledLabel::mousePressEvent(QMouseEvent *event) {