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

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-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "kmymoneyreconcilecombo.h"
0010 
0011 // ----------------------------------------------------------------------------
0012 // QT Includes
0013 
0014 #include <QDebug>
0015 
0016 // ----------------------------------------------------------------------------
0017 // KDE Includes
0018 
0019 #include <KLocalizedString>
0020 
0021 // ----------------------------------------------------------------------------
0022 // Project Includes
0023 
0024 #include "mymoneyenums.h"
0025 
0026 using namespace eMyMoney;
0027 
0028 KMyMoneyReconcileCombo::KMyMoneyReconcileCombo(QWidget* w) :
0029     KMyMoneyMVCCombo(false, w)
0030 {
0031     // add the items in reverse order of appearance (see KMyMoneySelector::newItem() for details)
0032     addItem(i18n("Reconciled"), QVariant("R"));
0033     addItem(i18nc("Reconciliation state 'Cleared'", "Cleared"), QVariant("C"));
0034     addItem(i18n("Not reconciled"), QVariant(" "));
0035     addItem(" ", QVariant("U"));
0036 
0037     connect(this, &KMyMoneyMVCCombo::itemSelected, this, &KMyMoneyReconcileCombo::slotSetState);
0038 }
0039 
0040 KMyMoneyReconcileCombo::~KMyMoneyReconcileCombo()
0041 {
0042 }
0043 
0044 void KMyMoneyReconcileCombo::slotSetState(const QString& state)
0045 {
0046     setSelectedItem(state);
0047 }
0048 
0049 void KMyMoneyReconcileCombo::removeDontCare()
0050 {
0051     //Remove unknown state
0052     removeItem(3);
0053 }
0054 
0055 void KMyMoneyReconcileCombo::setState(Split::State state)
0056 {
0057     QString id;
0058 
0059     switch (state) {
0060     case Split::State::NotReconciled:
0061         id = ' ';
0062         break;
0063     case Split::State::Cleared:
0064         id = 'C';
0065         break;
0066     case Split::State::Reconciled:
0067         id = 'R';
0068         break;
0069     case Split::State::Frozen:
0070         id = 'F';
0071         break;
0072     case Split::State::Unknown:
0073         id = 'U';
0074         break;
0075     default:
0076         qDebug() << "Unknown reconcile state '" << (int)state << "' in KMyMoneyReconcileCombo::setState()\n";
0077         break;
0078     }
0079     setSelectedItem(id);
0080 }
0081 
0082 Split::State KMyMoneyReconcileCombo::state() const
0083 {
0084     Split::State state = Split::State::NotReconciled;
0085 
0086     auto dataVariant = itemData(currentIndex());
0087     QString dataVal;
0088     if (dataVariant.isValid())
0089         dataVal = dataVariant.toString();
0090     else
0091         return state;
0092 
0093     if (!dataVal.isEmpty()) {
0094         if (dataVal == "C")
0095             state = Split::State::Cleared;
0096         if (dataVal == "R")
0097             state = Split::State::Reconciled;
0098         if (dataVal == "F")
0099             state = Split::State::Frozen;
0100         if (dataVal == "U")
0101             state = Split::State::Unknown;
0102     }
0103     return state;
0104 }