QVariantMap MessageView::toVariantMap(bool isMuc, bool formatted) const { static QHash<Type, QString> types; if (types.isEmpty()) { types.insert(Message, "message"); types.insert(System, "system"); types.insert(Status, "status"); types.insert(Subject, "subject"); types.insert(Urls, "urls"); } QVariantMap m; m["time"] = _dateTime; m["type"] = types.value(_type); switch (_type) { case Message: m["message"] = formatted?formattedText():_text; m["emote"] = _emote; m["local"] = _local; m["sender"] = _nick; m["userid"] = _userId; m["spooled"] = _spooled; m["id"] = _messageId; if (isMuc) { // maybe w/o conditions ? m["alert"] = _alert; } else { m["awaitingReceipt"] = _awaitingReceipt; } break; case Status: m["sender"] = _nick; m["status"] = _status; m["priority"] = _statusPriority; m["message"] = _text; m["usertext"] = formatted?formattedUserText():_userText; break; case System: case Subject: m["message"] = formatted?formattedText():_text; m["usertext"] = formatted?formattedUserText():_userText; break; case Urls: QVariantMap vmUrls; foreach (const QString &u, _urls.keys()) { vmUrls[u] = _urls.value(u); } m["urls"] = vmUrls; break; } return m; }
void WText::updateDom(DomElement& element, bool all) { if (flags_.test(BIT_TEXT_CHANGED) || all) { std::string text = formattedText(); if (flags_.test(BIT_TEXT_CHANGED) || !text.empty()) element.setProperty(Wt::PropertyInnerHTML, text); flags_.reset(BIT_TEXT_CHANGED); } if (flags_.test(BIT_WORD_WRAP_CHANGED) || all) { if (!all || !flags_.test(BIT_WORD_WRAP)) element.setProperty(Wt::PropertyStyleWhiteSpace, flags_.test(BIT_WORD_WRAP) ? "normal" : "nowrap"); flags_.reset(BIT_WORD_WRAP_CHANGED); } if (flags_.test(BIT_PADDINGS_CHANGED) || (all && padding_ && !(padding_[0].isAuto() && padding_[1].isAuto()))) { element.setProperty(PropertyStylePaddingRight, padding_[0].cssText()); element.setProperty(PropertyStylePaddingLeft, padding_[1].cssText()); flags_.reset(BIT_PADDINGS_CHANGED); } WInteractWidget::updateDom(element, all); }