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 }