QVariant PersonsModel::dataForAddressee(const QString &personId, const KABC::Addressee &person, int role) const { Q_D(const PersonsModel); switch(role) { case FormattedNameRole: return person.formattedName(); case PhotoRole: if (!person.photo().data().isNull()) { return person.photo().data(); } else if (!person.photo().url().isEmpty()) { return QPixmap(person.photo().url()); } else { return QPixmap(d->genericAvatarImagePath); } case PersonIdRole: return personId; case PersonVCardRole: return QVariant::fromValue<KABC::Addressee>(person); case ContactsVCardRole: return QVariant::fromValue<KABC::AddresseeList>(d->metacontacts[d->personIndex[personId].row()].contacts()); case GroupsRole: return person.categories(); } return QVariant(); }
QPixmap AddresseeEmailSelection::itemIcon( const KABC::Addressee &addressee, uint ) const { if ( !addressee.photo().data().isNull() ) return addressee.photo().data().smoothScale( 16, 16 ); else return KGlobal::iconLoader()->loadIcon( "personal", KIcon::Small ); }
QString ContactsModel::getAvatar(KABC::Addressee contact) const { KABC::Picture pic = contact.photo(); qDebug() << "Picture url: " << pic.url(); if (pic.isIntern()) { QString url = "contacts/"+contact.uid(); ImageProvider::getInstance()->registerImage(url, pic.data()); return "image://images/"+url; } else return pic.url(); }
QVariant ContactsTreeModel::entityData( const Item &item, int column, int role ) const { if ( item.mimeType() == KABC::Addressee::mimeType() ) { if ( !item.hasPayload<KABC::Addressee>() ) { // Pass modeltest if ( role == Qt::DisplayRole ) return item.remoteId(); return QVariant(); } const KABC::Addressee contact = item.payload<KABC::Addressee>(); if ( role == Qt::DecorationRole ) { if ( column == 0 ) { const KABC::Picture picture = contact.photo(); if ( picture.isIntern() ) { return picture.data().scaled( QSize( 16, 16 ), Qt::KeepAspectRatio ); } else { return KIcon( QLatin1String( "x-office-contact" ) ); } } return QVariant(); } else if ( (role == Qt::DisplayRole) || (role == Qt::EditRole) ) { switch ( mColumns.at( column ) ) { case FullName: return contact.realName(); break; case Birthday: if ( contact.birthday().isValid() ) return KGlobal::locale()->formatDate( contact.birthday().date() ); break; case HomeAddress: { const KABC::Address address = contact.address( KABC::Address::Home ); if ( !address.isEmpty() ) return address.formattedAddress(); } break; case BusinessAddress: { const KABC::Address address = contact.address( KABC::Address::Work ); if ( !address.isEmpty() ) return address.formattedAddress(); } break; case PhoneNumbers: { QStringList values; const KABC::PhoneNumber::List numbers = contact.phoneNumbers(); foreach ( const KABC::PhoneNumber &number, numbers ) values += number.number(); return values.join( "\n" ); } break; case PreferredEmail: return contact.preferredEmail(); break; case AllEmails: return contact.emails().join( "\n" ); break; case Organization: return contact.organization(); break; case Homepage: return contact.url().url(); break; case Note: return contact.note(); break; } } } else if ( item.mimeType() == KABC::ContactGroup::mimeType() ) {