File indexing completed on 2024-05-05 17:32:17
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org> 0003 * SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "modulesproxymodel.h" 0007 0008 ModulesProxyModel::ModulesProxyModel(QObject *parent) 0009 : QSortFilterProxyModel{parent} 0010 , m_model{new ModulesModel} 0011 { 0012 setSourceModel(m_model); 0013 setSortRole(ModulesModel::NameRole); 0014 setFilterString(m_filterString); 0015 setRecursiveFilteringEnabled(true); 0016 } 0017 0018 QString ModulesProxyModel::filterString() const 0019 { 0020 return m_filterString; 0021 } 0022 0023 void ModulesProxyModel::setFilterString(QString filterString) 0024 { 0025 if (filterString != m_filterString) { 0026 m_filterString = filterString; 0027 setFilterFixedString({m_filterString}); 0028 Q_EMIT filterStringChanged(); 0029 } 0030 } 0031 0032 bool ModulesProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const 0033 { 0034 QString name = m_model->data(m_model->index(sourceRow, 0), ModulesModel::NameRole).toString(); 0035 QString description = m_model->data(m_model->index(sourceRow, 0), ModulesModel::DescriptionRole).toString(); 0036 QStringList keywords = m_model->data(m_model->index(sourceRow, 0), ModulesModel::KeywordsRole).toStringList(); 0037 0038 for (const QString &keyword : keywords) { 0039 if (keyword.contains(m_filterString, Qt::CaseInsensitive)) 0040 return true; 0041 } 0042 return name.contains(m_filterString, Qt::CaseInsensitive) || description.contains(m_filterString, Qt::CaseInsensitive); 0043 }