void ChatView::dispatchMessage(const MessageView &mv) { if ((mv.type() == MessageView::Message || mv.type() == MessageView::Subject) && ChatViewCommon::updateLastMsgTime(mv.dateTime())) { QString color = ColorOpt::instance()->color(infomrationalColorOpt).name(); appendText(QString(useMessageIcons_?"<img src=\"icon:log_icon_time\" />":"") + QString("<font color=\"%1\">*** %2</font>").arg(color).arg(mv.dateTime().date().toString(Qt::ISODate))); } switch (mv.type()) { case MessageView::Message: if (isMuc_) { renderMucMessage(mv); } else { renderMessage(mv); } break; case MessageView::Subject: if (isMuc_) { renderMucSubject(mv); } else { renderSubject(mv); } break; case MessageView::Urls: renderUrls(mv); break; default: // System/Status renderSysMessage(mv); } }
void ChatView::renderMessage(const MessageView &mv) { QString timestr = formatTimeStamp(mv.dateTime()); QString color = colorString(mv.isLocal(), mv.isSpooled()); if (useMessageIcons_ && mv.isAwaitingReceipt()) { document()->addResource(QTextDocument::ImageResource, QUrl(QString("icon:delivery") + mv.messageId()), logIconSend); } QString icon = useMessageIcons_? (QString("<img src=\"%1\" />").arg(mv.isLocal()? (mv.isAwaitingReceipt()?QString("icon:delivery") + mv.messageId():"icon:log_icon_send"):"icon:log_icon_receive")):""; if (mv.isEmote()) { appendText(icon + QString("<span style=\"color: %1\">").arg(color) + QString("[%1]").arg(timestr) + QString(" *%1 ").arg(TextUtil::escape(mv.nick())) + mv.formattedText() + "</span>"); } else { if (PsiOptions::instance()->getOption("options.ui.chat.use-chat-says-style").toBool()) { appendText(icon + QString("<span style=\"color: %1\">").arg(color) + QString("[%1] ").arg(timestr) + tr("%1 says:").arg(TextUtil::escape(mv.nick())) + "</span><br>" + mv.formattedText()); } else { appendText(icon + QString("<span style=\"color: %1\">").arg(color) + QString("[%1] <").arg(timestr) + TextUtil::escape(mv.nick()) + QString("></span> ") + mv.formattedText()); } } if (mv.isLocal()) { deferredScroll(); } }
void ChatView::renderMucMessage(const MessageView &mv) { const QString timestr = formatTimeStamp(mv.dateTime()); QString alerttagso, alerttagsc, nickcolor; QString textcolor = palette().color(QPalette::Active, QPalette::Text).name(); QString icon = useMessageIcons_? (QString("<img src=\"%1\" />").arg(mv.isLocal()?"icon:log_icon_delivered":"icon:log_icon_receive")):""; if(mv.isAlert()) { textcolor = "#FF0000"; alerttagso = "<b>"; alerttagsc = "</b>"; } if(mv.isSpooled()) { nickcolor = ColorOpt::instance()->color(infomrationalColorOpt).name(); } else { nickcolor = getMucNickColor(mv.nick(), mv.isLocal()); } if(mv.isEmote()) { appendText(icon + QString("<font color=\"%1\">").arg(nickcolor) + QString("[%1]").arg(timestr) + QString(" *%1 ").arg(TextUtil::escape(mv.nick())) + alerttagso + mv.formattedText() + alerttagsc + "</font>"); } else { if(PsiOptions::instance()->getOption("options.ui.chat.use-chat-says-style").toBool()) { appendText(icon + QString("<font color=\"%1\">").arg(nickcolor) + QString("[%1] ").arg(timestr) + QString("%1 says:").arg(TextUtil::escape(mv.nick())) + "</font><br>" + QString("<font color=\"%1\">").arg(textcolor) + alerttagso + mv.formattedText() + alerttagsc + "</font>"); } else { appendText(icon + QString("<font color=\"%1\">").arg(nickcolor) + QString("[%1] <").arg(timestr) + TextUtil::escape(mv.nick()) + QString("></font> ") + QString("<font color=\"%1\">").arg(textcolor) + alerttagso + mv.formattedText() + alerttagsc +"</font>"); } } if(mv.isLocal()) { scrollToBottom(); } }
void ChatView::renderMucSubject(const MessageView &mv) { QString timestr = formatTimeStamp(mv.dateTime()); QString ut = mv.formattedUserText(); QString color = ColorOpt::instance()->color(infomrationalColorOpt).name(); QString userTextColor = ColorOpt::instance()->color("options.ui.look.colors.messages.usertext").name(); appendText(QString(useMessageIcons_?"<img src=\"icon:log_icon_info\" />":"") + QString("<font color=\"%1\">[%2] *** ").arg(color, timestr) + mv.formattedText() + (ut.isEmpty()?"":":<br>") + "</font>" + (ut.isEmpty()?"":QString(" <span style=\"color:%1;font-weight:bold\">%2</span>").arg(userTextColor, ut))); }