File indexing completed on 2024-05-12 05:07:44

0001 /*
0002     SPDX-FileCopyrightText: 2021 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "ledgerjournalidfilter.h"
0007 #include "ledgerfilterbase_p.h"
0008 
0009 // ----------------------------------------------------------------------------
0010 // QT Includes
0011 
0012 // ----------------------------------------------------------------------------
0013 // KDE Includes
0014 
0015 // ----------------------------------------------------------------------------
0016 // Project Includes
0017 
0018 #include "journalmodel.h"
0019 #include "mymoneyfile.h"
0020 
0021 class LedgerJournalIdFilterPrivate : public LedgerFilterBasePrivate
0022 {
0023 public:
0024     explicit LedgerJournalIdFilterPrivate(LedgerJournalIdFilter* qq)
0025         : LedgerFilterBasePrivate(qq)
0026     {
0027     }
0028 
0029     ~LedgerJournalIdFilterPrivate()
0030     {
0031     }
0032 };
0033 
0034 LedgerJournalIdFilter::LedgerJournalIdFilter(QObject* parent, QVector<QAbstractItemModel*> specialJournalModels)
0035     : LedgerFilterBase(new LedgerJournalIdFilterPrivate(this), parent)
0036 {
0037     Q_D(LedgerJournalIdFilter);
0038 
0039     setFilterRole(eMyMoney::Model::IdRole);
0040     setObjectName("LedgerJournalIdFilter");
0041     setFilterKeyColumn(0);
0042 
0043     d->concatModel->setObjectName("LedgerView concatModel");
0044     d->concatModel->addSourceModel(MyMoneyFile::instance()->journalModel());
0045 
0046     for (const auto model : specialJournalModels) {
0047         d->concatModel->addSourceModel(model);
0048     }
0049 
0050     setSourceModel(d->concatModel);
0051 }
0052 
0053 LedgerJournalIdFilter::~LedgerJournalIdFilter()
0054 {
0055 }
0056 
0057 bool LedgerJournalIdFilter::lessThan(const QModelIndex& left, const QModelIndex& right) const
0058 {
0059     const auto leftPos = filterFixedStrings().indexOf(left.data(eMyMoney::Model::IdRole).toString());
0060     const auto rightPos = filterFixedStrings().indexOf(right.data(eMyMoney::Model::IdRole).toString());
0061 
0062     return leftPos < rightPos;
0063 }