File indexing completed on 2024-05-12 16:43:58
0001 /* 0002 SPDX-FileCopyrightText: 2006-2018 Thomas Baumgart <tbaumgart@kde.org> 0003 SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com> 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "groupmarkers.h" 0008 0009 // ---------------------------------------------------------------------------- 0010 // QT Includes 0011 0012 #include <QAbstractItemView> 0013 #include <QList> 0014 #include <QRect> 0015 #include <QTableWidget> 0016 #include <QVector> 0017 0018 // ---------------------------------------------------------------------------- 0019 // KDE Includes 0020 0021 #include <KLocalizedString> 0022 0023 // ---------------------------------------------------------------------------- 0024 // Project Includes 0025 0026 #include "groupmarker.h" 0027 #include "groupmarker_p.h" 0028 0029 #include "itemptrvector.h" 0030 #include "mymoneyaccount.h" 0031 #include "mymoneyenums.h" 0032 #include "widgetenums.h" 0033 0034 using namespace KMyMoneyRegister; 0035 using namespace eWidgets; 0036 using namespace eMyMoney; 0037 0038 namespace KMyMoneyRegister 0039 { 0040 class TypeGroupMarkerPrivate : public GroupMarkerPrivate 0041 { 0042 public: 0043 eRegister::CashFlowDirection m_dir; 0044 }; 0045 } 0046 0047 TypeGroupMarker::TypeGroupMarker(KMyMoneyRegister::Register* parent, eRegister::CashFlowDirection dir, Account::Type accType) : 0048 GroupMarker(*new TypeGroupMarkerPrivate, parent, QString()) 0049 { 0050 Q_D(TypeGroupMarker); 0051 d->m_dir = dir; 0052 switch (dir) { 0053 case eRegister::CashFlowDirection::Deposit: 0054 d->m_txt = i18nc("Deposits onto account", "Deposits"); 0055 if (accType == Account::Type::CreditCard) { 0056 d->m_txt = i18nc("Payments towards credit card", "Payments"); 0057 } 0058 break; 0059 case eRegister::CashFlowDirection::Payment: 0060 d->m_txt = i18nc("Payments made from account", "Payments"); 0061 if (accType == Account::Type::CreditCard) { 0062 d->m_txt = i18nc("Payments made with credit card", "Charges"); 0063 } 0064 break; 0065 default: 0066 qDebug("Unknown CashFlowDirection %d for TypeGroupMarker constructor", (int)dir); 0067 break; 0068 } 0069 } 0070 0071 TypeGroupMarker::~TypeGroupMarker() 0072 { 0073 } 0074 0075 eRegister::CashFlowDirection TypeGroupMarker::sortType() const 0076 { 0077 Q_D(const TypeGroupMarker); 0078 return d->m_dir; 0079 } 0080 0081 PayeeGroupMarker::PayeeGroupMarker(KMyMoneyRegister::Register* parent, const QString& name) : 0082 GroupMarker(parent, name) 0083 { 0084 } 0085 0086 PayeeGroupMarker::~PayeeGroupMarker() 0087 { 0088 } 0089 0090 const QString& PayeeGroupMarker::sortPayee() const 0091 { 0092 Q_D(const GroupMarker); 0093 return d->m_txt; 0094 } 0095 0096 CategoryGroupMarker::CategoryGroupMarker(KMyMoneyRegister::Register* parent, const QString& category) : 0097 GroupMarker(parent, category) 0098 { 0099 } 0100 0101 CategoryGroupMarker::~CategoryGroupMarker() 0102 { 0103 } 0104 0105 const QString& CategoryGroupMarker::sortCategory() const 0106 { 0107 Q_D(const GroupMarker); 0108 return d->m_txt; 0109 } 0110 const QString CategoryGroupMarker::sortSecurity() const 0111 { 0112 Q_D(const GroupMarker); 0113 return d->m_txt; 0114 } 0115 0116 const char* CategoryGroupMarker::className() 0117 { 0118 return "CategoryGroupMarker"; 0119 } 0120 0121 namespace KMyMoneyRegister 0122 { 0123 class ReconcileGroupMarkerPrivate : public GroupMarkerPrivate 0124 { 0125 public: 0126 eMyMoney::Split::State m_state; 0127 }; 0128 } 0129 0130 ReconcileGroupMarker::ReconcileGroupMarker(KMyMoneyRegister::Register* parent, eMyMoney::Split::State state) : 0131 GroupMarker(*new ReconcileGroupMarkerPrivate, parent, QString()) 0132 { 0133 Q_D(ReconcileGroupMarker); 0134 d->m_state = state; 0135 switch (state) { 0136 case eMyMoney::Split::State::NotReconciled: 0137 d->m_txt = i18nc("Reconcile state 'Not reconciled'", "Not reconciled"); 0138 break; 0139 case eMyMoney::Split::State::Cleared: 0140 d->m_txt = i18nc("Reconcile state 'Cleared'", "Cleared"); 0141 break; 0142 case eMyMoney::Split::State::Reconciled: 0143 d->m_txt = i18nc("Reconcile state 'Reconciled'", "Reconciled"); 0144 break; 0145 case eMyMoney::Split::State::Frozen: 0146 d->m_txt = i18nc("Reconcile state 'Frozen'", "Frozen"); 0147 break; 0148 default: 0149 d->m_txt = i18nc("Unknown reconcile state", "Unknown"); 0150 break; 0151 } 0152 } 0153 0154 ReconcileGroupMarker::~ReconcileGroupMarker() 0155 { 0156 } 0157 0158 eMyMoney::Split::State ReconcileGroupMarker::sortReconcileState() const 0159 { 0160 Q_D(const ReconcileGroupMarker); 0161 return d->m_state; 0162 } 0163 0164 namespace KMyMoneyRegister 0165 { 0166 class RegisterPrivate 0167 { 0168 public: 0169 RegisterPrivate() : 0170 m_selectAnchor(nullptr), 0171 m_focusItem(nullptr), 0172 m_ensureVisibleItem(nullptr), 0173 m_firstItem(nullptr), 0174 m_lastItem(nullptr), 0175 m_firstErroneous(nullptr), 0176 m_lastErroneous(nullptr), 0177 m_rowHeightHint(0), 0178 m_ledgerLensForced(false), 0179 m_selectionMode(QTableWidget::MultiSelection), 0180 m_needResize(true), 0181 m_listsDirty(false), 0182 m_ignoreNextButtonRelease(false), 0183 m_needInitialColumnResize(false), 0184 m_usedWithEditor(false), 0185 m_mouseButton(Qt::MouseButtons(Qt::NoButton)), 0186 m_modifiers(Qt::KeyboardModifiers(Qt::NoModifier)), 0187 m_lastCol(eTransaction::Column::Account), 0188 m_detailsColumnType(eRegister::DetailColumn::PayeeFirst) 0189 { 0190 } 0191 0192 ~RegisterPrivate() 0193 { 0194 } 0195 0196 ItemPtrVector m_items; 0197 QVector<RegisterItem*> m_itemIndex; 0198 RegisterItem* m_selectAnchor; 0199 RegisterItem* m_focusItem; 0200 RegisterItem* m_ensureVisibleItem; 0201 RegisterItem* m_firstItem; 0202 RegisterItem* m_lastItem; 0203 RegisterItem* m_firstErroneous; 0204 RegisterItem* m_lastErroneous; 0205 0206 int m_rowHeightHint; 0207 0208 MyMoneyAccount m_account; 0209 0210 bool m_ledgerLensForced; 0211 QAbstractItemView::SelectionMode m_selectionMode; 0212 0213 bool m_needResize; 0214 bool m_listsDirty; 0215 bool m_ignoreNextButtonRelease; 0216 bool m_needInitialColumnResize; 0217 bool m_usedWithEditor; 0218 Qt::MouseButtons m_mouseButton; 0219 Qt::KeyboardModifiers m_modifiers; 0220 eTransaction::Column m_lastCol; 0221 QList<SortField> m_sortOrder; 0222 QRect m_lastRepaintRect; 0223 eRegister::DetailColumn m_detailsColumnType; 0224 0225 }; 0226 }