void lmcMessageLog::appendPublicMessage(QString* lpszUserId, QString* lpszUserName, QString* lpszMessage, QDateTime *pTime, QFont *pFont, QColor *pColor) { QString html = QString::null; bool localUser = (lpszUserId->compare(localId) == 0); decodeMessage(lpszMessage); QString fontStyle = getFontStyle(pFont, pColor, localUser); if(lpszUserId->compare(lastId) != 0) { outStyle = !outStyle; html = outStyle ? themeData.outMsg : themeData.inMsg; // get the avatar image for this user from the cache folder QString filePath = participantAvatars.value(*lpszUserId); // if image not found, use the default avatar image for this user QString iconPath = QFile::exists(filePath) ? QUrl::fromLocalFile(filePath).toString() : "qrc"AVT_DEFAULT; html.replace("%iconpath%", iconPath); html.replace("%sender%", *lpszUserName); html.replace("%time%", getTimeString(pTime)); html.replace("%style%", fontStyle); html.replace("%message%", *lpszMessage); QWebFrame* frame = page()->mainFrame(); QWebElement document = frame->documentElement(); QWebElement body = document.findFirst("body"); body.appendInside(html); } else { html = outStyle ? themeData.outNextMsg : themeData.inNextMsg; html.replace("%time%", getTimeString(pTime)); html.replace("%style%", fontStyle); html.replace("%message%", *lpszMessage); QWebFrame* frame = page()->mainFrame(); QWebElement document = frame->documentElement(); QWebElement body = document.findFirst("body"); QWebElement last = body.lastChild(); QWebElement insert = last.findFirst("div#insert"); insert.replace(html); } hasData = true; }
void QtWebKitChatView::addMessageTop(boost::shared_ptr<ChatSnippet> snippet) { // save scrollbar maximum value if (!topMessageAdded_) { scrollBarMaximum_ = webPage_->mainFrame()->scrollBarMaximum(Qt::Vertical); } topMessageAdded_ = true; QWebElement continuationElement = firstElement_.findFirst("#insert"); bool insert = snippet->getAppendToPrevious(); bool fallback = continuationElement.isNull(); boost::shared_ptr<ChatSnippet> newSnippet = (insert && fallback) ? snippet->getContinuationFallbackSnippet() : snippet; QWebElement newElement = snippetToDOM(newSnippet); if (insert && !fallback) { Q_ASSERT(!continuationElement.isNull()); continuationElement.replace(newElement); } else { continuationElement.removeFromDocument(); topInsertPoint_.prependOutside(newElement); } firstElement_ = newElement; if (lastElement_.isNull()) { lastElement_ = firstElement_; } if (fontSizeSteps_ != 0) { double size = 1.0 + 0.2 * fontSizeSteps_; QString sizeString(QString().setNum(size, 'g', 3) + "em"); const QWebElementCollection spans = firstElement_.findAll("span.swift_resizable"); Q_FOREACH (QWebElement span, spans) { span.setStyleProperty("font-size", sizeString); }