[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/apps/lib/konq
From: David Faure <faure () kde ! org>
Date: 2010-08-31 20:11:48
Message-ID: 20100831201148.D6FC0AC857 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1170423 by dfaure:
Support richtext in the statusbar message label (fixes khtml showing "<qt>")
M +34 -1 konq_statusbarmessagelabel.cpp
--- trunk/KDE/kdebase/apps/lib/konq/konq_statusbarmessagelabel.cpp #1170422:1170423
@@ -19,11 +19,14 @@
***************************************************************************/
#include "konq_statusbarmessagelabel.h"
+#include <QStyle>
+#include <QTextDocument>
#include <kcolorscheme.h>
#include <kiconloader.h>
#include <kicon.h>
#include <klocale.h>
+#include <kdebug.h>
#include <QFontMetrics>
#include <QPainter>
@@ -47,6 +50,8 @@
m_closeButton(0)
{}
+ bool isRichText() const { return m_text.startsWith("<html>") || \
m_text.startsWith("<qt>"); } +
KonqStatusBarMessageLabel::Type m_type;
KonqStatusBarMessageLabel::State m_state;
int m_illumination;
@@ -54,6 +59,7 @@
QTimer* m_timer;
QString m_text;
QString m_defaultText;
+ QTextDocument m_textDocument;
QList<QString> m_pendingMessages;
QPixmap m_pixmap;
QToolButton* m_closeButton;
@@ -102,6 +108,16 @@
d->m_text = text;
d->m_type = type;
+ if (d->isRichText()) {
+ d->m_textDocument.setTextWidth(-1);
+ d->m_textDocument.setDefaultFont(font());
+ QString html = "<html><font color=\"";
+ html += palette().windowText().color().name();
+ html += "\">";
+ html += d->m_text;
+ d->m_textDocument.setHtml(html);
+ }
+
d->m_timer->stop();
d->m_illumination = 0;
d->m_state = DefaultState;
@@ -201,12 +217,29 @@
}
// draw text
+
+ const QRect availTextRect(x, 0, availableTextWidth(), height());
+
+ if (d->isRichText()) {
+ const QSize sz = d->m_textDocument.size().toSize();
+
+ // Vertical centering
+ const QRect textRect = QStyle::alignedRect(Qt::LeftToRight, Qt::AlignLeft | \
Qt::AlignVCenter, sz, availTextRect); + //kDebug() << d->m_text << " sz=" << \
sz << textRect; +
+ // What about wordwrap here?
+
+ painter.translate(textRect.left(), textRect.top());
+ d->m_textDocument.drawContents(&painter);
+ } else {
+ // plain text
painter.setPen(palette().windowText().color());
int flags = Qt::AlignVCenter;
if (height() > d->m_minTextHeight) {
flags = flags | Qt::TextWordWrap;
}
- painter.drawText(QRect(x, 0, availableTextWidth(), height()), flags, d->m_text);
+ painter.drawText(availTextRect, flags, d->m_text);
+ }
painter.end();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic