File indexing completed on 2024-05-12 05:06:48

0001 /*
0002     SPDX-FileCopyrightText: 2019-2020 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "statusmodel.h"
0007 
0008 // ----------------------------------------------------------------------------
0009 // QT Includes
0010 
0011 #include <QStandardItem>
0012 
0013 // ----------------------------------------------------------------------------
0014 // KDE Includes
0015 
0016 #include <KLocalizedString>
0017 
0018 // ----------------------------------------------------------------------------
0019 // Project Includes
0020 
0021 #include "mymoneyenums.h"
0022 
0023 
0024 StatusModel::StatusModel(QObject* parent)
0025     : MyMoneyModel<StatusEntry>(parent, QStringLiteral("ST"), 2, nullptr)
0026 {
0027     QMap<QString, StatusEntry> states = {
0028         {QStringLiteral("ST01"),
0029          StatusEntry(QStringLiteral("ST01"),
0030                      eMyMoney::Split::State::NotReconciled,
0031                      QString(),
0032                      i18nc("Reconciliation state 'Not reconciled'", "Not reconciled"))},
0033         {QStringLiteral("ST02"),
0034          StatusEntry(QStringLiteral("ST02"),
0035                      eMyMoney::Split::State::Cleared,
0036                      i18nc("Reconciliation flag C", "C"),
0037                      i18nc("Reconciliation state 'Cleared'", "Cleared"))},
0038         {QStringLiteral("ST03"),
0039          StatusEntry(QStringLiteral("ST03"),
0040                      eMyMoney::Split::State::Reconciled,
0041                      i18nc("Reconciliation flag R", "R"),
0042                      i18nc("Reconciliation state 'Reconciled'", "Reconciled"))},
0043         {QStringLiteral("ST04"),
0044          StatusEntry(QStringLiteral("ST04"),
0045                      eMyMoney::Split::State::Frozen,
0046                      i18nc("Reconciliation flag F", "F"),
0047                      i18nc("Reconciliation state 'Frozen'", "Frozen"))},
0048     };
0049     load(states);
0050 }
0051 
0052 StatusModel::~StatusModel()
0053 {
0054 }
0055 
0056 int StatusModel::columnCount(const QModelIndex& parent) const
0057 {
0058     Q_UNUSED(parent)
0059 
0060     return 1;
0061 }
0062 
0063 QVariant StatusModel::headerData(int section, Qt::Orientation orientation, int role) const
0064 {
0065     Q_UNUSED(orientation);
0066 
0067     if ((role == Qt::DisplayRole) && (section == 0))
0068         return i18nc("Reconciliation state", "Status");
0069     return {};
0070 }
0071 
0072 Qt::ItemFlags StatusModel::flags(const QModelIndex& index) const
0073 {
0074     if (index.isValid()) {
0075         return (Qt::ItemIsEnabled | Qt::ItemIsSelectable);
0076     }
0077     return Qt::NoItemFlags;
0078 }
0079 
0080 QVariant StatusModel::data(const QModelIndex& idx, int role) const
0081 {
0082     if (!idx.isValid())
0083         return QVariant();
0084     if (idx.row() < 0 || idx.row() >= rowCount(idx.parent()))
0085         return QVariant();
0086 
0087     const StatusEntry& statusEntry = static_cast<TreeItem<StatusEntry>*>(idx.internalPointer())->constDataRef();
0088     switch(role) {
0089     case Qt::DisplayRole:
0090     case Qt::EditRole:
0091         switch(idx.column()) {
0092         case 0:
0093             return statusEntry.longName();
0094 
0095         default:
0096             break;
0097         }
0098         break;
0099 
0100     case eMyMoney::Model::SplitReconcileFlagRole:
0101         return statusEntry.shortName();
0102 
0103     case eMyMoney::Model::SplitReconcileStatusRole:
0104         return statusEntry.longName();
0105 
0106     case eMyMoney::Model::SplitReconcileStateRole:
0107         return QVariant::fromValue(statusEntry.state());
0108     }
0109     return {};
0110 }