File indexing completed on 2024-05-12 09:40:44
0001 /* 0002 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "limitedrowcountproxymodel_p.h" 0008 0009 #include "notifications.h" 0010 0011 using namespace NotificationManager; 0012 0013 LimitedRowCountProxyModel::LimitedRowCountProxyModel(QObject *parent) 0014 : QSortFilterProxyModel(parent) 0015 { 0016 } 0017 0018 LimitedRowCountProxyModel::~LimitedRowCountProxyModel() = default; 0019 0020 void LimitedRowCountProxyModel::setSourceModel(QAbstractItemModel *sourceModel) 0021 { 0022 if (sourceModel == QAbstractProxyModel::sourceModel()) { 0023 return; 0024 } 0025 0026 if (QAbstractProxyModel::sourceModel()) { 0027 disconnect(QAbstractProxyModel::sourceModel(), nullptr, this, nullptr); 0028 } 0029 0030 QSortFilterProxyModel::setSourceModel(sourceModel); 0031 0032 if (sourceModel) { 0033 connect(sourceModel, &QAbstractItemModel::rowsInserted, this, &LimitedRowCountProxyModel::invalidateFilter); 0034 connect(sourceModel, &QAbstractItemModel::rowsMoved, this, &LimitedRowCountProxyModel::invalidateFilter); 0035 connect(sourceModel, &QAbstractItemModel::rowsRemoved, this, &LimitedRowCountProxyModel::invalidateFilter); 0036 } 0037 } 0038 0039 int LimitedRowCountProxyModel::limit() const 0040 { 0041 return m_limit; 0042 } 0043 0044 void LimitedRowCountProxyModel::setLimit(int limit) 0045 { 0046 if (m_limit != limit) { 0047 m_limit = limit; 0048 invalidateFilter(); 0049 Q_EMIT limitChanged(); 0050 } 0051 } 0052 0053 bool LimitedRowCountProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const 0054 { 0055 if (source_parent.isValid()) { 0056 return true; 0057 } 0058 0059 if (m_limit > 0) { 0060 return source_row < m_limit; 0061 } 0062 0063 return true; 0064 }