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 }