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