@@ -1,438 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * Authors:
5− * Guenter Schwann <guenter.schwann@canonical.com>
6− *
7− * This program is free software; you can redistribute it and/or modify
8− * it under the terms of the GNU General Public License as published by
9− * the Free Software Foundation; version 3.
10− *
11− * This program is distributed in the hope that it will be useful,
12− * but WITHOUT ANY WARRANTY; without even the implied warranty of
13− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14− * GNU General Public License for more details.
15− *
16− * You should have received a copy of the GNU General Public License
17− * along with this program. If not, see <http://www.gnu.org/licenses/>.
18− */
19−
20−#include "peoplepreviewdata.h"
21−
22−#include <QDebug>
23−
24−#include "lens.h"
25−
26−static void phoneAppend(QQmlListProperty<PeoplePhoneData> *property, PeoplePhoneData *val)
27−{
28− Q_UNUSED(val);
29− Q_UNUSED(property);
30−}
31−static PeoplePhoneData *phoneAt(QQmlListProperty<PeoplePhoneData> *property, int index)
32−{
33− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
34− return d->phoneNumberList().at(index);
35−}
36−static int phoneCount(QQmlListProperty<PeoplePhoneData> *property)
37−{
38− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
39− return d->phoneNumberList().count();
40−}
41−static void phoneClear(QQmlListProperty<PeoplePhoneData> *property)
42−{
43− Q_UNUSED(property);
44−}
45−
46−static void emailAppend(QQmlListProperty<PeopleAddressData> *property, PeopleAddressData *val)
47−{
48− Q_UNUSED(val);
49− Q_UNUSED(property);
50−}
51−static PeopleAddressData *emailAt(QQmlListProperty<PeopleAddressData> *property, int index)
52−{
53− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
54− return d->emailAddressesList().at(index);
55−}
56−static int emailCount(QQmlListProperty<PeopleAddressData> *property)
57−{
58− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
59− return d->emailAddressesList().count();
60−}
61−static void emailClear(QQmlListProperty<PeopleAddressData> *property)
62−{
63− Q_UNUSED(property);
64−}
65−
66−static void imAppend(QQmlListProperty<PeopleIMData> *property, PeopleIMData *val)
67−{
68− Q_UNUSED(val);
69− Q_UNUSED(property);
70−}
71−static PeopleIMData *imAt(QQmlListProperty<PeopleIMData> *property, int index)
72−{
73− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
74− return d->imAccountsList().at(index);
75−}
76−static int imCount(QQmlListProperty<PeopleIMData> *property)
77−{
78− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
79− return d->imAccountsList().count();
80−}
81−static void imClear(QQmlListProperty<PeopleIMData> *property)
82−{
83− Q_UNUSED(property);
84−}
85−
86−static void addressAppend(QQmlListProperty<PeopleAddressData> *property, PeopleAddressData *val)
87−{
88− Q_UNUSED(val);
89− Q_UNUSED(property);
90−}
91−static PeopleAddressData *addressAt(QQmlListProperty<PeopleAddressData> *property, int index)
92−{
93− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
94− return d->addressesList().at(index);
95−}
96−static int addressCount(QQmlListProperty<PeopleAddressData> *property)
97−{
98− PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
99− return d->addressesList().count();
100−}
101−static void addressClear(QQmlListProperty<PeopleAddressData> *property)
102−{
103− Q_UNUSED(property);
104−}
105−
106−
107−using namespace unity;
108−
109−PeoplePreviewData::PeoplePreviewData(QObject *parent)
110−: QObject(parent)
111−, m_lens(0)
112−, m_ready(false)
113−{
114−}
115−
116−PeoplePreviewData::~PeoplePreviewData()
117−{
118− clearData();
119−}
120−
121−Lens *PeoplePreviewData::lens() const
122−{
123− return m_lens;
124−}
125−
126−void PeoplePreviewData::setLens(Lens *lens)
127−{
128− if (lens == m_lens)
129− return;
130−
131− setReady(false);
132−
133− if (m_lensConnection.connected())
134− m_lensConnection.disconnect();
135−
136− m_lens = lens;
137− m_lensConnection = m_lens->unityLens()->preview_ready.connect(
138− sigc::mem_fun(this, &PeoplePreviewData::setUnityPreview));
139− Q_EMIT lensChanged();
140−
141− if (!m_uri.isEmpty() && !m_lens)
142− getPeoplePreview();
143−}
144−
145−QString PeoplePreviewData::uri() const
146−{
147− return m_uri;
148−}
149−
150−void PeoplePreviewData::setUri(const QString &uri)
151−{
152− if (uri == m_uri)
153− return;
154−
155− setReady(false);
156−
157− m_uri = uri;
158− Q_EMIT uriChanged();
159− if (!m_uri.isEmpty() && m_lens)
160− getPeoplePreview();
161−}
162−
163−bool PeoplePreviewData::ready() const
164−{
165− return m_ready;
166−}
167−
168−void PeoplePreviewData::setReady(const bool &ready)
169−{
170− if (ready == m_ready)
171− return;
172−
173− m_ready = ready;
174− Q_EMIT readyChanged();
175−}
176−
177−QString PeoplePreviewData::renderName() const
178−{
179− if (!m_unityPreview)
180− return QLatin1String("");
181−
182− return QString::fromStdString(m_unityPreview->renderer_name());
183−}
184−
185−QString PeoplePreviewData::title() const
186−{
187− if (!m_unityPreview)
188− return QLatin1String("");
189−
190− return QString::fromStdString(m_unityPreview->title());
191−}
192−
193−QString PeoplePreviewData::subTitle() const
194−{
195− if (!m_unityPreview)
196− return QLatin1String("");
197−
198− return QString::fromStdString(m_unityPreview->subtitle());
199−}
200−
201−QString PeoplePreviewData::description() const
202−{
203− if (!m_unityPreview)
204− return QLatin1String("");
205−
206− return QString::fromStdString(m_unityPreview->description());
207−}
208−
209−QString PeoplePreviewData::imageSource() const
210−{
211− if (!m_unityPreview)
212− return QLatin1String("");
213−
214− return QString::fromStdString(m_unityPreview->image_source_uri());
215−}
216−
217−QQmlListProperty<PeoplePhoneData> PeoplePreviewData::phoneNumbers()
218−{
219− return QQmlListProperty<PeoplePhoneData> (this, this,
220− phoneAppend,
221− phoneCount,
222− phoneAt,
223− phoneClear);
224−}
225−
226−QQmlListProperty<PeopleAddressData> PeoplePreviewData::emailAddresses()
227−{
228− return QQmlListProperty<PeopleAddressData> (this, this,
229− emailAppend,
230− emailCount,
231− emailAt,
232− emailClear);
233−}
234−
235−QQmlListProperty<PeopleIMData> PeoplePreviewData::imAccounts()
236−{
237− return QQmlListProperty<PeopleIMData> (this, this,
238− imAppend,
239− imCount,
240− imAt,
241− imClear);
242−}
243−
244−QString PeoplePreviewData::displayName() const
245−{
246− if (!m_unityPreview)
247− return QLatin1String("");
248−
249− return QString::fromStdString(m_unityPreview->display_name());
250−}
251−
252−QString PeoplePreviewData::status() const
253−{
254− if (!m_unityPreview)
255− return QLatin1String("");
256−
257− return QString::fromStdString(m_unityPreview->status());
258−}
259−
260−QString PeoplePreviewData::statusTime() const
261−{
262− if (!m_unityPreview)
263− return QLatin1String("");
264−
265− return QString::fromStdString(m_unityPreview->status_time());
266−}
267−
268−QString PeoplePreviewData::statusService() const
269−{
270− if (!m_unityPreview)
271− return QLatin1String("");
272−
273− return QString::fromStdString(m_unityPreview->status_service());
274−}
275−
276−QString PeoplePreviewData::statusServiceIcon() const
277−{
278− if (!m_unityPreview)
279− return QLatin1String("");
280−
281− glib::Object<GIcon> icon = m_unityPreview->status_service_icon();
282− if (!icon)
283− return QLatin1String("");
284−
285− return QString(g_icon_to_string(icon));
286−}
287−
288−QString PeoplePreviewData::statusPostUri() const
289−{
290− if (!m_unityPreview)
291− return QLatin1String("");
292−
293− return QString::fromStdString(m_unityPreview->status_post_uri());
294−}
295−
296−QQmlListProperty<PeopleAddressData> PeoplePreviewData::addresses()
297−{
298− return QQmlListProperty<PeopleAddressData> (this, this,
299− addressAppend,
300− addressCount,
301− addressAt,
302− addressClear);
303−}
304−
305−QString PeoplePreviewData::avatar() const
306−{
307− if (!m_unityPreview)
308− return QLatin1String("");
309−
310− glib::Object<GIcon> avatar = m_unityPreview->avatar();
311− if (!avatar)
312− return QLatin1String("");
313−
314− return QString(g_icon_to_string(avatar));
315−}
316−
317−void PeoplePreviewData::getPeoplePreview()
318−{
319− m_lens->unityLens()->Preview(m_uri.toStdString());
320−}
321−
322−void PeoplePreviewData::setUnityPreview(std::string const& uri, dash::Preview::Ptr const& preview)
323−{
324− if (uri != m_uri.toStdString())
325− return;
326−
327− dash::PeoplePreview::Ptr peoplePtr = std::dynamic_pointer_cast<dash::PeoplePreview>(preview);
328− if (peoplePtr == nullptr) {
329− qWarning() << "Backend returned a dash::Preview that isn't a dash::PeoplePreview";
330− Q_EMIT error();
331− return;
332− }
333−
334− clearData();
335− m_unityPreview = peoplePtr;
336− getPhoneData();
337− getEmailAddresses();
338− getImAccounts();
339− getAddresses();
340−
341− Q_EMIT renderNameChanged();
342− Q_EMIT titleChanged();
343− Q_EMIT subTitleChanged();
344− Q_EMIT descriptionChanged();
345− Q_EMIT imageSourceChanged();
346− Q_EMIT phoneNumbersChanged();
347− Q_EMIT emailAddressesChanged();
348− Q_EMIT imAccountsChanged();
349− Q_EMIT displayNameChanged();
350− Q_EMIT statusChanged();
351− Q_EMIT statusTimeChanged();
352− Q_EMIT statusServiceChanged();
353− Q_EMIT addressesChanged();
354− Q_EMIT avatarChanged();
355−
356− setReady(true);
357−}
358−
359−void PeoplePreviewData::clearData()
360−{
361− while (!m_phoneList.empty()) {
362− PeoplePhoneData *phone = m_phoneList.takeLast();
363− delete phone;
364− }
365− while (!m_emailList.empty()) {
366− PeopleAddressData *email = m_emailList.takeLast();
367− delete email;
368− }
369− while (!m_imList.empty()) {
370− PeopleIMData *im = m_imList.takeLast();
371− delete im;
372− }
373− while (!m_addressList.empty()) {
374− PeopleAddressData *address = m_addressList.takeLast();
375− delete address;
376− }
377−}
378−
379−void PeoplePreviewData::getPhoneData()
380−{
381− dash::PeoplePreview::PhonePtrList uPhoneList;
382− uPhoneList = m_unityPreview->GetPhone();
383−
384− for (size_t i=0; i<uPhoneList.size(); ++i) {
385− PeoplePhoneData *phone = new PeoplePhoneData;
386− phone->m_type = QString::fromStdString(uPhoneList[i]->type);
387− phone->m_location = QString::fromStdString(uPhoneList[i]->location);
388− phone->m_number = QString::fromStdString(uPhoneList[i]->number);
389− m_phoneList.append(phone);
390− }
391−}
392−
393−void PeoplePreviewData::getEmailAddresses()
394−{
395− dash::PeoplePreview::EmailPtrList uEmailList;
396− uEmailList = m_unityPreview->GetEmail();
397−
398− for (size_t i=0; i<uEmailList.size(); ++i) {
399− PeopleAddressData *email = new PeopleAddressData;
400− email->m_type = QString::fromStdString(uEmailList[i]->type);
401− email->m_address = QString::fromStdString(uEmailList[i]->address);
402− m_emailList.append(email);
403− }
404−}
405−
406−void PeoplePreviewData::getImAccounts()
407−{
408− dash::PeoplePreview::IMAccountPtrList uIMList;
409− uIMList = m_unityPreview->GetIMAccount();
410−
411− for (size_t i=0; i<uIMList.size(); ++i) {
412− PeopleIMData *im = new PeopleIMData;
413− im->m_protocol = QString::fromStdString(uIMList[i]->protocol);
414− im->m_address = QString::fromStdString(uIMList[i]->address);
415− m_imList.append(im);
416− }
417−}
418−
419−void PeoplePreviewData::getAddresses()
420−{
421− dash::PeoplePreview::AddressPtrList uAddressList;
422− uAddressList = m_unityPreview->GetAddress();
423−
424− for (size_t i=0; i<uAddressList.size(); ++i) {
425− PeopleAddressData *address = new PeopleAddressData;
426− address->m_type = QString::fromStdString(uAddressList[i]->type);
427− address->m_address = QString::fromStdString(uAddressList[i]->address);
428− address->m_poBox = QString::fromStdString(uAddressList[i]->po_box);
429− address->m_extension = QString::fromStdString(uAddressList[i]->extension);
430− address->m_street = QString::fromStdString(uAddressList[i]->street);
431− address->m_locality = QString::fromStdString(uAddressList[i]->locality);
432− address->m_region = QString::fromStdString(uAddressList[i]->region);
433− address->m_postalCode = QString::fromStdString(uAddressList[i]->postal_code);
434− address->m_country = QString::fromStdString(uAddressList[i]->country);
435− address->m_addressFormat = QString::fromStdString(uAddressList[i]->address_format);
436− m_addressList.append(address);
437− }
438−}