use of ezvcard.VCard in project data-transfer-project by google.
the class VCardToGoogleContactConverterTest method testConversionToGoogleAddresses.
@Test
public void testConversionToGoogleAddresses() {
// Set up vCard with a primary address and a secondary address
String primaryStreet = "221B Baker St";
String primaryLocality = "London";
ezvcard.property.Address primaryAddress = new ezvcard.property.Address();
primaryAddress.setStreetAddress(primaryStreet);
primaryAddress.setLocality(primaryLocality);
primaryAddress.setPref(VCARD_PRIMARY_PREF);
String altStreet = "42 Wallaby Way";
String altLocality = "Sydney";
ezvcard.property.Address altAddress = new ezvcard.property.Address();
altAddress.setStreetAddress(altStreet);
altAddress.setLocality(altLocality);
altAddress.setPref(VCARD_PRIMARY_PREF + 1);
// Add addresses to vCard. Order shouldn't matter.
VCard vCard = defaultVCard;
vCard.addAddress(primaryAddress);
vCard.addAddress(altAddress);
// Run test
Person person = VCardToGoogleContactConverter.convert(vCard);
// Check results
// Check correct number of addresses
assertThat(person.getAddresses().size()).isEqualTo(2);
// Check primary address
List<Address> actualPrimaryAddresses = person.getAddresses().stream().filter(a -> a.getMetadata().getPrimary()).collect(Collectors.toList());
List<String> actualPrimaryAddressStreets = getValuesFromFields(actualPrimaryAddresses, Address::getStreetAddress);
assertThat(actualPrimaryAddressStreets).containsExactly(primaryStreet);
// Check secondary address
List<Address> actualSecondaryAddresses = person.getAddresses().stream().filter(a -> !a.getMetadata().getPrimary()).collect(Collectors.toList());
List<String> actualSecondaryAddressStreets = getValuesFromFields(actualSecondaryAddresses, Address::getStreetAddress);
assertThat(actualSecondaryAddressStreets).containsExactly(altStreet);
}
use of ezvcard.VCard in project Pix-Art-Messenger by kriztan.
the class FileBackend method getVCard.
private String getVCard(File file) {
VCard VCard = new VCard();
String VCardName = "";
try {
VCard = Ezvcard.parse(file).first();
} catch (IOException e) {
e.printStackTrace();
}
if (VCard != null) {
final String version = VCard.getVersion().toString();
Log.d(Config.LOGTAG, "VCard version: " + version);
final String name = VCard.getFormattedName().getValue();
VCardName = " (" + name + ")";
}
try {
byte[] data = VCardName.getBytes("UTF-8");
VCardName = Base64.encodeToString(data, Base64.DEFAULT);
} catch (UnsupportedEncodingException e) {
VCardName = "";
e.printStackTrace();
}
return VCardName;
}
use of ezvcard.VCard in project ring-client-android by savoirfairelinux.
the class ContactDetailsTask method run.
@Override
public void run() {
if (mContact == null) {
return;
}
Log.i(TAG, "ContactDetailsTask run " + mContact.getId() + " " + mContact.getDisplayName());
final Bitmap externalBMP;
if (!mContact.detailsLoaded && !mContact.getPhones().isEmpty()) {
String username = mContact.getPhones().get(0).getNumber().getRawRingId();
Log.d(TAG, "getPhones not empty. Username : " + username);
VCard vcard = VCardUtils.loadPeerProfileFromDisk(mContext.getFilesDir(), username + ".vcf");
mContact.setVCardProfile(vcard);
}
byte[] photo = mContact.getPhoto();
if (photo != null) {
externalBMP = BitmapUtils.cropImageToCircle(photo);
} else if (mContact.getId() > 0) {
Bitmap photoBmp;
try {
photoBmp = loadContactPhoto(mContext.getContentResolver(), mContact.getId());
} catch (IllegalArgumentException e) {
photoBmp = null;
}
if (photoBmp == null) {
photoBmp = decodeSampledBitmapFromResource(mContext.getResources(), R.drawable.ic_contact_picture_fallback, mViewWidth, mViewHeight);
}
mContact.setPhoto(BitmapUtils.bitmapToBytes(photoBmp));
externalBMP = BitmapUtils.cropImageToCircle(photoBmp);
photoBmp.recycle();
} else {
externalBMP = decodeSampledBitmapFromResource(mContext.getResources(), R.drawable.ic_contact_picture_fallback, mViewWidth, mViewHeight);
}
synchronized (mCallbacks) {
for (DetailsLoadedCallback cb : mCallbacks) {
cb.onDetailsLoaded(externalBMP, mContact.getDisplayName(), mContact.getRingUsername());
}
mCallbacks.clear();
}
}
use of ezvcard.VCard in project ring-client-android by savoirfairelinux.
the class ContactRequestsAdapter method onBindViewHolder.
@Override
public void onBindViewHolder(ContactRequestViewHolder holder, int position) {
final PendingContactRequestsViewModel viewModel = mContactRequestsViewModels.get(position);
VCard vcard = viewModel.getVCard();
byte[] contactPhoto = null;
if (vcard != null && !vcard.getPhotos().isEmpty()) {
contactPhoto = vcard.getPhotos().get(0).getData();
}
Drawable contactPicture = AvatarFactory.getAvatar(holder.itemView.getContext(), contactPhoto, viewModel.getUsername(), viewModel.getUuid());
Glide.with(holder.itemView.getContext()).load(contactPicture).apply(AvatarFactory.getGlideOptions(true, true)).transition(DrawableTransitionOptions.withCrossFade()).into(holder.mPhoto);
String fullname = viewModel.getFullname();
String username = viewModel.getUsername();
if (!TextUtils.isEmpty(fullname)) {
holder.mDisplayname.setVisibility(View.GONE);
holder.mNamelayout.setVisibility(View.VISIBLE);
holder.mFullname.setText(fullname);
holder.mUsername.setText(username);
} else {
holder.mDisplayname.setVisibility(View.VISIBLE);
holder.mNamelayout.setVisibility(View.GONE);
holder.mDisplayname.setText(username);
}
holder.bind(mListener, viewModel);
}
use of ezvcard.VCard in project ring-client-android by savoirfairelinux.
the class VCardServiceImpl method loadSmallVCard.
@Override
public VCard loadSmallVCard(String accountId) {
VCard vcard = VCardUtils.loadLocalProfileFromDisk(mContext.getFilesDir(), accountId);
if (vcard != null && !vcard.getPhotos().isEmpty()) {
// Reduce photo size to fit in one DHT packet
Bitmap photo = BitmapUtils.bytesToBitmap(vcard.getPhotos().get(0).getData());
photo = BitmapUtils.reduceBitmap(photo, 30000);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
vcard.removeProperties(Photo.class);
vcard.addPhoto(new Photo(stream.toByteArray(), ImageType.PNG));
vcard.removeProperties(RawProperty.class);
}
return vcard;
}
Aggregations