File indexing completed on 2024-12-08 07:33:47
0001 // SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com> 0002 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0003 0004 #include "spacechildsortfiltermodel.h" 0005 0006 #include "spacechildrenmodel.h" 0007 0008 SpaceChildSortFilterModel::SpaceChildSortFilterModel(QObject *parent) 0009 : QSortFilterProxyModel(parent) 0010 { 0011 setRecursiveFilteringEnabled(true); 0012 sort(0); 0013 } 0014 0015 void SpaceChildSortFilterModel::setFilterText(const QString &filterText) 0016 { 0017 m_filterText = filterText; 0018 Q_EMIT filterTextChanged(); 0019 invalidateFilter(); 0020 } 0021 0022 QString SpaceChildSortFilterModel::filterText() const 0023 { 0024 return m_filterText; 0025 } 0026 0027 bool SpaceChildSortFilterModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const 0028 { 0029 if (!source_left.data(SpaceChildrenModel::IsSpaceRole).toBool() && source_right.data(SpaceChildrenModel::IsSpaceRole).toBool()) { 0030 return false; 0031 } 0032 return true; 0033 } 0034 0035 bool SpaceChildSortFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const 0036 { 0037 QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); 0038 if (auto sourceModel = static_cast<SpaceChildrenModel *>(this->sourceModel())) { 0039 bool isReplaced = sourceModel->isRoomReplaced(index.data(SpaceChildrenModel::RoomIDRole).toString()); 0040 bool acceptRoom = index.data(SpaceChildrenModel::DisplayNameRole).toString().contains(m_filterText, Qt::CaseInsensitive); 0041 return !isReplaced && acceptRoom; 0042 } 0043 return true; 0044 } 0045 0046 #include "moc_spacechildsortfiltermodel.cpp"