~ubuntu-branches/ubuntu/trusty/quassel/trusty

1.1.12 by Scott Kitterman
Import upstream version 0.4.0~git090206
1
/***************************************************************************
1.1.54 by Scott Kitterman
Import upstream version 0.10~beta1
2
 *   Copyright (C) 2005-2014 by the Quassel Project                        *
1.1.12 by Scott Kitterman
Import upstream version 0.4.0~git090206
3
 *   devel@quassel-irc.org                                                 *
4
 *                                                                         *
5
 *   This program is free software; you can redistribute it and/or modify  *
6
 *   it under the terms of the GNU General Public License as published by  *
7
 *   the Free Software Foundation; either version 2 of the License, or     *
8
 *   (at your option) version 3.                                           *
9
 *                                                                         *
10
 *   This program is distributed in the hope that it will be useful,       *
11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13
 *   GNU General Public License for more details.                          *
14
 *                                                                         *
15
 *   You should have received a copy of the GNU General Public License     *
16
 *   along with this program; if not, write to the                         *
17
 *   Free Software Foundation, Inc.,                                       *
1.1.49 by Scott Kitterman
Import upstream version 0.9~beta1
18
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
1.1.12 by Scott Kitterman
Import upstream version 0.4.0~git090206
19
 ***************************************************************************/
20
21
#include "awaylogfilter.h"
22
23
AwayLogFilter::AwayLogFilter(MessageModel *model, QObject *parent)
1.1.49 by Scott Kitterman
Import upstream version 0.9~beta1
24
    : ChatMonitorFilter(model, parent)
25
{
26
}
27
28
29
bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
30
{
31
    Q_UNUSED(sourceParent)
32
33
    QModelIndex source_index = sourceModel()->index(sourceRow, 0);
34
35
    Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt();
36
    if (!(flags & Message::Backlog && flags & Message::Highlight))
37
        return false;
38
39
    BufferId bufferId = sourceModel()->data(source_index, MessageModel::BufferIdRole).value<BufferId>();
40
    if (!bufferId.isValid()) {
41
        return false;
42
    }
43
44
    if (Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value<MsgId>())
45
        return false;
46
47
    return true;
48
}
49
50
51
QVariant AwayLogFilter::data(const QModelIndex &index, int role) const
52
{
53
    if (role != MessageModel::FlagsRole)
54
        return ChatMonitorFilter::data(index, role);
55
56
    QModelIndex source_index = mapToSource(index);
57
    Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt();
58
    flags &= ~Message::Highlight;
59
    return (int)flags;
1.1.12 by Scott Kitterman
Import upstream version 0.4.0~git090206
60
}