File indexing completed on 2024-06-16 04:46:58
0001 /* 0002 SPDX-FileCopyrightText: 2014-2015 Christian Dávid <christian-david@web.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "ibanbicitemedit.h" 0007 #include "ui_ibanbicitemedit.h" 0008 0009 #include "payeeidentifier/ibanbic/ibanbic.h" 0010 #include "payeeidentifier/payeeidentifiertyped.h" 0011 0012 struct ibanBicItemEdit::Private { 0013 Ui::ibanBicItemEdit* ui; 0014 payeeIdentifier m_identifier; 0015 }; 0016 0017 ibanBicItemEdit::ibanBicItemEdit(QWidget* parent) 0018 : QWidget(parent), 0019 d(new Private) 0020 { 0021 d->ui = new Ui::ibanBicItemEdit; 0022 d->ui->setupUi(this); 0023 setFocusProxy(d->ui->ibanEdit); 0024 0025 connect(d->ui->ibanEdit, &KIbanLineEdit::textChanged, this, &ibanBicItemEdit::updateIdentifier); 0026 connect(d->ui->bicEdit, &KBicEdit::textChanged, this, &ibanBicItemEdit::updateIdentifier); 0027 0028 connect(d->ui->ibanEdit, &KIbanLineEdit::textChanged, this, &ibanBicItemEdit::ibanChanged); 0029 connect(d->ui->bicEdit, &KBicEdit::textChanged, this, &ibanBicItemEdit::bicChanged); 0030 0031 connect(d->ui->ibanEdit, &KIbanLineEdit::returnKeyPressed, this, &ibanBicItemEdit::editFinished); 0032 connect(d->ui->bicEdit, &KBicEdit::returnKeyPressed, this, &ibanBicItemEdit::editFinished); 0033 } 0034 0035 void ibanBicItemEdit::editFinished() 0036 { 0037 Q_EMIT commitData(this); 0038 Q_EMIT closeEditor(this); 0039 } 0040 0041 payeeIdentifier ibanBicItemEdit::identifier() const 0042 { 0043 return d->m_identifier; 0044 } 0045 0046 QString ibanBicItemEdit::bic() const 0047 { 0048 return d->ui->bicEdit->text(); 0049 } 0050 0051 QString ibanBicItemEdit::iban() const 0052 { 0053 return d->ui->ibanEdit->text(); 0054 } 0055 0056 void ibanBicItemEdit::setIdentifier(const payeeIdentifier& ident) 0057 { 0058 try { 0059 payeeIdentifierTyped<payeeIdentifiers::ibanBic> identTyped(ident); 0060 d->ui->bicEdit->setText(identTyped->storedBic()); 0061 d->ui->ibanEdit->setText(identTyped->paperformatIban()); 0062 d->m_identifier = ident; 0063 } catch (const payeeIdentifier::empty &) { 0064 } catch (const payeeIdentifier::badCast &) { 0065 } 0066 } 0067 0068 void ibanBicItemEdit::setBic(const QString& bic) 0069 { 0070 d->ui->bicEdit->setText(bic); 0071 } 0072 0073 void ibanBicItemEdit::setIban(const QString& iban) 0074 { 0075 d->ui->ibanEdit->setText(payeeIdentifiers::ibanBic::ibanToPaperformat(iban)); 0076 } 0077 0078 void ibanBicItemEdit::updateIdentifier() 0079 { 0080 if (d->m_identifier.isNull()) 0081 d->m_identifier = payeeIdentifier(d->m_identifier.id(), new payeeIdentifiers::ibanBic); 0082 0083 const QString iban = payeeIdentifiers::ibanBic::ibanToElectronic(d->ui->ibanEdit->text()); 0084 const QString bic = d->ui->bicEdit->text(); 0085 bool changed = false; 0086 0087 payeeIdentifierTyped<payeeIdentifiers::ibanBic> ident(d->m_identifier); 0088 if (ident->storedBic() != bic) { 0089 ident->setBic(bic); 0090 changed = true; 0091 } 0092 0093 if (ident->electronicIban() != iban) { 0094 ident->setElectronicIban(iban); 0095 changed = true; 0096 } 0097 d->m_identifier = ident; 0098 0099 if (changed) { 0100 Q_EMIT identifierChanged(d->m_identifier); 0101 Q_EMIT commitData(this); 0102 } 0103 }