File indexing completed on 2024-05-19 05:06:49
0001 /* 0002 SPDX-FileCopyrightText: 2000-2004 Michael Edwardes <mte@users.sourceforge.net> 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 "editpersonaldatadlg.h" 0008 0009 // ---------------------------------------------------------------------------- 0010 // QT Includes 0011 0012 #include <QPushButton> 0013 0014 // ---------------------------------------------------------------------------- 0015 // KDE Headers 0016 0017 #include <KMessageBox> 0018 #include <KLocalizedString> 0019 0020 // ---------------------------------------------------------------------------- 0021 // Project Includes 0022 #include "mymoneycontact.h" 0023 #include "ui_editpersonaldatadlg.h" 0024 0025 class EditPersonalDataDlgPrivate 0026 { 0027 Q_DISABLE_COPY(EditPersonalDataDlgPrivate) 0028 Q_DECLARE_PUBLIC(EditPersonalDataDlg) 0029 0030 public: 0031 explicit EditPersonalDataDlgPrivate(EditPersonalDataDlg *qq) : 0032 q_ptr(qq), 0033 ui(new Ui::EditPersonalDataDlg), 0034 m_contact(nullptr) 0035 { 0036 } 0037 0038 ~EditPersonalDataDlgPrivate() 0039 { 0040 delete m_contact; 0041 delete ui; 0042 } 0043 0044 void init(const QString& title) 0045 { 0046 Q_Q(EditPersonalDataDlg); 0047 m_contact = new MyMoneyContact(q); 0048 ui->setupUi(q); 0049 q->setModal(true); 0050 0051 if (!title.isEmpty()) 0052 q->setWindowTitle(title); 0053 0054 ui->kabcBtn->setEnabled(m_contact->ownerExists()); 0055 ui->userNameEdit->setFocus(); 0056 0057 q->connect(ui->buttonBox, &QDialogButtonBox::rejected, q, &QDialog::reject); 0058 q->connect(ui->buttonBox, &QDialogButtonBox::accepted, q, &EditPersonalDataDlg::okClicked); 0059 q->connect(ui->kabcBtn, &QAbstractButton::clicked, q, &EditPersonalDataDlg::loadFromAddressBook); 0060 } 0061 0062 EditPersonalDataDlg *q_ptr; 0063 Ui::EditPersonalDataDlg *ui; 0064 MyMoneyContact *m_contact; 0065 QString userNameText; 0066 QString userStreetText; 0067 QString userTownText; 0068 QString userCountyText; 0069 QString userPostcodeText; 0070 QString userTelephoneText; 0071 QString userEmailText; 0072 }; 0073 0074 0075 EditPersonalDataDlg::EditPersonalDataDlg(QWidget *parent, const QString& title) : 0076 QDialog(parent), 0077 d_ptr(new EditPersonalDataDlgPrivate(this)) 0078 { 0079 Q_D(EditPersonalDataDlg); 0080 d->init(title); 0081 } 0082 0083 EditPersonalDataDlg::EditPersonalDataDlg(QString userName, 0084 QString userStreet, 0085 QString userTown, 0086 QString userCounty, 0087 QString userPostcode, 0088 QString userTelephone, 0089 QString userEmail, 0090 QWidget *parent, 0091 const QString& title) : 0092 QDialog(parent), 0093 d_ptr(new EditPersonalDataDlgPrivate(this)) 0094 { 0095 Q_D(EditPersonalDataDlg); 0096 d->init(title); 0097 d->ui->userNameEdit->setText(userName); 0098 d->ui->streetEdit->setText(userStreet); 0099 d->ui->townEdit->setText(userTown); 0100 d->ui->countyEdit->setText(userCounty); 0101 d->ui->postcodeEdit->setText(userPostcode); 0102 d->ui->telephoneEdit->setText(userTelephone); 0103 d->ui->emailEdit->setText(userEmail); 0104 } 0105 0106 QString EditPersonalDataDlg::userName() const 0107 { 0108 Q_D(const EditPersonalDataDlg); 0109 return d->userNameText; 0110 } 0111 0112 QString EditPersonalDataDlg::userStreet() const 0113 { 0114 Q_D(const EditPersonalDataDlg); 0115 return d->userStreetText; 0116 } 0117 0118 QString EditPersonalDataDlg::userTown() const 0119 { 0120 Q_D(const EditPersonalDataDlg); 0121 return d->userTownText; 0122 } 0123 0124 QString EditPersonalDataDlg::userCountry() const 0125 { 0126 Q_D(const EditPersonalDataDlg); 0127 return d->userCountyText; 0128 } 0129 0130 QString EditPersonalDataDlg::userPostcode() const 0131 { 0132 Q_D(const EditPersonalDataDlg); 0133 return d->userPostcodeText; 0134 } 0135 0136 QString EditPersonalDataDlg::userTelephone() const 0137 { 0138 Q_D(const EditPersonalDataDlg); 0139 return d->userTelephoneText; 0140 } 0141 0142 QString EditPersonalDataDlg::userEmail() const 0143 { 0144 Q_D(const EditPersonalDataDlg); 0145 return d->userEmailText; 0146 } 0147 0148 EditPersonalDataDlg::~EditPersonalDataDlg() 0149 { 0150 Q_D(EditPersonalDataDlg); 0151 delete d; 0152 } 0153 0154 void EditPersonalDataDlg::okClicked() 0155 { 0156 Q_D(EditPersonalDataDlg); 0157 d->userNameText = d->ui->userNameEdit->text(); 0158 d->userStreetText = d->ui->streetEdit->text(); 0159 d->userTownText = d->ui->townEdit->text(); 0160 d->userCountyText = d->ui->countyEdit->text(); 0161 d->userPostcodeText = d->ui->postcodeEdit->text(); 0162 d->userTelephoneText = d->ui->telephoneEdit->text(); 0163 d->userEmailText = d->ui->emailEdit->text(); 0164 0165 accept(); 0166 } 0167 0168 void EditPersonalDataDlg::loadFromAddressBook() 0169 { 0170 Q_D(EditPersonalDataDlg); 0171 d->ui->userNameEdit->setText(d->m_contact->ownerFullName()); 0172 d->ui->emailEdit->setText(d->m_contact->ownerEmail()); 0173 if (d->ui->emailEdit->text().isEmpty()) { 0174 KMessageBox::error(this, i18n("Unable to load data, because no contact has been associated with the owner of the standard address book."), i18n("Address book import")); 0175 return; 0176 } 0177 d->ui->kabcBtn->setEnabled(false); 0178 connect(d->m_contact, &MyMoneyContact::contactFetched, this, &EditPersonalDataDlg::slotContactFetched); 0179 d->m_contact->fetchContact(d->ui->emailEdit->text()); 0180 } 0181 0182 void EditPersonalDataDlg::slotContactFetched(const ContactData &identity) 0183 { 0184 Q_D(EditPersonalDataDlg); 0185 d->ui->telephoneEdit->setText(identity.phoneNumber); 0186 QString sep; 0187 if (!identity.country.isEmpty() && !identity.region.isEmpty()) 0188 sep = " / "; 0189 d->ui->countyEdit->setText(QString("%1%2%3").arg(identity.country, sep, identity.region)); 0190 d->ui->postcodeEdit->setText(identity.postalCode); 0191 d->ui->townEdit->setText(identity.locality); 0192 d->ui->streetEdit->setText(identity.street); 0193 d->ui->kabcBtn->setEnabled(true); 0194 } 0195