1 /*
2 * Copyright 2000-2004 Michael Edwardes <mte@users.sourceforge.net>
3 * Copyright 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation; either version 2 of
8 * the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include "editpersonaldatadlg.h"
20
21 // ----------------------------------------------------------------------------
22 // QT Includes
23
24 #include <QPushButton>
25
26 // ----------------------------------------------------------------------------
27 // KDE Headers
28
29 #include <KMessageBox>
30 #include <KLocalizedString>
31
32 // ----------------------------------------------------------------------------
33 // Project Includes
34 #include "mymoneycontact.h"
35 #include "ui_editpersonaldatadlg.h"
36
37 class EditPersonalDataDlgPrivate
38 {
39 Q_DISABLE_COPY(EditPersonalDataDlgPrivate)
40 Q_DECLARE_PUBLIC(EditPersonalDataDlg)
41
42 public:
EditPersonalDataDlgPrivate(EditPersonalDataDlg * qq)43 explicit EditPersonalDataDlgPrivate(EditPersonalDataDlg *qq) :
44 q_ptr(qq),
45 ui(new Ui::EditPersonalDataDlg),
46 m_contact(nullptr)
47 {
48 }
49
~EditPersonalDataDlgPrivate()50 ~EditPersonalDataDlgPrivate()
51 {
52 delete m_contact;
53 delete ui;
54 }
55
init(const QString & title)56 void init(const QString& title)
57 {
58 Q_Q(EditPersonalDataDlg);
59 m_contact = new MyMoneyContact(q);
60 ui->setupUi(q);
61 q->setModal(true);
62
63 if (!title.isEmpty())
64 q->setWindowTitle(title);
65
66 ui->kabcBtn->setEnabled(m_contact->ownerExists());
67 ui->userNameEdit->setFocus();
68
69 q->connect(ui->buttonBox, &QDialogButtonBox::rejected, q, &QDialog::reject);
70 q->connect(ui->buttonBox, &QDialogButtonBox::accepted, q, &EditPersonalDataDlg::okClicked);
71 q->connect(ui->kabcBtn, &QAbstractButton::clicked, q, &EditPersonalDataDlg::loadFromAddressBook);
72 }
73
74 EditPersonalDataDlg *q_ptr;
75 Ui::EditPersonalDataDlg *ui;
76 MyMoneyContact *m_contact;
77 QString userNameText;
78 QString userStreetText;
79 QString userTownText;
80 QString userCountyText;
81 QString userPostcodeText;
82 QString userTelephoneText;
83 QString userEmailText;
84 };
85
86
EditPersonalDataDlg(QWidget * parent,const QString & title)87 EditPersonalDataDlg::EditPersonalDataDlg(QWidget *parent, const QString& title) :
88 QDialog(parent),
89 d_ptr(new EditPersonalDataDlgPrivate(this))
90 {
91 Q_D(EditPersonalDataDlg);
92 d->init(title);
93 }
94
EditPersonalDataDlg(QString userName,QString userStreet,QString userTown,QString userCounty,QString userPostcode,QString userTelephone,QString userEmail,QWidget * parent,const QString & title)95 EditPersonalDataDlg::EditPersonalDataDlg(QString userName,
96 QString userStreet,
97 QString userTown,
98 QString userCounty,
99 QString userPostcode,
100 QString userTelephone,
101 QString userEmail,
102 QWidget *parent,
103 const QString& title) :
104 QDialog(parent),
105 d_ptr(new EditPersonalDataDlgPrivate(this))
106 {
107 Q_D(EditPersonalDataDlg);
108 d->init(title);
109 d->ui->userNameEdit->setText(userName);
110 d->ui->streetEdit->setText(userStreet);
111 d->ui->townEdit->setText(userTown);
112 d->ui->countyEdit->setText(userCounty);
113 d->ui->postcodeEdit->setText(userPostcode);
114 d->ui->telephoneEdit->setText(userTelephone);
115 d->ui->emailEdit->setText(userEmail);
116 }
117
userName() const118 QString EditPersonalDataDlg::userName() const
119 {
120 Q_D(const EditPersonalDataDlg);
121 return d->userNameText;
122 }
123
userStreet() const124 QString EditPersonalDataDlg::userStreet() const
125 {
126 Q_D(const EditPersonalDataDlg);
127 return d->userStreetText;
128 }
129
userTown() const130 QString EditPersonalDataDlg::userTown() const
131 {
132 Q_D(const EditPersonalDataDlg);
133 return d->userTownText;
134 }
135
userCountry() const136 QString EditPersonalDataDlg::userCountry() const
137 {
138 Q_D(const EditPersonalDataDlg);
139 return d->userCountyText;
140 }
141
userPostcode() const142 QString EditPersonalDataDlg::userPostcode() const
143 {
144 Q_D(const EditPersonalDataDlg);
145 return d->userPostcodeText;
146 }
147
userTelephone() const148 QString EditPersonalDataDlg::userTelephone() const
149 {
150 Q_D(const EditPersonalDataDlg);
151 return d->userTelephoneText;
152 }
153
userEmail() const154 QString EditPersonalDataDlg::userEmail() const
155 {
156 Q_D(const EditPersonalDataDlg);
157 return d->userEmailText;
158 }
159
~EditPersonalDataDlg()160 EditPersonalDataDlg::~EditPersonalDataDlg()
161 {
162 Q_D(EditPersonalDataDlg);
163 delete d;
164 }
165
okClicked()166 void EditPersonalDataDlg::okClicked()
167 {
168 Q_D(EditPersonalDataDlg);
169 d->userNameText = d->ui->userNameEdit->text();
170 d->userStreetText = d->ui->streetEdit->text();
171 d->userTownText = d->ui->townEdit->text();
172 d->userCountyText = d->ui->countyEdit->text();
173 d->userPostcodeText = d->ui->postcodeEdit->text();
174 d->userTelephoneText = d->ui->telephoneEdit->text();
175 d->userEmailText = d->ui->emailEdit->text();
176
177 accept();
178 }
179
loadFromAddressBook()180 void EditPersonalDataDlg::loadFromAddressBook()
181 {
182 Q_D(EditPersonalDataDlg);
183 d->ui->userNameEdit->setText(d->m_contact->ownerFullName());
184 d->ui->emailEdit->setText(d->m_contact->ownerEmail());
185 if (d->ui->emailEdit->text().isEmpty()) {
186 KMessageBox::sorry(this, i18n("Unable to load data, because no contact has been associated with the owner of the standard address book."), i18n("Address book import"));
187 return;
188 }
189 d->ui->kabcBtn->setEnabled(false);
190 connect(d->m_contact, &MyMoneyContact::contactFetched, this, &EditPersonalDataDlg::slotContactFetched);
191 d->m_contact->fetchContact(d->ui->emailEdit->text());
192 }
193
slotContactFetched(const ContactData & identity)194 void EditPersonalDataDlg::slotContactFetched(const ContactData &identity)
195 {
196 Q_D(EditPersonalDataDlg);
197 d->ui->telephoneEdit->setText(identity.phoneNumber);
198 QString sep;
199 if (!identity.country.isEmpty() && !identity.region.isEmpty())
200 sep = " / ";
201 d->ui->countyEdit->setText(QString("%1%2%3").arg(identity.country, sep, identity.region));
202 d->ui->postcodeEdit->setText(identity.postalCode);
203 d->ui->townEdit->setText(identity.locality);
204 d->ui->streetEdit->setText(identity.street);
205 d->ui->kabcBtn->setEnabled(true);
206 }
207
208