1 /* 2 SPDX-FileCopyrightText: 2007-2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net> 3 SPDX-License-Identifier: GPL-2.0-or-later 4 */ 5 6 #include "vocabularyfilter.h" 7 8 #include "vocabularymodel.h" 9 VocabularyFilter(QObject * parent)10VocabularyFilter::VocabularyFilter(QObject *parent) 11 : QSortFilterProxyModel(parent) 12 , m_model(0) 13 { 14 // do not use capitalization for searches 15 setSortCaseSensitivity(Qt::CaseInsensitive); 16 setFilterCaseSensitivity(Qt::CaseInsensitive); 17 // sort locale aware: at least puts umlauts and accents in the right position. 18 // Not sure about languages that are more different. 19 // Also depends on the current locale. 20 setSortLocaleAware(true); 21 22 // eventually accept only one language if so desired... 23 setFilterKeyColumn(-1); 24 } 25 appendEntry(KEduVocExpression * expression)26QModelIndex VocabularyFilter::appendEntry(KEduVocExpression *expression) 27 { 28 if (!m_model) { 29 return QModelIndex(); 30 } 31 return mapFromSource(m_model->appendEntry(expression)); 32 } 33 setSourceModel(VocabularyModel * model)34void VocabularyFilter::setSourceModel(VocabularyModel *model) 35 { 36 QSortFilterProxyModel::setSourceModel(model); 37 m_model = model; 38 } 39 setSearchString(const QString & expression)40void VocabularyFilter::setSearchString(const QString &expression) 41 { 42 m_filterString = expression; 43 invalidateFilter(); 44 } 45 filterAcceptsRow(int sourceRow,const QModelIndex & sourceParent) const46bool VocabularyFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const 47 { 48 if (m_filterString.isEmpty()) { 49 return true; 50 } 51 52 int columns = m_model->columnCount(QModelIndex()); 53 for (int i = 0; i < columns; i += VocabularyModel::EntryColumnsMAX) { 54 QModelIndex index = sourceModel()->index(sourceRow, i, sourceParent); 55 if (sourceModel()->data(index).toString().contains(m_filterString, Qt::CaseInsensitive)) { 56 return true; 57 } 58 } 59 return false; 60 } 61 lesson()62KEduVocLesson *VocabularyFilter::lesson() 63 { 64 if (m_model) { 65 return m_model->lesson(); 66 } 67 return 0; 68 } 69