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 }