summaryrefslogtreecommitdiff
path: root/src/backend/bookshelfmodel/btmodulenamefilterproxymodel.cpp
blob: f4161754fad65e449344ae5703f8bfd6c2cc5a90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*********
*
* In the name of the Father, and of the Son, and of the Holy Spirit.
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2009 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License
* version 2.0.
*
**********/

#include "backend/bookshelfmodel/btmodulenamefilterproxymodel.h"

BtModuleNameFilterProxyModel::BtModuleNameFilterProxyModel(QObject *parent)
    : QSortFilterProxyModel(parent), m_enabled(true)
{
    setFilterCaseSensitivity(Qt::CaseInsensitive);
}

BtModuleNameFilterProxyModel::~BtModuleNameFilterProxyModel() {
    // Intentionally empty
}

bool BtModuleNameFilterProxyModel::filterAcceptsRow(int row,
                                                    const QModelIndex &p) const
{
    if (!m_enabled) return true;

    const QAbstractItemModel *m(sourceModel());
    Q_ASSERT(m != 0);

    QModelIndex itemIndex(m->index(row, 0, p));
    int numChildren(m->rowCount(itemIndex));
    if (numChildren == 0) {
        return QSortFilterProxyModel::filterAcceptsRow(row, p);
    } else {
        for (int i(0); i < numChildren; i++) {
            if (filterAcceptsRow(i, itemIndex)) return true;
        }
        return false;
    }
}