Replace deprecated additionalFormats with formats
[quassel.git] / src / uisupport / styledlabel.cpp
index 90af6e6..f54bea8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include "styledlabel.h"
+
 #include <QPainter>
 #include <QTextDocument>
 #include <QTextLayout>
 
 #include "graphicalui.h"
-#include "styledlabel.h"
 #include "uistyle.h"
 
-StyledLabel::StyledLabel(QWidget *parent)
-    : QFrame(parent),
-    _wrapMode(QTextOption::NoWrap),
-    _alignment(Qt::AlignVCenter|Qt::AlignLeft),
-    _toolTipEnabled(true),
-    _resizeMode(NoResize)
+StyledLabel::StyledLabel(QWidget* parent)
+    : QFrame(parent)
+    , _alignment(Qt::AlignVCenter | Qt::AlignLeft)
 {
     setMouseTracking(true);
 
@@ -41,15 +39,13 @@ StyledLabel::StyledLabel(QWidget *parent)
     _layout.setTextOption(opt);
 }
 
-
-void StyledLabel::setCustomFont(const QFont &font)
+void StyledLabel::setCustomFont(const QFont& font)
 {
     setFont(font);
     _layout.setFont(font);
     setText(_layout.text());
 }
 
-
 void StyledLabel::setWrapMode(QTextOption::WrapMode mode)
 {
     if (_wrapMode == mode)
@@ -63,7 +59,6 @@ void StyledLabel::setWrapMode(QTextOption::WrapMode mode)
     layout();
 }
 
-
 void StyledLabel::setAlignment(Qt::Alignment alignment)
 {
     if (_alignment == alignment)
@@ -77,7 +72,6 @@ void StyledLabel::setAlignment(Qt::Alignment alignment)
     layout();
 }
 
-
 void StyledLabel::setResizeMode(ResizeMode mode)
 {
     if (_resizeMode == mode)
@@ -90,21 +84,18 @@ void StyledLabel::setResizeMode(ResizeMode mode)
         setWrapMode(QTextOption::NoWrap);
 }
 
-
-void StyledLabel::resizeEvent(QResizeEvent *event)
+void StyledLabel::resizeEvent(QResizeEvent* event)
 {
     QFrame::resizeEvent(event);
 
     layout();
 }
 
-
 QSize StyledLabel::sizeHint() const
 {
     return _sizeHint;
 }
 
-
 void StyledLabel::updateSizeHint()
 {
     QSize sh;
@@ -117,13 +108,10 @@ void StyledLabel::updateSizeHint()
     }
 }
 
