changed to use the new EntityIterator interface
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index eb5aec5..2aeb34d 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -59,6 +59,7 @@
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
+import android.provider.ContactsContract.RawContactsEntity;
import android.provider.ContactsContract.StatusUpdates;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
@@ -297,31 +298,27 @@
return null;
}
- // QUERY CODE //
/** {@inheritDoc} */
- public void onQueryEntitiesComplete(int token, Object cookie, EntityIterator iterator) {
- try {
- // Read incoming entities and consider binding
- readEntities(iterator);
- considerBindData();
- } finally {
- if (iterator != null) {
+ public void onQueryComplete(int token, Object cookie, Cursor cursor) {
+ if (token == TOKEN_STATUSES) {
+ try {
+ // Read available social rows and consider binding
+ readStatuses(cursor);
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ } else {
+ EntityIterator iterator = RawContacts.newEntityIterator(cursor);
+ try {
+ // Read incoming entities and consider binding
+ readEntities(iterator);
+ } finally {
iterator.close();
}
}
- }
-
- /** {@inheritDoc} */
- public void onQueryComplete(int token, Object cookie, Cursor cursor) {
- try {
- // Read available social rows and consider binding
- readStatuses(cursor);
- considerBindData();
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
+ considerBindData();
}
private long getRefreshedContactId() {
@@ -399,7 +396,7 @@
mHasEntities = false;
mHasStatuses = false;
- mHandler.startQueryEntities(TOKEN_ENTITIES, null, RawContacts.CONTENT_URI,
+ mHandler.startQuery(TOKEN_ENTITIES, null, RawContactsEntity.CONTENT_URI, null,
RawContacts.CONTACT_ID + "=" + contactId, null, null);
mHandler.startQuery(TOKEN_STATUSES, null, dataUri, StatusQuery.PROJECTION,
StatusUpdates.PRESENCE + " IS NOT NULL OR " + StatusUpdates.STATUS
diff --git a/src/com/android/contacts/model/EntitySet.java b/src/com/android/contacts/model/EntitySet.java
index be2f70f..ac53611 100644
--- a/src/com/android/contacts/model/EntitySet.java
+++ b/src/com/android/contacts/model/EntitySet.java
@@ -21,15 +21,13 @@
import android.content.Entity;
import android.content.EntityIterator;
import android.content.ContentProviderOperation.Builder;
-import android.graphics.BitmapFactory;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
import android.provider.ContactsContract.AggregationExceptions;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.RawContacts;
-import android.provider.ContactsContract.CommonDataKinds.Photo;
-import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.RawContactsEntity;
import com.google.android.collect.Lists;
@@ -65,26 +63,24 @@
*/
public static EntitySet fromQuery(ContentResolver resolver, String selection,
String[] selectionArgs, String sortOrder) {
- EntityIterator iterator = null;
- final EntitySet state = new EntitySet();
+ EntityIterator iterator = RawContacts.newEntityIterator(resolver.query(
+ RawContactsEntity.CONTENT_URI, null, selection, selectionArgs,
+ sortOrder));
try {
+ final EntitySet state = new EntitySet();
// Perform background query to pull contact details
- iterator = resolver.queryEntities(RawContacts.CONTENT_URI, selection, selectionArgs,
- sortOrder);
while (iterator.hasNext()) {
// Read all contacts into local deltas to prepare for edits
final Entity before = iterator.next();
final EntityDelta entity = EntityDelta.fromBefore(before);
state.add(entity);
}
+ return state;
} catch (RemoteException e) {
throw new IllegalStateException("Problem querying contact details", e);
} finally {
- if (iterator != null) {
- iterator.close();
- }
+ iterator.close();
}
- return state;
}
/**
diff --git a/src/com/android/contacts/ui/DisplayGroupsActivity.java b/src/com/android/contacts/ui/DisplayGroupsActivity.java
index 9ac46ce..16af321 100644
--- a/src/com/android/contacts/ui/DisplayGroupsActivity.java
+++ b/src/com/android/contacts/ui/DisplayGroupsActivity.java
@@ -379,30 +379,29 @@
mName = accountName;
mType = accountType;
- boolean hasGroups = false;
-
final Uri groupsUri = Groups.CONTENT_URI.buildUpon()
.appendQueryParameter(Groups.ACCOUNT_NAME, accountName)
.appendQueryParameter(Groups.ACCOUNT_TYPE, accountType).build();
- EntityIterator iterator = null;
+ EntityIterator iterator = ContactsContract.Groups.newEntityIterator(resolver.query(
+ groupsUri, null, null, null, null));
try {
+ boolean hasGroups = false;
+
// Create entries for each known group
- iterator = resolver.queryEntities(groupsUri, null, null, null);
while (iterator.hasNext()) {
final ContentValues values = iterator.next().getEntityValues();
final GroupDelta group = GroupDelta.fromBefore(values);
addGroup(group);
hasGroups = true;
}
+ // Create single entry handling ungrouped status
+ mUngrouped = GroupDelta.fromSettings(resolver, accountName, accountType, hasGroups);
+ addGroup(mUngrouped);
} catch (RemoteException e) {
Log.w(TAG, "Problem reading groups: " + e.toString());
} finally {
- if (iterator != null) iterator.close();
+ iterator.close();
}
-
- // Create single entry handling ungrouped status
- mUngrouped = GroupDelta.fromSettings(resolver, accountName, accountType, hasGroups);
- addGroup(mUngrouped);
}
/**
diff --git a/src/com/android/contacts/ui/QuickContactWindow.java b/src/com/android/contacts/ui/QuickContactWindow.java
index e1ff0e3..8aab8a8 100644
--- a/src/com/android/contacts/ui/QuickContactWindow.java
+++ b/src/com/android/contacts/ui/QuickContactWindow.java
@@ -1554,11 +1554,6 @@
}
/** {@inheritDoc} */
- public void onQueryEntitiesComplete(int token, Object cookie, EntityIterator iterator) {
- // No actions
- }
-
- /** {@inheritDoc} */
public void onAttachedToWindow() {
// No actions
}
diff --git a/src/com/android/contacts/ui/ShowOrCreateActivity.java b/src/com/android/contacts/ui/ShowOrCreateActivity.java
index 7728b36..0828b3f 100755
--- a/src/com/android/contacts/ui/ShowOrCreateActivity.java
+++ b/src/com/android/contacts/ui/ShowOrCreateActivity.java
@@ -221,11 +221,6 @@
return super.onCreateDialog(id);
}
- /** {@inheritDoc} */
- public void onQueryEntitiesComplete(int token, Object cookie, EntityIterator iterator) {
- // No actions
- }
-
/**
* Listener for {@link DialogInterface} that launches a given {@link Intent}
* when clicked. When clicked, this also closes the parent using
diff --git a/src/com/android/contacts/util/NotifyingAsyncQueryHandler.java b/src/com/android/contacts/util/NotifyingAsyncQueryHandler.java
index 795ac79..83fae29 100644
--- a/src/com/android/contacts/util/NotifyingAsyncQueryHandler.java
+++ b/src/com/android/contacts/util/NotifyingAsyncQueryHandler.java
@@ -18,7 +18,6 @@
import android.content.AsyncQueryHandler;
import android.content.Context;
-import android.content.EntityIterator;
import android.database.Cursor;
import java.lang.ref.WeakReference;
@@ -26,7 +25,7 @@
/**
* Slightly more abstract {@link AsyncQueryHandler} that helps keep a
* {@link WeakReference} back to a listener. Will properly close any
- * {@link Cursor} or {@link EntityIterator} if the listener ceases to exist.
+ * {@link Cursor} if the listener ceases to exist.
* <p>
* This pattern can be used to perform background queries without leaking
* {@link Context} objects.
@@ -41,7 +40,6 @@
*/
public interface AsyncQueryListener {
void onQueryComplete(int token, Object cookie, Cursor cursor);
- void onQueryEntitiesComplete(int token, Object cookie, EntityIterator iterator);
}
public NotifyingAsyncQueryHandler(Context context, AsyncQueryListener listener) {
@@ -67,15 +65,4 @@
cursor.close();
}
}
-
- /** {@inheritDoc} */
- @Override
- protected void onQueryEntitiesComplete(int token, Object cookie, EntityIterator iterator) {
- final AsyncQueryListener listener = mListener.get();
- if (listener != null) {
- listener.onQueryEntitiesComplete(token, cookie, iterator);
- } else if (iterator != null) {
- iterator.close();
- }
- }
}