void FormattedStringHtmlVisitor::visit(const FormattedStringTextBlock *const formattedStringTextBlock) { QString content(replacedNewLine(Qt::escape(formattedStringTextBlock->content()), QStringLiteral("<br/>"))); if (!formattedStringTextBlock->bold() && !formattedStringTextBlock->italic() && !formattedStringTextBlock->underline()) { append(content); return; } QString span = "<span style=\""; if (formattedStringTextBlock->bold()) span += "font-weight:600;"; if (formattedStringTextBlock->italic()) span += "font-style:italic;"; if (formattedStringTextBlock->underline()) span += "text-decoration:underline;"; // TODO: Ignore colors settings for now. Many clients send black as default color. // This breaks all dark chat themes. We have to find better solution for post 0.9.0 versions // if (Color.isValid()) // span += QString("color:%1;").arg(Color.name()); span += "\">"; append(span + content + "</span>"); }
/** Czyszczenie bufora z tag�w HTML i zamienianie znakow specjalnych **/ QString WeatherParser::tagClean(QString str) const { kdebugf(); //str.replace("°","�"); str.replace(" "," "); int start, end; start = 0; do { start = str.find("<",start); end = str.find(">",start+1); if (start != -1 && end != -1) str.replace(start,end+1-start, " "); } while (start != -1 && end != -1); str = replacedNewLine(str, QLatin1String(" ")); str.replace(" ", " "); str.replace(" ,", ","); str.replace(" .", "."); str.replace(" :", ":"); str.replace(" / ", "/"); kdebugf2(); return str; }
void JabberChatService::handleReceivedMessage(const QXmppMessage &xmppMessage) { if (!m_formattedStringFactory) return; m_chatStateService->extractReceivedChatState(xmppMessage); if (xmppMessage.body().isEmpty()) return; if (xmppMessage.type() == QXmppMessage::Type::Error) // #1642 return; auto message = xmppMessage.type() == QXmppMessage::GroupChat ? m_roomChatService->handleReceivedMessage(xmppMessage) : handleNormalReceivedMessage(xmppMessage); if (message.isNull()) return; message.setType(MessageTypeReceived); message.setSendDate(xmppMessage.stamp().toLocalTime()); message.setReceiveDate(QDateTime::currentDateTime()); auto body = xmppMessage.body(); if (rawMessageTransformerService()) body = QString::fromUtf8(rawMessageTransformerService()->transform(body.toUtf8(), message).rawContent()); auto htmlBody = replacedNewLine(Qt::escape(body), QLatin1String("<br/>")); auto formattedString = m_formattedStringFactory.data()->fromHtml(htmlBody); if (!formattedString || formattedString->isEmpty()) return; message.setContent(std::move(formattedString)); auto id = xmppMessage.from(); auto resourceIndex = id.indexOf('/'); if (resourceIndex >= 0) id = id.mid(0, resourceIndex); m_contactMessageTypes.insert(id, xmppMessage.type()); emit messageReceived(message); }
MessageRenderInfo::MessageRenderInfo(const Message &msg) : MyMessage(msg), ShowServerTime(true) { switch (msg.type()) { case Message::TypeSent: BackgroundColor = config_file.readEntry("Look", "ChatMyBgColor"); FontColor = config_file.readEntry("Look", "ChatMyFontColor"); NickColor = config_file.readEntry("Look", "ChatMyNickColor"); break; case Message::TypeReceived: BackgroundColor = config_file.readEntry("Look", "ChatUsrBgColor"); FontColor = config_file.readEntry("Look", "ChatUsrFontColor"); NickColor = config_file.readEntry("Look", "ChatUsrNickColor"); break; default: // do nothing break; } HtmlMessageContent = replacedNewLine(MyMessage.content(), QLatin1String("<br/>")); HtmlMessageContent.replace(QChar::LineSeparator, QLatin1String("<br/>")); // compare this regexp with FormattedMessagePart::toHtml() QRegExp kaduimgRegExp("<img src=\"kaduimg:///([^\"]*)\" />"); int pos = 0; while ((pos = kaduimgRegExp.indexIn(HtmlMessageContent, pos)) != -1) { QString imgId = kaduimgRegExp.cap(1); if (!QFile(ChatImageService::imagesPath() + imgId).exists()) HtmlMessageContent.replace(kaduimgRegExp.cap(0), loadingImageHtml(imgId)); else pos += kaduimgRegExp.matchedLength(); } // convertCharacters(unformattedMessage, backgroundColor, // (EmoticonsStyle)config_file.readNumEntry("Chat", "EmoticonsStyle")); }