File indexing completed on 2024-05-12 16:43:54

0001 /*
0002     SPDX-FileCopyrightText: 2015 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "newtransactionform.h"
0007 
0008 // ----------------------------------------------------------------------------
0009 // QT Includes
0010 
0011 #include <QDate>
0012 
0013 // ----------------------------------------------------------------------------
0014 // KDE Includes
0015 
0016 // ----------------------------------------------------------------------------
0017 // Project Includes
0018 
0019 #include "models.h"
0020 #include "ledgermodel.h"
0021 #include "modelenums.h"
0022 #include "ui_newtransactionform.h"
0023 
0024 using namespace eLedgerModel;
0025 
0026 class NewTransactionForm::Private
0027 {
0028 public:
0029     Private()
0030         : ui(new Ui_NewTransactionForm)
0031     {
0032     }
0033 
0034     ~Private()
0035     {
0036         delete ui;
0037     }
0038 
0039     Ui_NewTransactionForm*      ui;
0040     QString                     transactionSplitId;
0041 };
0042 
0043 
0044 NewTransactionForm::NewTransactionForm(QWidget* parent)
0045     : QFrame(parent)
0046     , d(new Private)
0047 {
0048     d->ui->setupUi(this);
0049 }
0050 
0051 NewTransactionForm::~NewTransactionForm()
0052 {
0053     delete d;
0054 }
0055 
0056 void NewTransactionForm::showTransaction(const QString& transactionSplitId)
0057 {
0058     d->transactionSplitId = transactionSplitId;
0059 
0060     const QAbstractItemModel* model = Models::instance()->ledgerModel();
0061     const QModelIndexList indexes = model->match(model->index(0, 0, QModelIndex()),
0062                                     (int)Role::TransactionSplitId,
0063                                     QVariant(transactionSplitId),
0064                                     1,
0065                                     Qt::MatchFlags(Qt::MatchExactly | Qt::MatchCaseSensitive));
0066     if(indexes.count() == 1) {
0067         const QModelIndex index = indexes.first();
0068         d->ui->dateEdit->setText(QLocale().toString(model->data(index, (int)Role::PostDate).toDate(),
0069                                  QLocale::ShortFormat));
0070         d->ui->payeeEdit->setText(model->data(index, (int)Role::PayeeName).toString());
0071         d->ui->memoEdit->clear();
0072         d->ui->memoEdit->insertPlainText(model->data(index, (int)Role::Memo).toString());
0073         d->ui->memoEdit->moveCursor(QTextCursor::Start);
0074         d->ui->memoEdit->ensureCursorVisible();
0075         d->ui->accountEdit->setText(model->data(index, (int)Role::CounterAccount).toString());
0076         d->ui->statusEdit->setText(model->data(index, (int)Role::ReconciliationLong).toString());
0077         QString amount = QString("%1 %2").arg(model->data(index, (int)Role::ShareAmount).toString())
0078                          .arg(model->data(index, (int)Role::ShareAmountSuffix).toString());
0079         d->ui->amountEdit->setText(amount);
0080         d->ui->numberEdit->setText(model->data(index, (int)Role::Number).toString());
0081     }
0082 }
0083 
0084 void NewTransactionForm::modelDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight)
0085 {
0086     const QAbstractItemModel * const model = topLeft.model();
0087     const int startRow = topLeft.row();
0088     const int lastRow = bottomRight.row();
0089     for(int row = startRow; row <= lastRow; ++row) {
0090         QModelIndex index = model->index(row, 0);
0091         if(model->data(index, (int)eLedgerModel::Role::TransactionSplitId).toString() == d->transactionSplitId) {
0092             showTransaction(d->transactionSplitId);
0093             break;
0094         }
0095     }
0096 }