Stop showing default thumbnail in photo manager
Bug: 5126085
Change-Id: Ie90814fc353a70524049aa892e228d72c9dafb01
diff --git a/res/layout/group_browse_list_item.xml b/res/layout/group_browse_list_item.xml
index b9b272c..6f5fcef 100644
--- a/res/layout/group_browse_list_item.xml
+++ b/res/layout/group_browse_list_item.xml
@@ -86,26 +86,22 @@
android:id="@+id/icon_1"
android:layout_width="@dimen/group_list_icon_size"
android:layout_height="@dimen/group_list_icon_size"
- android:layout_marginRight="1dip"
- android:src="@drawable/ic_contact_picture" />
+ android:layout_marginRight="1dip" />
<ImageView
android:id="@+id/icon_2"
android:layout_width="@dimen/group_list_icon_size"
- android:layout_height="@dimen/group_list_icon_size"
- android:src="@drawable/ic_contact_picture" />
+ android:layout_height="@dimen/group_list_icon_size" />
</TableRow>
<TableRow>
<ImageView
android:id="@+id/icon_3"
android:layout_width="@dimen/group_list_icon_size"
android:layout_height="@dimen/group_list_icon_size"
- android:layout_marginRight="1dip"
- android:src="@drawable/ic_contact_picture" />
+ android:layout_marginRight="1dip" />
<ImageView
android:id="@+id/icon_4"
android:layout_width="@dimen/group_list_icon_size"
- android:layout_height="@dimen/group_list_icon_size"
- android:src="@drawable/ic_contact_picture" />
+ android:layout_height="@dimen/group_list_icon_size" />
</TableRow>
</TableLayout>
diff --git a/src/com/android/contacts/ContactPhotoManager.java b/src/com/android/contacts/ContactPhotoManager.java
index d8f4e65..0f7065d 100644
--- a/src/com/android/contacts/ContactPhotoManager.java
+++ b/src/com/android/contacts/ContactPhotoManager.java
@@ -97,6 +97,12 @@
public abstract void loadPhoto(ImageView view, Uri photoUri);
/**
+ * Remove photo from the supplied image view. This also cancels current pending load request
+ * inside this photo manager.
+ */
+ public abstract void removePhoto(ImageView view);
+
+ /**
* Temporarily stops loading photos from the database.
*/
public abstract void pause();
@@ -261,6 +267,12 @@
}
@Override
+ public void removePhoto(ImageView view) {
+ view.setImageDrawable(null);
+ mPendingRequests.remove(view);
+ }
+
+ @Override
public void refreshCache() {
for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
holder.fresh = false;
diff --git a/src/com/android/contacts/group/GroupBrowseListAdapter.java b/src/com/android/contacts/group/GroupBrowseListAdapter.java
index 1f06029..6571b99 100644
--- a/src/com/android/contacts/group/GroupBrowseListAdapter.java
+++ b/src/com/android/contacts/group/GroupBrowseListAdapter.java
@@ -153,8 +153,11 @@
if (currentGroupId == mGroupId) {
final ImageView[] children = getIconViewsSordedByFillOrder(icons);
for (int i = 0; i < children.length; i++) {
- final long photoId = i < photoIds.size() ? photoIds.get(i) : 0;
- mContactPhotoManager.loadPhoto(children[i], photoId);
+ if (i < photoIds.size()) {
+ mContactPhotoManager.loadPhoto(children[i], photoIds.get(i));
+ } else {
+ mContactPhotoManager.removePhoto(children[i]);
+ }
}
}
}
@@ -318,13 +321,16 @@
if (photoIds != null) {
// Cache is available. Let the photo manager load those IDs.
for (int i = 0; i < children.length; i++) {
- final long photoId = i < photoIds.size() ? photoIds.get(i) : 0;
- mContactPhotoManager.loadPhoto(children[i], photoId);
+ if (i < photoIds.size()) {
+ mContactPhotoManager.loadPhoto(children[i], photoIds.get(i));
+ } else {
+ mContactPhotoManager.removePhoto(children[i]);
+ }
}
} else {
// Cache is not available. Load photo IDs asynchronously.
for (ImageView child : children) {
- mContactPhotoManager.loadPhoto(child, 0);
+ mContactPhotoManager.removePhoto(child);
}
new AsyncPhotoIdLoadTask().execute(
new AsyncPhotoIdLoadArg(icons, entry.getGroupId(),
diff --git a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
index 6da205b..416b841 100644
--- a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
+++ b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
@@ -37,6 +37,11 @@
}
@Override
+ public void removePhoto(ImageView view) {
+ view.setImageDrawable(null);
+ }
+
+ @Override
public void pause() {
}