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

0001 /*
0002     SPDX-FileCopyrightText: 2005 Andreas Nicolai <Andreas.Nicolai@gmx.net>
0003     SPDX-FileCopyrightText: 2007-2008 Thomas Baumgart <tbaumgart@kde.org>
0004     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "kpayeereassigndlg.h"
0009 
0010 // ----------------------------------------------------------------------------
0011 // QT Includes
0012 
0013 #include <QList>
0014 #include <QLineEdit>
0015 #include <QPushButton>
0016 
0017 // ----------------------------------------------------------------------------
0018 // KDE Includes
0019 
0020 #include <KLazyLocalizedString>
0021 #include <KLocalizedString>
0022 #include <KMessageBox>
0023 #include <kguiutils.h>
0024 
0025 // ----------------------------------------------------------------------------
0026 // Project Includes
0027 
0028 #include "ui_kpayeereassigndlg.h"
0029 
0030 #include <kmymoneymvccombo.h>
0031 #include <mymoneypayee.h>
0032 
0033 /** This lookup table needs to be in sync with KPayeeReassignDlg::OperationType enum */
0034 static const char* labelText[KPayeeReassignDlg::TypeCount] = {
0035     kli18n("To be able to merge previous selected payees, please select a payee from the list below or create a new one.").untranslatedText(),
0036     kli18n("The transactions associated with the selected payees need to be re-assigned to a different payee before the selected payees can be deleted. Please "
0037            "select a payee from the list below.")
0038         .untranslatedText(),
0039 };
0040 
0041 class KPayeeReassignDlgPrivate
0042 {
0043     Q_DISABLE_COPY(KPayeeReassignDlgPrivate)
0044 
0045 public:
0046     KPayeeReassignDlgPrivate() :
0047         ui(new Ui::KPayeeReassignDlg),
0048         m_type(KPayeeReassignDlg::OperationType::TypeMerge)
0049     {
0050     }
0051 
0052     ~KPayeeReassignDlgPrivate()
0053     {
0054         delete ui;
0055     }
0056 
0057     Ui::KPayeeReassignDlg *ui;
0058     KPayeeReassignDlg::OperationType m_type;
0059 };
0060 
0061 KPayeeReassignDlg::KPayeeReassignDlg(KPayeeReassignDlg::OperationType type, QWidget* parent) :
0062     QDialog(parent),
0063     d_ptr(new KPayeeReassignDlgPrivate)
0064 {
0065     Q_D(KPayeeReassignDlg);
0066     d->ui->setupUi(this);
0067     d->m_type = type;
0068     auto mandatory = new KMandatoryFieldGroup(this);
0069     mandatory->add(d->ui->payeeCombo);
0070     mandatory->setOkButton(d->ui->buttonBox->button(QDialogButtonBox::Ok));
0071     d->ui->textLabel1->setText(i18n(labelText[d->m_type]));
0072 }
0073 
0074 KPayeeReassignDlg::~KPayeeReassignDlg()
0075 {
0076     Q_D(KPayeeReassignDlg);
0077     delete d;
0078 }
0079 
0080 QString KPayeeReassignDlg::show(const QList<MyMoneyPayee>& payeeslist)
0081 {
0082     Q_D(KPayeeReassignDlg);
0083     if (payeeslist.isEmpty())
0084         return QString(); // no payee available? nothing can be selected...
0085 
0086     d->ui->payeeCombo->loadPayees(payeeslist);
0087 
0088     // execute dialog and if aborted, return empty string
0089     if (this->exec() == QDialog::Rejected)
0090         return QString();
0091 
0092     // allow to return the text (new payee) if type is Merge
0093     if (d->m_type == TypeMerge && d->ui->payeeCombo->selectedItem().isEmpty())
0094         return d->ui->payeeCombo->lineEdit()->text();
0095 
0096     // otherwise return index of selected payee
0097     return d->ui->payeeCombo->selectedItem();
0098 }
0099 
0100 
0101 bool KPayeeReassignDlg::addToMatchList() const
0102 {
0103     Q_D(const KPayeeReassignDlg);
0104     return d->ui->m_copyToMatchList->isChecked();
0105 }
0106 
0107 void KPayeeReassignDlg::accept()
0108 {
0109     Q_D(KPayeeReassignDlg);
0110     // force update of d->ui->payeeCombo
0111     d->ui->buttonBox->button(QDialogButtonBox::Ok)->setFocus();
0112 
0113     if (d->m_type == TypeDelete && d->ui->payeeCombo->selectedItem().isEmpty()) {
0114         KMessageBox::information(this, i18n("This dialog does not allow new payees to be created. Please pick a payee from the list."), i18n("Payee creation"));
0115     } else {
0116         QDialog::accept();
0117     }
0118 }