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);
}
}