summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--InCallUI/res/drawable/img_conference_automirrored.xml21
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java17
-rw-r--r--InCallUI/src/com/android/incallui/ContactInfoCache.java25
3 files changed, 55 insertions, 8 deletions
diff --git a/InCallUI/res/drawable/img_conference_automirrored.xml b/InCallUI/res/drawable/img_conference_automirrored.xml
new file mode 100644
index 000000000..fa1fd4920
--- /dev/null
+++ b/InCallUI/res/drawable/img_conference_automirrored.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ ~ Copyright (C) 2014 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/img_conference"
+ android:autoMirrored="true" /> \ No newline at end of file
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 8aa8d2349..77ec17344 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -78,6 +78,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
private View mCallNumberAndLabel;
private ImageView mPhoto;
private TextView mElapsedTime;
+ private Drawable mPrimaryPhotoDrawable;
// Container view that houses the entire primary call card, including the call buttons
private View mPrimaryCallCardContainer;
@@ -111,6 +112,8 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
private int mVideoAnimationDuration;
+ private Drawable mDefaultContactPhoto;
+
private MaterialPalette mCurrentThemeColors;
@Override
@@ -599,9 +602,14 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
private void setDrawableToImageView(ImageView view, Drawable photo) {
if (photo == null) {
- photo = view.getResources().getDrawable(R.drawable.img_no_image);
- photo.setAutoMirrored(true);
+ photo = ContactInfoCache.getInstance(
+ view.getContext()).getDefaultContactPhotoDrawable();
+ }
+
+ if (mPrimaryPhotoDrawable == photo) {
+ return;
}
+ mPrimaryPhotoDrawable = photo;
final Drawable current = view.getDrawable();
if (current == null) {
@@ -622,8 +630,9 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
private Drawable getConferencePhoto(boolean canManageConference) {
Log.v(this, "canManageConferencePhoto: " + canManageConference);
- final int resId = canManageConference ? R.drawable.img_conference : R.drawable.img_phone;
- return getView().getResources().getDrawable(resId);
+ final ContactInfoCache cache = ContactInfoCache.getInstance(getView().getContext());
+ return canManageConference ? cache.getConferenceDrawable()
+ : cache.getDefaultContactPhotoDrawable();
}
/**
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index f8bd38d2b..49621695b 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -57,6 +57,9 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete
private static ContactInfoCache sCache = null;
+ private Drawable mDefaultContactPhotoDrawable;
+ private Drawable mConferencePhotoDrawable;
+
public static synchronized ContactInfoCache getInstance(Context mContext) {
if (sCache == null) {
sCache = new ContactInfoCache(mContext.getApplicationContext());
@@ -316,12 +319,10 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete
if (info.cachedPhoto != null) {
photo = info.cachedPhoto;
} else {
- photo = context.getResources().getDrawable(R.drawable.img_no_image);
- photo.setAutoMirrored(true);
+ photo = getDefaultContactPhotoDrawable();
}
} else if (info.contactDisplayPhotoUri == null) {
- photo = context.getResources().getDrawable(R.drawable.img_no_image);
- photo.setAutoMirrored(true);
+ photo = getDefaultContactPhotoDrawable();
} else {
cce.displayPhotoUri = info.contactDisplayPhotoUri;
}
@@ -491,6 +492,22 @@ public class ContactInfoCache implements ContactsAsyncHelper.OnImageLoadComplete
return name;
}
+ public Drawable getDefaultContactPhotoDrawable() {
+ if (mDefaultContactPhotoDrawable == null) {
+ mDefaultContactPhotoDrawable =
+ mContext.getResources().getDrawable(R.drawable.img_no_image_automirrored);
+ }
+ return mDefaultContactPhotoDrawable;
+ }
+
+ public Drawable getConferenceDrawable() {
+ if (mConferencePhotoDrawable == null) {
+ mConferencePhotoDrawable =
+ mContext.getResources().getDrawable(R.drawable.img_conference_automirrored);
+ }
+ return mConferencePhotoDrawable;
+ }
+
/**
* Callback interface for the contact query.
*/