From: Svetlana Tkachenko Date: Wed, 31 Jan 2018 23:11:35 +0000 (+0000) Subject: Exclude ignored messages in Away Log X-Git-Tag: travis-deploy-test~9 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=e0655f212ecf54be83f5090a3ba640f8de564471 Exclude ignored messages in Away Log Cleaned-up-by: Manuel Nickschas --- diff --git a/src/qtui/awaylogfilter.cpp b/src/qtui/awaylogfilter.cpp index 3669c41c..882a7af9 100644 --- a/src/qtui/awaylogfilter.cpp +++ b/src/qtui/awaylogfilter.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include "awaylogfilter.h" +#include "clientignorelistmanager.h" AwayLogFilter::AwayLogFilter(MessageModel *model, QObject *parent) : ChatMonitorFilter(model, parent) @@ -33,16 +34,28 @@ bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar QModelIndex source_index = sourceModel()->index(sourceRow, 0); Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt(); - if (!(flags & Message::Backlog && flags & Message::Highlight)) + // Only show highlights from the backlog + if (!(flags & Message::Backlog && flags & Message::Highlight)) { return false; + } + // do not use invalid buffers BufferId bufferId = sourceModel()->data(source_index, MessageModel::BufferIdRole).value(); if (!bufferId.isValid()) { return false; } - if (Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value()) + // only show messages that were sent after the user detached + if (Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value()) { return false; + } + + // ignorelist handling + // only match if message is not flagged as server msg + if (!(flags & Message::ServerMsg) && Client::ignoreListManager() + && Client::ignoreListManager()->match(source_index.data(MessageModel::MessageRole).value(), Client::networkModel()->networkName(bufferId))) { + return false; + } return true; }