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 }