New contact selector that uses new API

pull/14/head
Tim Su 13 years ago
parent 95b39ac040
commit 371977ae04

@ -283,6 +283,7 @@ public class EditPeopleActivity extends Activity {
assignedCustom.setVisibility(View.VISIBLE);
assignedClear.setVisibility(View.VISIBLE);
assignedSpinner.setVisibility(View.GONE);
assignedCustom.requestFocus();
}
}
@Override

@ -1,5 +1,7 @@
package com.todoroo.astrid.ui;
import java.io.InputStream;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
@ -8,11 +10,12 @@ import android.content.Context;
import android.database.Cursor;
import android.database.MergeCursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.provider.Contacts;
import android.provider.Contacts.ContactMethods;
import android.provider.Contacts.People;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -39,9 +42,7 @@ public class ContactListAdapter extends CursorAdapter {
private final Activity activity;
private static final String[] PEOPLE_PROJECTION = new String[] {
People._ID,
People.NAME,
ContactMethods.DATA
Email._ID, Email.CONTACT_ID, ContactsContract.Contacts.DISPLAY_NAME, Email.DATA
};
private boolean completeSharedTags = false;
@ -73,7 +74,7 @@ public class ContactListAdapter extends CursorAdapter {
if(cursor.getColumnNames().length == PEOPLE_PROJECTION.length) {
text.setText(convertToString(cursor));
imageView.setImageResource(android.R.drawable.ic_menu_gallery);
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, cursor.getLong(0));
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, cursor.getLong(0));
imageView.setTag(uri);
ContactImageTask ciTask = new ContactImageTask(imageView);
ciTask.execute(uri);
@ -96,7 +97,10 @@ public class ContactListAdapter extends CursorAdapter {
@Override
protected Bitmap doInBackground(Uri... params) {
uri = params[0];
return Contacts.People.loadContactPhoto(activity, uri, 0, null);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(mContent, uri);
if (input == null)
return null;
return BitmapFactory.decodeStream(input);
}
@Override
@ -110,9 +114,9 @@ public class ContactListAdapter extends CursorAdapter {
@Override
public String convertToString(Cursor cursor) {
if(cursor.getColumnNames().length == PEOPLE_PROJECTION.length) {
int name = cursor.getColumnIndexOrThrow(People.NAME);
int email = cursor.getColumnIndexOrThrow(ContactMethods.DATA);
if(cursor.getColumnIndex(Email.DATA) > -1) {
int name = cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
int email = cursor.getColumnIndexOrThrow(Email.DATA);
if(cursor.isNull(name))
return cursor.getString(email);
return cursor.getString(name) + " <" + cursor.getString(email) +">";
@ -128,23 +132,11 @@ public class ContactListAdapter extends CursorAdapter {
return getFilterQueryProvider().runQuery(constraint);
}
StringBuilder buffer = new StringBuilder();
String[] args = null;
if(constraint != null && constraint.length() > 1) {
constraint = constraint.toString().trim();
buffer.append("UPPER(").append(People.NAME).append(") GLOB ?");
buffer.append(" OR ");
buffer.append("UPPER(").append(ContactMethods.DATA).append(") GLOB ?");
args = new String[] { constraint.toString().toUpperCase() + "*",
constraint.toString().toUpperCase() + "*" };
} else {
buffer.append("0");
}
String sort = Contacts.People.DEFAULT_SORT_ORDER + " LIMIT 20";
Cursor peopleCursor = mContent.query(Contacts.ContactMethods.CONTENT_EMAIL_URI,
PEOPLE_PROJECTION, buffer.toString(), args,
sort);
String filterParams = constraint == null ? "" : Uri.encode(constraint.toString());
Uri uri = Uri.withAppendedPath(Email.CONTENT_FILTER_URI, filterParams);
String sort = Email.TIMES_CONTACTED + " DESC LIMIT 20";
Cursor peopleCursor = mContent.query(uri, PEOPLE_PROJECTION,
null, null, sort);
activity.startManagingCursor(peopleCursor);
if(!completeSharedTags)

Loading…
Cancel
Save