-
-void StyledLabel::setText(const QString &text)
+void StyledLabel::setText(const QString& text)
 {
-    UiStyle *style = GraphicalUi::uiStyle();
-
-    UiStyle::StyledString sstr = style->styleString(style->mircToInternal(text), UiStyle::PlainMsg);
-    QList<QTextLayout::FormatRange> layoutList = style->toTextLayoutList(sstr.formatList, sstr.plainText.length(), 0);
+    UiStyle::StyledString sstr = UiStyle::styleString(UiStyle::mircToInternal(text), UiStyle::FormatType::PlainMsg);
+    UiStyle::FormatContainer layoutList = GraphicalUi::uiStyle()->toTextLayoutList(sstr.formatList, sstr.plainText.length(), UiStyle::MessageLabel::None);
 
     // Use default font rather than the style's
     QTextLayout::FormatRange fmtRange;
@@ -134,7 +122,7 @@ void StyledLabel::setText(const QString &text)
 
     // Mark URLs
     _clickables = ClickableList::fromString(sstr.plainText);
-    foreach(Clickable click, _clickables) {
+    foreach (Clickable click, _clickables) {
         if (click.type() == Clickable::Url) {
             QTextLayout::FormatRange range;
             range.start = click.start();
@@ -145,34 +133,29 @@ void StyledLabel::setText(const QString &text)
     }
 
     _layout.setText(sstr.plainText);
-    _layout.setAdditionalFormats(layoutList);
+    UiStyle::setTextLayoutFormats(_layout, layoutList);
 
     layout();
 
     endHoverMode();
 }
 
-
 void StyledLabel::updateToolTip()
 {
-    if (frameRect().width() - 2*frameWidth() < _layout.minimumWidth())
-#if QT_VERSION < 0x050000
-        setToolTip(QString("<qt>%1</qt>").arg(Qt::escape(_layout.text())));  // only rich text gets wordwrapped!
-#else
+    if (frameRect().width() - 2 * frameWidth() < _layout.minimumWidth())
         setToolTip(QString("<qt>%1</qt>").arg(_layout.text().toHtmlEscaped()));  // only rich text gets wordwrapped!
-#endif
     else
         setToolTip(QString());
 }
 
-
 void StyledLabel::layout()
 {
     qreal h = 0;
     qreal w = contentsRect().width();
 
     _layout.beginLayout();
-    forever {
+    forever
+    {
         QTextLine line = _layout.createLine();
         if (!line.isValid())
             break;
@@ -187,8 +170,7 @@ void StyledLabel::layout()
     update();
 }
 
-
-void StyledLabel::paintEvent(QPaintEvent *e)
+void StyledLabel::paintEvent(QPaintEvent* e)
 {
     QFrame::paintEvent(e);
     QPainter painter(this);
@@ -197,8 +179,7 @@ void StyledLabel::paintEvent(QPaintEvent *e)
     _layout.draw(&painter, QPointF(contentsRect().x(), y), _extraLayoutList);
 }
 
-
-int StyledLabel::posToCursor(const QPointF &pos)
+int StyledLabel::posToCursor(const QPointF& pos)
 {
     if (pos.y() < 0 || pos.y() > height())
         return -1;
@@ -212,15 +193,10 @@ int StyledLabel::posToCursor(const QPointF &pos)
     return -1;
 }
 
-
-void StyledLabel::mouseMoveEvent(QMouseEvent *event)
+void StyledLabel::mouseMoveEvent(QMouseEvent* event)
 {
     if (event->buttons() == Qt::NoButton) {
-#if QT_VERSION < 0x050000
-        Clickable click = _clickables.atCursorPos(posToCursor(event->posF()));
-#else
         Clickable click = _clickables.atCursorPos(posToCursor(event->localPos()));
-#endif
         if (click.isValid())
             setHoverMode(click.start(), click.length());
         else
@@ -228,36 +204,28 @@ void StyledLabel::mouseMoveEvent(QMouseEvent *event)
     }
 }
 
-
-void StyledLabel::enterEvent(QEvent *)
+void StyledLabel::enterEvent(QEvent*)
 {
     if (resizeMode() == ResizeOnHover)
         setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
 }
 
-
-void StyledLabel::leaveEvent(QEvent *)
+void StyledLabel::leaveEvent(QEvent*)
 {
     endHoverMode();
     if (resizeMode() == ResizeOnHover)
         setWrapMode(QTextOption::NoWrap);
 }
 
-
-void StyledLabel::mousePressEvent(QMouseEvent *event)
+void StyledLabel::mousePressEvent(QMouseEvent* event)
 {
     if (event->button() == Qt::LeftButton) {
-#if QT_VERSION < 0x050000
-        Clickable click = _clickables.atCursorPos(posToCursor(event->posF()));
-#else
         Clickable click = _clickables.atCursorPos(posToCursor(event->localPos()));
-#endif
         if (click.isValid())
             emit clickableActivated(click);
     }
 }
 
-
 void StyledLabel::setHoverMode(int start, int length)
 {
     if (_extraLayoutList.count() >= 1 && _extraLayoutList.first().start == start && _extraLayoutList.first().length == length)
@@ -274,7 +242,6 @@ void StyledLabel::setHoverMode(int start, int length)
     update();
 }
 
-
 void StyledLabel::endHoverMode()
 {
     _extraLayoutList.clear();