File indexing completed on 2024-05-19 05:06:53

0001 /*
0002     SPDX-FileCopyrightText: 2016-2017 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "splitadjustdialog.h"
0008 #include "ui_splitadjustdialog.h"
0009 
0010 #include <QButtonGroup>
0011 
0012 #include <KLocalizedString>
0013 
0014 class SplitAdjustDialog::Private {
0015 public:
0016     Q_DISABLE_COPY_MOVE(Private)
0017 
0018     Private()
0019         : ui(new Ui_SplitAdjustDialog),
0020           buttonGroup(nullptr)
0021     {}
0022 
0023     ~Private()
0024     {
0025         delete ui;
0026     }
0027     Ui_SplitAdjustDialog* ui;
0028     QButtonGroup* buttonGroup;
0029 };
0030 
0031 SplitAdjustDialog::SplitAdjustDialog(QWidget* parent, Qt::WindowFlags f)
0032     : QDialog(parent, f)
0033     , d(new Private)
0034 {
0035     d->ui->setupUi(this);
0036     d->buttonGroup = new QButtonGroup(this);
0037     d->buttonGroup->addButton(d->ui->continueBtn, SplitAdjustContinue);
0038     d->buttonGroup->addButton(d->ui->changeBtn, SplitAdjustChange);
0039     d->buttonGroup->addButton(d->ui->distributeBtn, SplitAdjustDistribute);
0040     d->buttonGroup->addButton(d->ui->leaveBtn, SplitAdjustLeaveAsIs);
0041 }
0042 
0043 SplitAdjustDialog::~SplitAdjustDialog()
0044 {
0045 }
0046 
0047 SplitAdjustDialog::Options SplitAdjustDialog::selectedOption() const
0048 {
0049     return static_cast<Options>(d->buttonGroup->checkedId());
0050 }
0051 
0052 void SplitAdjustDialog::setValues(QString transactionSum, QString splitSum, QString diff, int splitCount)
0053 {
0054     // now modify the text items of the dialog to contain the correct values
0055     QString q = i18n("The total amount of this transaction is %1 while "
0056                      "the sum of the splits is %2. The remaining %3 are "
0057                      "unassigned.", transactionSum, splitSum, diff);
0058     d->ui->explanation->setText(q);
0059 
0060     q = i18n("Change &total amount of transaction to %1.", splitSum);
0061     d->ui->changeBtn->setText(q);
0062 
0063     q = i18n("&Distribute difference of %1 among all splits.", diff);
0064     d->ui->distributeBtn->setText(q);
0065     // FIXME remove the following line once distribution among
0066     //       all splits is implemented
0067     d->ui->distributeBtn->hide();
0068 
0069     // if we have only two splits left, we don't allow leaving sth. unassigned.
0070     if (splitCount < 3) {
0071         q = i18n("&Leave total amount of transaction at %1.", transactionSum);
0072     } else {
0073         q = i18n("&Leave %1 unassigned.", diff);
0074     }
0075     d->ui->leaveBtn->setText(q);
0076 }