X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fawaylogfilter.cpp;h=866a3334d6f1be835fcb5c5329fce24795e54271;hp=fea9bfaeb166f264935c88be532d6c67f99ad977;hb=HEAD;hpb=921e54680da16fcf2adb7a90506875aceb6633a4 diff --git a/src/qtui/awaylogfilter.cpp b/src/qtui/awaylogfilter.cpp index fea9bfae..866a3334 100644 --- a/src/qtui/awaylogfilter.cpp +++ b/src/qtui/awaylogfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,35 +20,47 @@ #include "awaylogfilter.h" -AwayLogFilter::AwayLogFilter(MessageModel *model, QObject *parent) - : ChatMonitorFilter(model, parent) -{ -} +#include "clientignorelistmanager.h" +AwayLogFilter::AwayLogFilter(MessageModel* model, QObject* parent) + : ChatMonitorFilter(model, parent) +{} -bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const +bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const { Q_UNUSED(sourceParent) 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; } - -QVariant AwayLogFilter::data(const QModelIndex &index, int role) const +QVariant AwayLogFilter::data(const QModelIndex& index, int role) const { if (role != MessageModel::FlagsRole) return ChatMonitorFilter::data(index, role);