Warning, file /utilities/telly-skout/src/programsproxymodel.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 // SPDX-FileCopyrightText: 2022 Plata Hill <plata.hill@kdemail.net> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #include "programsproxymodel.h" 0005 0006 #include "program.h" 0007 0008 ProgramsProxyModel::ProgramsProxyModel(QObject *parent) 0009 : QSortFilterProxyModel(parent) 0010 , m_start{} 0011 , m_stop{} 0012 { 0013 } 0014 0015 ProgramsProxyModel::~ProgramsProxyModel() 0016 { 0017 } 0018 0019 QDateTime ProgramsProxyModel::start() const 0020 { 0021 return m_start; 0022 } 0023 0024 void ProgramsProxyModel::setStart(const QDateTime &start) 0025 { 0026 if (m_start != start) { 0027 m_start = start; 0028 invalidateFilter(); 0029 Q_EMIT startChanged(); 0030 } 0031 } 0032 0033 QDateTime ProgramsProxyModel::stop() const 0034 { 0035 return m_stop; 0036 } 0037 0038 void ProgramsProxyModel::setStop(const QDateTime &stop) 0039 { 0040 if (m_stop != stop) { 0041 m_stop = stop; 0042 invalidateFilter(); 0043 Q_EMIT stopChanged(); 0044 } 0045 } 0046 0047 bool ProgramsProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const 0048 { 0049 const auto idx = sourceModel()->index(source_row, 0, source_parent); 0050 0051 if (!QSortFilterProxyModel::filterAcceptsRow(source_row, source_parent)) { 0052 return false; 0053 } 0054 0055 // at least one filter 0056 auto program = idx.data(0).value<Program *>(); 0057 0058 const bool startOk = program->stop() > m_start; 0059 const bool stopOk = program->start() <= m_stop; 0060 0061 return startOk && stopOk; 0062 }