diff options
Diffstat (limited to 'src/backend/bookshelfmodel/btmodulenamefilterproxymodel.cpp')
-rw-r--r-- | src/backend/bookshelfmodel/btmodulenamefilterproxymodel.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/backend/bookshelfmodel/btmodulenamefilterproxymodel.cpp b/src/backend/bookshelfmodel/btmodulenamefilterproxymodel.cpp new file mode 100644 index 0000000..f416175 --- /dev/null +++ b/src/backend/bookshelfmodel/btmodulenamefilterproxymodel.cpp @@ -0,0 +1,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; + } +} |