File indexing completed on 2024-05-12 16:44:01

0001 /*
0002     SPDX-FileCopyrightText: 2009-2010 Cristian Oneț <onet.cristian@gmail.com>
0003     SPDX-FileCopyrightText: 2009-2010 Alvaro Soliverez <asoliverez@gmail.com>
0004     SPDX-FileCopyrightText: 2011-2017 Thomas Baumgart <tbaumgart@kde.org>
0005     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "kmymoneycashflowcombo.h"
0010 #include "kmymoneymvccombo_p.h"
0011 
0012 // ----------------------------------------------------------------------------
0013 // QT Includes
0014 
0015 // ----------------------------------------------------------------------------
0016 // KDE Includes
0017 
0018 #include <KLocalizedString>
0019 
0020 // ----------------------------------------------------------------------------
0021 // Project Includes
0022 
0023 #include "mymoneyenums.h"
0024 #include "widgetenums.h"
0025 
0026 using namespace eWidgets;
0027 using namespace eMyMoney;
0028 
0029 class KMyMoneyCashFlowComboPrivate : public KMyMoneyMVCComboPrivate
0030 {
0031     Q_DISABLE_COPY(KMyMoneyCashFlowComboPrivate)
0032 
0033 public:
0034     KMyMoneyCashFlowComboPrivate() :
0035         m_dir(eRegister::CashFlowDirection::Unknown)
0036     {
0037     }
0038 
0039     eRegister::CashFlowDirection   m_dir;
0040 };
0041 
0042 KMyMoneyCashFlowCombo::KMyMoneyCashFlowCombo(Account::Type accountType, QWidget* parent) :
0043     KMyMoneyMVCCombo(*new KMyMoneyCashFlowComboPrivate, false, parent)
0044 {
0045     addItem(" ", QVariant((int)eRegister::CashFlowDirection::Unknown));
0046     if (accountType == Account::Type::Income || accountType == Account::Type::Expense) {
0047         // this is used for income/expense accounts to just show the reverse sense
0048         addItem(i18nc("Activity for income categories", "Received"), QVariant((int)eRegister::CashFlowDirection::Payment));
0049         addItem(i18nc("Activity for expense categories", "Paid"), QVariant((int)eRegister::CashFlowDirection::Deposit));
0050     } else {
0051         addItem(i18nc("Payee", "Pay to"), QVariant((int)eRegister::CashFlowDirection::Payment));
0052         addItem(i18nc("Payer", "From"), QVariant((int)eRegister::CashFlowDirection::Deposit));
0053     }
0054 
0055     connect(this, &KMyMoneyMVCCombo::itemSelected, this, &KMyMoneyCashFlowCombo::slotSetDirection);
0056 }
0057 
0058 KMyMoneyCashFlowCombo::~KMyMoneyCashFlowCombo()
0059 {
0060 }
0061 
0062 void KMyMoneyCashFlowCombo::setDirection(eRegister::CashFlowDirection dir)
0063 {
0064     Q_D(KMyMoneyCashFlowCombo);
0065     d->m_dir = dir;
0066     QString num;
0067     setSelectedItem(num.setNum((int)dir));
0068 }
0069 
0070 void KMyMoneyCashFlowCombo::reverseDirection()
0071 {
0072     Q_D(KMyMoneyCashFlowCombo);
0073     switch (d->m_dir) {
0074     case eWidgets::eRegister::CashFlowDirection::Deposit:
0075         setDirection(eWidgets::eRegister::CashFlowDirection::Payment);
0076         break;
0077     case eWidgets::eRegister::CashFlowDirection::Payment:
0078         setDirection(eWidgets::eRegister::CashFlowDirection::Deposit);
0079         break;
0080     default:
0081         break;
0082     }
0083 }
0084 
0085 eRegister::CashFlowDirection KMyMoneyCashFlowCombo::direction() const
0086 {
0087     Q_D(const KMyMoneyCashFlowCombo);
0088     return d->m_dir;
0089 }
0090 
0091 void KMyMoneyCashFlowCombo::slotSetDirection(const QString& id)
0092 {
0093     Q_D(KMyMoneyCashFlowCombo);
0094     QString num;
0095     for (int i = (int)eRegister::CashFlowDirection::Deposit; i <= (int)eRegister::CashFlowDirection::Unknown; ++i) {
0096         num.setNum(i);
0097         if (num == id) {
0098             d->m_dir = static_cast<eRegister::CashFlowDirection>(i);
0099             break;
0100         }
0101     }
0102     emit directionSelected(d->m_dir);
0103     update();
0104 }
0105 
0106 void KMyMoneyCashFlowCombo::removeDontCare()
0107 {
0108     removeItem(findData(QVariant((int)eRegister::CashFlowDirection::Unknown), Qt::UserRole, Qt::MatchExactly));
0109 }