Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
nickviewfilter.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 by the Quassel Project *
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., *
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19  ***************************************************************************/
20 
21 #include "nickviewfilter.h"
22 
23 #include "buffersettings.h"
24 #include "graphicalui.h"
25 #include "networkmodel.h"
26 #include "uistyle.h"
27 
28 /******************************************************************************************
29  * NickViewFilter
30  ******************************************************************************************/
32  : QSortFilterProxyModel(parent),
33  _bufferId(bufferId)
34 {
35  setSourceModel(parent);
36  setDynamicSortFilter(true);
37  setSortCaseSensitivity(Qt::CaseInsensitive);
38  setSortRole(TreeModel::SortRole);
39 }
40 
41 
42 bool NickViewFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
43 {
44  // root node, networkindexes, the bufferindex of the buffer this filter is active for and it's children are accepted
45  if (!source_parent.isValid())
46  return true;
47 
48  QModelIndex source_child = source_parent.child(source_row, 0);
49  return (sourceModel()->data(source_child, NetworkModel::BufferIdRole).value<BufferId>() == _bufferId);
50 }
51 
52 
53 QVariant NickViewFilter::data(const QModelIndex &index, int role) const
54 {
55  switch (role) {
56  case Qt::FontRole:
57  case Qt::ForegroundRole:
58  case Qt::BackgroundRole:
59  case Qt::DecorationRole:
60  return GraphicalUi::uiStyle()->nickViewItemData(mapToSource(index), role);
61  default:
62  return QSortFilterProxyModel::data(index, role);
63  }
64 }