diff --git a/res/drawable-hdpi/ic_contact_picture_large.png b/res/drawable-hdpi/ic_contact_picture_large.png new file mode 100644 index 0000000000..4287ec99dd Binary files /dev/null and b/res/drawable-hdpi/ic_contact_picture_large.png differ diff --git a/res/drawable-mdpi/ic_contact_picture_large.png b/res/drawable-mdpi/ic_contact_picture_large.png new file mode 100644 index 0000000000..3268f8989e Binary files /dev/null and b/res/drawable-mdpi/ic_contact_picture_large.png differ diff --git a/res/drawable-xhdpi/ic_contact_picture_large.png b/res/drawable-xhdpi/ic_contact_picture_large.png new file mode 100644 index 0000000000..ee1492f633 Binary files /dev/null and b/res/drawable-xhdpi/ic_contact_picture_large.png differ diff --git a/res/drawable-xxhdpi/ic_contact_picture_large.png b/res/drawable-xxhdpi/ic_contact_picture_large.png new file mode 100644 index 0000000000..2a278cded1 Binary files /dev/null and b/res/drawable-xxhdpi/ic_contact_picture_large.png differ diff --git a/res/drawable-xxxhdpi/ic_contact_picture_large.png b/res/drawable-xxxhdpi/ic_contact_picture_large.png new file mode 100644 index 0000000000..bf57aec5eb Binary files /dev/null and b/res/drawable-xxxhdpi/ic_contact_picture_large.png differ diff --git a/res/layout/redphone_call_card.xml b/res/layout/redphone_call_card.xml index 0b442b922f..eb227f3f91 100644 --- a/res/layout/redphone_call_card.xml +++ b/res/layout/redphone_call_card.xml @@ -40,10 +40,12 @@ @@ -140,23 +142,6 @@ - - - diff --git a/src/org/thoughtcrime/redphone/ui/CallCard.java b/src/org/thoughtcrime/redphone/ui/CallCard.java index 000ffc3fbb..190e3ec556 100644 --- a/src/org/thoughtcrime/redphone/ui/CallCard.java +++ b/src/org/thoughtcrime/redphone/ui/CallCard.java @@ -18,13 +18,20 @@ package org.thoughtcrime.redphone.ui; import android.content.Context; +import android.net.Uri; +import android.os.AsyncTask; +import android.provider.ContactsContract; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.view.LayoutInflater; +import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import org.thoughtcrime.securesms.R; +import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto; +import org.thoughtcrime.securesms.contacts.avatars.ContactPhotoFactory; import org.thoughtcrime.securesms.recipients.Recipient; /** @@ -62,8 +69,25 @@ public class CallCard extends LinearLayout { this.elapsedTime.setText(time); } - private void setPersonInfo(Recipient recipient) { - this.photo.setImageDrawable(recipient.getContactPhoto().asCallCard(getContext())); + private void setPersonInfo(final Recipient recipient) { + final Context context = getContext(); + new AsyncTask() { + @Override + protected ContactPhoto doInBackground(Void... params) { + DisplayMetrics metrics = new DisplayMetrics(); + WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + Uri contentUri = ContactsContract.Contacts.lookupContact(context.getContentResolver(), + recipient.getContactUri()); + windowManager.getDefaultDisplay().getMetrics(metrics); + return ContactPhotoFactory.getContactPhoto(context, contentUri, null, metrics.widthPixels); + } + + @Override + protected void onPostExecute(final ContactPhoto contactPhoto) { + CallCard.this.photo.setImageDrawable(contactPhoto.asCallCard(context)); + } + }.execute(); + this.name.setText(recipient.getName()); this.phoneNumber.setText(recipient.getNumber()); } diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/ContactPhotoFactory.java b/src/org/thoughtcrime/securesms/contacts/avatars/ContactPhotoFactory.java index b17e3128dd..2a6990b401 100644 --- a/src/org/thoughtcrime/securesms/contacts/avatars/ContactPhotoFactory.java +++ b/src/org/thoughtcrime/securesms/contacts/avatars/ContactPhotoFactory.java @@ -37,8 +37,12 @@ public class ContactPhotoFactory { } public static ContactPhoto getContactPhoto(Context context, Uri uri, String name) { + int targetSize = context.getResources().getDimensionPixelSize(R.dimen.contact_photo_target_size); + return getContactPhoto(context, uri, name, targetSize); + } + + public static ContactPhoto getContactPhoto(Context context, Uri uri, String name, int targetSize) { try { - int targetSize = context.getResources().getDimensionPixelSize(R.dimen.contact_photo_target_size); Bitmap bitmap = Glide.with(context) .load(new ContactPhotoUri(uri)).asBitmap() .centerCrop().into(targetSize, targetSize).get(); diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java b/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java index 9be3ed4b17..5c8a311eef 100644 --- a/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java +++ b/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java @@ -48,6 +48,6 @@ public class GeneratedContactPhoto implements ContactPhoto { @Override public Drawable asCallCard(Context context) { - return ContextCompat.getDrawable(context, R.drawable.ic_contact_picture); + return ContextCompat.getDrawable(context, R.drawable.ic_contact_picture_large); } }