File indexing completed on 2024-04-21 05:54:07

0001 /**
0002  * SPDX-FileCopyrightText: 2021 by Alexander Stippich <a.stippich@gmx.net>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include "FilteredOptionsModel.h"
0008 #include "OptionsModel.h"
0009 
0010 FilteredOptionsModel::FilteredOptionsModel(QObject *parent) : QSortFilterProxyModel(parent)
0011 {
0012 }
0013 
0014 FilteredOptionsModel::~FilteredOptionsModel() = default;
0015 
0016 bool FilteredOptionsModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
0017 {
0018     const auto index = sourceModel()->index(source_row, 0, source_parent);
0019     const auto &state = sourceModel()->data(index, OptionsModel::StateRole).value<KSaneCore::Option::OptionState>();
0020     const auto &type = sourceModel()->data(index, OptionsModel::TypeRole).value<KSaneCore::Option::OptionType>();
0021     
0022     if (!m_showAllOptions) {
0023         return sourceModel()->data(index, OptionsModel::QuickAccessRole).toBool() && state == KSaneCore::Option::StateActive;
0024     }
0025     
0026     if (state != KSaneCore::Option::StateActive || type == KSaneCore::Option::TypeDetectFail) {
0027         return false;
0028     }
0029 
0030     return true;
0031 }
0032 
0033 void FilteredOptionsModel::showAllOptions(bool show)
0034 {
0035     if (m_showAllOptions != show) {
0036         m_showAllOptions = show;
0037         invalidateFilter();
0038     }
0039 }
0040 
0041 #include "moc_FilteredOptionsModel.cpp"