2
* Copyright (C) 2012 Canonical, Ltd.
5
* Guenter Schwann <guenter.schwann@canonical.com>
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.
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.
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/>.
20
#include "peoplepreviewdata.h"
26
static void phoneAppend(QQmlListProperty<PeoplePhoneData> *property, PeoplePhoneData *val)
31
static PeoplePhoneData *phoneAt(QQmlListProperty<PeoplePhoneData> *property, int index)
33
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
34
return d->phoneNumberList().at(index);
36
static int phoneCount(QQmlListProperty<PeoplePhoneData> *property)
38
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
39
return d->phoneNumberList().count();
41
static void phoneClear(QQmlListProperty<PeoplePhoneData> *property)
46
static void emailAppend(QQmlListProperty<PeopleAddressData> *property, PeopleAddressData *val)
51
static PeopleAddressData *emailAt(QQmlListProperty<PeopleAddressData> *property, int index)
53
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
54
return d->emailAddressesList().at(index);
56
static int emailCount(QQmlListProperty<PeopleAddressData> *property)
58
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
59
return d->emailAddressesList().count();
61
static void emailClear(QQmlListProperty<PeopleAddressData> *property)
66
static void imAppend(QQmlListProperty<PeopleIMData> *property, PeopleIMData *val)
71
static PeopleIMData *imAt(QQmlListProperty<PeopleIMData> *property, int index)
73
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
74
return d->imAccountsList().at(index);
76
static int imCount(QQmlListProperty<PeopleIMData> *property)
78
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
79
return d->imAccountsList().count();
81
static void imClear(QQmlListProperty<PeopleIMData> *property)
86
static void addressAppend(QQmlListProperty<PeopleAddressData> *property, PeopleAddressData *val)
91
static PeopleAddressData *addressAt(QQmlListProperty<PeopleAddressData> *property, int index)
93
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
94
return d->addressesList().at(index);
96
static int addressCount(QQmlListProperty<PeopleAddressData> *property)
98
PeoplePreviewData *d = static_cast<PeoplePreviewData*>(property->data);
99
return d->addressesList().count();
101
static void addressClear(QQmlListProperty<PeopleAddressData> *property)
107
using namespace unity;
109
PeoplePreviewData::PeoplePreviewData(QObject *parent)
116
PeoplePreviewData::~PeoplePreviewData()
121
Lens *PeoplePreviewData::lens() const
126
void PeoplePreviewData::setLens(Lens *lens)
133
if (m_lensConnection.connected())
134
m_lensConnection.disconnect();
137
m_lensConnection = m_lens->unityLens()->preview_ready.connect(
138
sigc::mem_fun(this, &PeoplePreviewData::setUnityPreview));
139
Q_EMIT lensChanged();
141
if (!m_uri.isEmpty() && !m_lens)
145
QString PeoplePreviewData::uri() const
150
void PeoplePreviewData::setUri(const QString &uri)
159
if (!m_uri.isEmpty() && m_lens)
163
bool PeoplePreviewData::ready() const
168
void PeoplePreviewData::setReady(const bool &ready)
170
if (ready == m_ready)
174
Q_EMIT readyChanged();
177
QString PeoplePreviewData::renderName() const
180
return QLatin1String("");
182
return QString::fromStdString(m_unityPreview->renderer_name());
185
QString PeoplePreviewData::title() const
188
return QLatin1String("");
190
return QString::fromStdString(m_unityPreview->title());
193
QString PeoplePreviewData::subTitle() const
196
return QLatin1String("");
198
return QString::fromStdString(m_unityPreview->subtitle());
201
QString PeoplePreviewData::description() const
204
return QLatin1String("");
206
return QString::fromStdString(m_unityPreview->description());
209
QString PeoplePreviewData::imageSource() const
212
return QLatin1String("");
214
return QString::fromStdString(m_unityPreview->image_source_uri());
217
QQmlListProperty<PeoplePhoneData> PeoplePreviewData::phoneNumbers()
219
return QQmlListProperty<PeoplePhoneData> (this, this,
226
QQmlListProperty<PeopleAddressData> PeoplePreviewData::emailAddresses()
228
return QQmlListProperty<PeopleAddressData> (this, this,
235
QQmlListProperty<PeopleIMData> PeoplePreviewData::imAccounts()
237
return QQmlListProperty<PeopleIMData> (this, this,
244
QString PeoplePreviewData::displayName() const
247
return QLatin1String("");
249
return QString::fromStdString(m_unityPreview->display_name());
252
QString PeoplePreviewData::status() const
255
return QLatin1String("");
257
return QString::fromStdString(m_unityPreview->status());
260
QString PeoplePreviewData::statusTime() const
263
return QLatin1String("");
265
return QString::fromStdString(m_unityPreview->status_time());
268
QString PeoplePreviewData::statusService() const
271
return QLatin1String("");
273
return QString::fromStdString(m_unityPreview->status_service());
276
QString PeoplePreviewData::statusServiceIcon() const
279
return QLatin1String("");
281
glib::Object<GIcon> icon = m_unityPreview->status_service_icon();
283
return QLatin1String("");
285
return QString(g_icon_to_string(icon));
288
QString PeoplePreviewData::statusPostUri() const
291
return QLatin1String("");
293
return QString::fromStdString(m_unityPreview->status_post_uri());
296
QQmlListProperty<PeopleAddressData> PeoplePreviewData::addresses()
298
return QQmlListProperty<PeopleAddressData> (this, this,
305
QString PeoplePreviewData::avatar() const
308
return QLatin1String("");
310
glib::Object<GIcon> avatar = m_unityPreview->avatar();
312
return QLatin1String("");
314
return QString(g_icon_to_string(avatar));
317
void PeoplePreviewData::getPeoplePreview()
319
m_lens->unityLens()->Preview(m_uri.toStdString());
322
void PeoplePreviewData::setUnityPreview(std::string const& uri, dash::Preview::Ptr const& preview)
324
if (uri != m_uri.toStdString())
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";
335
m_unityPreview = peoplePtr;
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();
359
void PeoplePreviewData::clearData()
361
while (!m_phoneList.empty()) {
362
PeoplePhoneData *phone = m_phoneList.takeLast();
365
while (!m_emailList.empty()) {
366
PeopleAddressData *email = m_emailList.takeLast();
369
while (!m_imList.empty()) {
370
PeopleIMData *im = m_imList.takeLast();
373
while (!m_addressList.empty()) {
374
PeopleAddressData *address = m_addressList.takeLast();
379
void PeoplePreviewData::getPhoneData()
381
dash::PeoplePreview::PhonePtrList uPhoneList;
382
uPhoneList = m_unityPreview->GetPhone();
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);
393
void PeoplePreviewData::getEmailAddresses()
395
dash::PeoplePreview::EmailPtrList uEmailList;
396
uEmailList = m_unityPreview->GetEmail();
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);
406
void PeoplePreviewData::getImAccounts()
408
dash::PeoplePreview::IMAccountPtrList uIMList;
409
uIMList = m_unityPreview->GetIMAccount();
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);
419
void PeoplePreviewData::getAddresses()
421
dash::PeoplePreview::AddressPtrList uAddressList;
422
uAddressList = m_unityPreview->GetAddress();
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);