/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-2012 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 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<BufferId>();
- if(!bufferId.isValid()) {
- return false;
- }
+ BufferId bufferId = sourceModel()->data(source_index, MessageModel::BufferIdRole).value<BufferId>();
+ if (!bufferId.isValid()) {
+ return false;
+ }
- if(Client::networkModel()->lastSeenMsgId(bufferId) >= source_index.data(MessageModel::MsgIdRole).value<MsgId>())
- return false;
+ if (Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value<MsgId>())
+ 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;
}