X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtopia%2Fchatwidget.cpp;h=e60083b1bc0c132553fc3c57b8aea26ea97c8941;hp=9151cb79e88d261caf4945c21e913c5be870f2fa;hb=9b63f3ec74f5e2b94e223f0e9b6dc3292787375f;hpb=6c6daea183c3a013a91fb8e9f250f6dece3023f8 diff --git a/src/qtopia/chatwidget.cpp b/src/qtopia/chatwidget.cpp index 9151cb79..e60083b1 100644 --- a/src/qtopia/chatwidget.cpp +++ b/src/qtopia/chatwidget.cpp @@ -17,3 +17,79 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ + +#include +#include +#include "chatwidget.h" + +ChatWidget::ChatWidget(QWidget *parent) : QTextEdit(parent) { + setStyleSheet("background-color: rgba(255, 255, 255, 60%)"); + setTextInteractionFlags(Qt::TextBrowserInteraction); +} + +void ChatWidget::setContents(QList lines) { + clear(); + appendChatLines(lines); + +} + +void ChatWidget::prependMsg(AbstractUiMsg *msg) { + ChatLine *line = static_cast(msg); + Q_ASSERT(line); + prependChatLine(line); +} + +void ChatWidget::appendMsg(AbstractUiMsg *msg) { + ChatLine *line = static_cast(msg); + Q_ASSERT(line); + appendChatLine(line); +} + +void ChatWidget::appendChatLine(ChatLine *line) { + QTextCursor cursor = textCursor(); + moveCursor(QTextCursor::End); + if(!document()->isEmpty()) insertPlainText("\n"); + insertStyledText(line->styledSender()); + insertPlainText(" "); + insertStyledText(line->styledText()); + setTextCursor(cursor); +} + +void ChatWidget::appendChatLines(QList list) { + foreach(ChatLine *line, list) { + appendChatLine(line); + } +} + +void ChatWidget::prependChatLine(ChatLine *line) { + QTextCursor cursor = textCursor(); + moveCursor(QTextCursor::Start); + bool flg = document()->isEmpty(); + insertStyledText(line->styledSender()); + insertPlainText(" "); + insertStyledText(line->styledText()); + if(!flg) insertPlainText("\n"); + setTextCursor(cursor); +} + +void ChatWidget::prependChatLines(QList list) { + foreach(ChatLine *line, list) { + prependChatLine(line); + } +} + +void ChatWidget::insertChatLine(ChatLine *line) { + if(!document()->isEmpty()) insertPlainText("\n"); + insertStyledText(line->styledSender()); + insertPlainText(" "); + insertStyledText(line->styledText()); +} + +void ChatWidget::insertStyledText(const QtopiaUiStyle::StyledText &stext) { + QTextCursor cursor = textCursor(); + foreach(QTextLayout::FormatRange format, stext.formats) { + cursor.setCharFormat(format.format); + setTextCursor(cursor); + insertPlainText(stext.text.mid(format.start, format.length)); + } +}