X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fawaylogfilter.cpp;h=6016c7dbd3adb9ea28f207dc4cac9cb4680cfcf3;hp=09964a46918d825a379207fa26d292d12e72caa9;hb=f04db2cb802b1296ca739c823495930c71d3b4ab;hpb=453ccab6ade4a21c7aa3c331af893c91468250a4 diff --git a/src/qtui/awaylogfilter.cpp b/src/qtui/awaylogfilter.cpp index 09964a46..6016c7db 100644 --- a/src/qtui/awaylogfilter.cpp +++ b/src/qtui/awaylogfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,32 +15,46 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "awaylogfilter.h" AwayLogFilter::AwayLogFilter(MessageModel *model, QObject *parent) - : ChatMonitorFilter(model, parent) + : ChatMonitorFilter(model, parent) { } -bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - Q_UNUSED(sourceParent) - QModelIndex source_index = sourceModel()->index(sourceRow, 0); +bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const +{ + Q_UNUSED(sourceParent) + + QModelIndex source_index = sourceModel()->index(sourceRow, 0); - Message::Flags flags = (Message::Flags)source_index.data(MessageModel::FlagsRole).toInt(); - if(!(flags & Message::Backlog && flags & Message::Highlight)) - return false; + Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt(); + if (!(flags & Message::Backlog && flags & Message::Highlight)) + return false; - BufferId bufferId = source_index.data(MessageModel::BufferIdRole).value(); - if(!bufferId.isValid()) { - return false; - } + BufferId bufferId = sourceModel()->data(source_index, MessageModel::BufferIdRole).value(); + if (!bufferId.isValid()) { + return false; + } - if(Client::networkModel()->lastSeenMsgId(bufferId) >= source_index.data(MessageModel::MsgIdRole).value()) - return false; + if (Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value()) + return false; + + return true; +} + + +QVariant AwayLogFilter::data(const QModelIndex &index, int role) const +{ + if (role != MessageModel::FlagsRole) + return ChatMonitorFilter::data(index, role); - return true; + QModelIndex source_index = mapToSource(index); + Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt(); + flags &= ~Message::Highlight; + return (int)flags; }