X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatlinemodelitem.cpp;h=3613630e0f0c6c111106af6990cde257bbbb42c5;hp=0bcc7a785a9b4c5d991e6e0f3a0df882f91111ad;hb=91d4d49abb5e1a8dabba5ae5e460981afda0a354;hpb=2c16b8e356817cb4a4bf7fcd59c0c7429b0100e1 diff --git a/src/qtui/chatlinemodelitem.cpp b/src/qtui/chatlinemodelitem.cpp index 0bcc7a78..3613630e 100644 --- a/src/qtui/chatlinemodelitem.cpp +++ b/src/qtui/chatlinemodelitem.cpp @@ -52,6 +52,16 @@ ChatLineModelItem::ChatLineModelItem(const Message &msg) _styledMsg.setFlags(msg.flags() |= Message::ServerMsg); } +bool ChatLineModelItem::setData(int column, const QVariant &value, int role) { + switch(role) { + case MessageModel::FlagsRole: + _styledMsg.setFlags((Message::Flags)value.toUInt()); + return true; + default: + return MessageModelItem::setData(column, value, role); + } +} + QVariant ChatLineModelItem::data(int column, int role) const { if(role == ChatLineModel::MsgLabelRole) return messageLabel(); @@ -84,6 +94,8 @@ QVariant ChatLineModelItem::timestampData(int role) const { return _styledMsg.timestamp(); case ChatLineModel::BackgroundRole: return backgroundBrush(UiStyle::Timestamp); + case ChatLineModel::SelectedBackgroundRole: + return backgroundBrush(UiStyle::Timestamp, true); case ChatLineModel::FormatRole: return QVariant::fromValue(UiStyle::FormatList() << qMakePair((quint16)0, (quint32)UiStyle::formatType(_styledMsg.type()) | UiStyle::Timestamp)); @@ -99,6 +111,8 @@ QVariant ChatLineModelItem::senderData(int role) const { return _styledMsg.plainSender(); case ChatLineModel::BackgroundRole: return backgroundBrush(UiStyle::Sender); + case ChatLineModel::SelectedBackgroundRole: + return backgroundBrush(UiStyle::Sender, true); case ChatLineModel::FormatRole: return QVariant::fromValue(UiStyle::FormatList() << qMakePair((quint16)0, (quint32)UiStyle::formatType(_styledMsg.type()) | UiStyle::Sender)); @@ -113,6 +127,8 @@ QVariant ChatLineModelItem::contentsData(int role) const { return _styledMsg.plainContents(); case ChatLineModel::BackgroundRole: return backgroundBrush(UiStyle::Contents); + case ChatLineModel::SelectedBackgroundRole: + return backgroundBrush(UiStyle::Contents, true); case ChatLineModel::FormatRole: return QVariant::fromValue(_styledMsg.contentsFormatList()); case ChatLineModel::WrapListRole: @@ -124,7 +140,7 @@ QVariant ChatLineModelItem::contentsData(int role) const { } quint32 ChatLineModelItem::messageLabel() const { - quint32 label = 0; + quint32 label = _styledMsg.senderHash() << 16; if(_styledMsg.flags() & Message::Self) label |= UiStyle::OwnMsg; if(_styledMsg.flags() & Message::Highlight) @@ -132,8 +148,8 @@ quint32 ChatLineModelItem::messageLabel() const { return label; } -QVariant ChatLineModelItem::backgroundBrush(UiStyle::FormatType subelement) const { - QTextCharFormat fmt = QtUi::style()->format(UiStyle::formatType(_styledMsg.type()) | subelement, messageLabel()); +QVariant ChatLineModelItem::backgroundBrush(UiStyle::FormatType subelement, bool selected) const { + QTextCharFormat fmt = QtUi::style()->format(UiStyle::formatType(_styledMsg.type()) | subelement, messageLabel() | (selected ? UiStyle::Selected : 0)); if(fmt.hasProperty(QTextFormat::BackgroundBrush)) return QVariant::fromValue(fmt.background()); return QVariant();