QTM_USE_NAMESPACE // This is run in a low priority thread. QImage ContactThumbnailImageProvider::requestImage(const QString &id, QSize *size, const QSize &req_size) { if (m_thumbnails.contains(id)) { if (size) *size = req_size; return m_thumbnails.value(id).scaled(req_size); } /* url format: image://thumbnail/{managerUri.contactid} */ QString managerUri = id.split('.').first(); QString localId = id.split('.').last(); QContactManager* manager = 0; if (m_managers.contains(managerUri)) { manager = m_managers.value(managerUri); } else { manager = QContactManager::fromUri(managerUri); m_managers.insert(managerUri, manager); } QContact c = manager->contact(localId.toInt()); QImage image( req_size.width() > 0 ? req_size.width() : 100, req_size.height() > 0 ? req_size.height() : 50, QImage::Format_RGB32); QContactThumbnail t = c.detail<QContactThumbnail>(); if (!t.thumbnail().isNull()) { image = t.thumbnail().scaled(image.size()); } else { QContactAvatar a = c.detail<QContactAvatar>(); QString imageUrl = a.imageUrl().isEmpty()? QLatin1String(":/default.svg") : a.imageUrl().toString(); image.load(imageUrl); } if (size) *size = image.size(); m_thumbnails.insert(id, image); return image; }
QUrl SeasidePerson::avatarPath() const { QContactAvatar avatarDetail = mContact.detail<QContactAvatar>(); QUrl avatarUrl = avatarDetail.imageUrl(); if (avatarUrl.isEmpty()) return QUrl("image://theme/icon-m-telephony-contact-avatar"); return avatarUrl; }
QUrl SeasidePerson::avatarUrl() const { QContactAvatar avatarDetail = mContact->detail<QContactAvatar>(); return avatarDetail.imageUrl(); }