X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatlinemodelitem.cpp;h=5582fe87dd1bc989aea055f1563580ec0eee591b;hp=480c1b55ed761c94ce5f799135a3ce51d9fdc74b;hb=ac7a58dd970833da2336f6ce035ec55515bac0f1;hpb=04315f46a16fc3627218377071e008b6b9744992 diff --git a/src/qtui/chatlinemodelitem.cpp b/src/qtui/chatlinemodelitem.cpp index 480c1b55..5582fe87 100644 --- a/src/qtui/chatlinemodelitem.cpp +++ b/src/qtui/chatlinemodelitem.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -49,6 +49,15 @@ ChatLineModelItem::ChatLineModelItem(const Message &msg) { if (!msg.sender().contains('!')) _styledMsg.setFlags(msg.flags() |= Message::ServerMsg); + + if (_styledMsg.type() == Message::Nick) { + // HACK: Work around nick changes on Quassel core not properly being set as Self + // While this is fixed in the core, old cores and past history will still show incorrectly. + if (nickFromMask(_styledMsg.sender()) == stripFormatCodes(_styledMsg.contents()).toLower()) { + _styledMsg.setFlags(msg.flags() |= Message::Self); + } + } + // Unfortunately, the missing Self flag for other message types can't easily be worked around. } @@ -67,7 +76,7 @@ bool ChatLineModelItem::setData(int column, const QVariant &value, int role) QVariant ChatLineModelItem::data(int column, int role) const { if (role == ChatLineModel::MsgLabelRole) - return messageLabel(); + return QVariant::fromValue(messageLabel()); QVariant variant; MessageModel::ColumnType col = (MessageModel::ColumnType)column; @@ -98,12 +107,11 @@ QVariant ChatLineModelItem::timestampData(int role) const case ChatLineModel::EditRole: return _styledMsg.timestamp(); case ChatLineModel::BackgroundRole: - return backgroundBrush(UiStyle::Timestamp); + return backgroundBrush(UiStyle::FormatType::Timestamp); case ChatLineModel::SelectedBackgroundRole: - return backgroundBrush(UiStyle::Timestamp, true); + return backgroundBrush(UiStyle::FormatType::Timestamp, true); case ChatLineModel::FormatRole: - return QVariant::fromValue(UiStyle::FormatList() - << qMakePair((quint16)0, (quint32) UiStyle::formatType(_styledMsg.type()) | UiStyle::Timestamp)); + return QVariant::fromValue({std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Timestamp})}); } return QVariant(); } @@ -117,12 +125,11 @@ QVariant ChatLineModelItem::senderData(int role) const case ChatLineModel::EditRole: return _styledMsg.plainSender(); case ChatLineModel::BackgroundRole: - return backgroundBrush(UiStyle::Sender); + return backgroundBrush(UiStyle::FormatType::Sender); case ChatLineModel::SelectedBackgroundRole: - return backgroundBrush(UiStyle::Sender, true); + return backgroundBrush(UiStyle::FormatType::Sender, true); case ChatLineModel::FormatRole: - return QVariant::fromValue(UiStyle::FormatList() - << qMakePair((quint16)0, (quint32) UiStyle::formatType(_styledMsg.type()) | UiStyle::Sender)); + return QVariant::fromValue({std::make_pair(quint16{0}, UiStyle::Format{UiStyle::formatType(_styledMsg.type()) | UiStyle::FormatType::Sender})}); } return QVariant(); } @@ -135,9 +142,9 @@ QVariant ChatLineModelItem::contentsData(int role) const case ChatLineModel::EditRole: return _styledMsg.plainContents(); case ChatLineModel::BackgroundRole: - return backgroundBrush(UiStyle::Contents); + return backgroundBrush(UiStyle::FormatType::Contents); case ChatLineModel::SelectedBackgroundRole: - return backgroundBrush(UiStyle::Contents, true); + return backgroundBrush(UiStyle::FormatType::Contents, true); case ChatLineModel::FormatRole: return QVariant::fromValue(_styledMsg.contentsFormatList()); case ChatLineModel::WrapListRole: @@ -149,20 +156,23 @@ QVariant ChatLineModelItem::contentsData(int role) const } -quint32 ChatLineModelItem::messageLabel() const +UiStyle::MessageLabel ChatLineModelItem::messageLabel() const { - quint32 label = _styledMsg.senderHash() << 16; + using MessageLabel = UiStyle::MessageLabel; + + MessageLabel label = static_cast(_styledMsg.senderHash() << 16); if (_styledMsg.flags() & Message::Self) - label |= UiStyle::OwnMsg; + label |= MessageLabel::OwnMsg; if (_styledMsg.flags() & Message::Highlight) - label |= UiStyle::Highlight; + label |= MessageLabel::Highlight; return label; } QVariant ChatLineModelItem::backgroundBrush(UiStyle::FormatType subelement, bool selected) const { - QTextCharFormat fmt = QtUi::style()->format(UiStyle::formatType(_styledMsg.type()) | subelement, messageLabel() | (selected ? UiStyle::Selected : 0)); + QTextCharFormat fmt = QtUi::style()->format(UiStyle::formatType(_styledMsg.type()) | subelement, + messageLabel() | (selected ? UiStyle::MessageLabel::Selected : UiStyle::MessageLabel::None)); if (fmt.hasProperty(QTextFormat::BackgroundBrush)) return QVariant::fromValue(fmt.background()); return QVariant();