-void BufferWidget::renderContents() {
- QString html;
- //html = "<style type=\"text/css\">"
- // ".test { background-color:#339933 }"
- // "</style>";
- for(int i = 0; i < contents.count(); i++) {
- html += htmlFromMsg(contents[i]);
- }
- //ui.chatWidget->clear();
- hide();
- ui.chatWidget->setHtml(html); show();
- //ui.chatWidget->insertHtml("<div />"); // <-- bug that would not reset the scrollbar sizes...
- scrollToEnd();
-}
-
-void BufferWidget::scrollToEnd() {
- QScrollBar *sb = ui.chatWidget->verticalScrollBar();
- sb->setValue(sb->maximum());
- //qDebug() << bufferName << "scrolled" << sb->value() << sb->maximum();
-}
-
-QString BufferWidget::htmlFromMsg(Message msg) {
- QString s, n;
- QString c = stdCol;
- QString user = userFromMask(msg.sender);
- QString host = hostFromMask(msg.sender);
- QString nick = nickFromMask(msg.sender);
- switch(msg.type) {
- case Message::Plain:
- c = stdCol; n = QString("<%1>").arg(nick); s = msg.text;
- break;
- case Message::Server:
- c = serverCol; s = msg.text;
- break;
- case Message::Error:
- c = errorCol; s = msg.text;
- break;
- case Message::Join:
- c = joinCol;
- s = QString(tr("--> %1 (%2@%3) has joined %4")).arg(nick).arg(user).arg(host).arg(bufferName);
- break;
- case Message::Part:
- c = partCol;
- s = QString(tr("<-- %1 (%2@%3) has left %4")).arg(nick).arg(user).arg(host).arg(bufferName);
- if(!msg.text.isEmpty()) s = QString("%1 (%2)").arg(s).arg(msg.text);
- break;
- case Message::Kick:
- { c = kickCol;
- QString victim = msg.text.section(" ", 0, 0);
- if(victim == ui.ownNick->currentText()) victim = tr("you");
- QString kickmsg = msg.text.section(" ", 1);
- s = QString(tr("--> %1 has kicked %2 from %3")).arg(nick).arg(victim).arg(bufferName);
- if(!kickmsg.isEmpty()) s = QString("%1 (%2)").arg(s).arg(kickmsg);
- }
- break;
- case Message::Quit:
- c = quitCol;
- s = QString(tr("<-- %1 (%2@%3) has quit")).arg(nick).arg(user).arg(host);
- if(!msg.text.isEmpty()) s = QString("%1 (%2)").arg(s).arg(msg.text);
- break;
- case Message::Nick:
- c = nickCol;
- if(nick == msg.text) s = QString(tr("<-> You are now known as %1")).arg(msg.text);
- else s = QString(tr("<-> %1 is now known as %2")).arg(nick).arg(msg.text);
- break;
- case Message::Mode:
- c = serverCol;
- if(nick.isEmpty()) s = tr("*** User mode: %1").arg(msg.text);
- else s = tr("*** Mode %1 by %2").arg(msg.text).arg(nick);
- break;
- default:
- c = stdCol; n = QString("[%1]").arg(msg.sender); s = msg.text;
- break;
- }
- if(!active) c = inactiveCol;
- s.replace('&', "&"); s.replace('<', "<"); s.replace('>', ">");
- QString html = QString("<table cellspacing=0 cellpadding=0><tr>"
- "<td width=50><div style=\"color:%2;\">[%1]</div></td>")
- .arg(msg.timeStamp.toLocalTime().toString("hh:mm:ss")).arg("darkblue");
- if(!n.isEmpty())
- html += QString("<td width=100><div align=right style=\"white-space:pre;margin-left:6px;color:%2;\">%1</div></td>")
- .arg(n).arg("royalblue");
- html += QString("<td><div style=\"white-space:pre-wrap;margin-left:6px;color:%2;\">%1</div></td>""</tr></table>").arg(s).arg(c);
- return html;
-}
-