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 }