OSDN Git Service

Automated import from //branches/cupcake/...@142855,142855
authorJeffrey Sharkey <>
Thu, 26 Mar 2009 04:37:10 +0000 (21:37 -0700)
committerThe Android Open Source Project <initial-contribution@android.com>
Thu, 26 Mar 2009 04:37:10 +0000 (21:37 -0700)
src/com/android/contacts/ContactsListActivity.java
src/com/android/contacts/ShowOrCreateActivity.java

index b16fde7..7dbc76c 100644 (file)
@@ -187,6 +187,11 @@ public final class ContactsListActivity extends ListActivity
         People.PRESENCE_STATUS, // 8
         SORT_STRING, // 9
     };
+    
+    static final String[] SIMPLE_CONTACTS_PROJECTION = new String[] {
+        People._ID, // 0
+        NAME_COLUMN, // 1
+    };
 
     static final String[] STREQUENT_PROJECTION = new String[] {
         People._ID, // 0
@@ -236,7 +241,7 @@ public final class ContactsListActivity extends ListActivity
     static final int SORT_STRING_INDEX = 9;
 
     static final int PHONES_PERSON_ID_INDEX = 6;
-    static final int CONTACT_METHODS_PERSON_ID_INDEX = 6;
+    static final int SIMPLE_CONTACTS_PERSON_ID_INDEX = 0;
     
     static final int DISPLAY_GROUP_INDEX_ALL_CONTACTS = 0;
     static final int DISPLAY_GROUP_INDEX_ALL_CONTACTS_WITH_PHONES = 1;
@@ -1136,12 +1141,14 @@ public final class ContactsListActivity extends ListActivity
             
             case MODE_QUERY_PICK_TO_VIEW: {
                 if (mQueryMode == QUERY_MODE_MAILTO) {
-                    mQueryPersonIdIndex = CONTACT_METHODS_PERSON_ID_INDEX;
+                    // Find all contacts with the given search string as either
+                    // an E-mail or IM address.
+                    mQueryPersonIdIndex = SIMPLE_CONTACTS_PERSON_ID_INDEX;
+                    Uri uri = Uri.withAppendedPath(People.WITH_EMAIL_OR_IM_FILTER_URI,
+                            Uri.encode(mQueryData));
                     mQueryHandler.startQuery(QUERY_TOKEN, null,
-                            ContactMethods.CONTENT_URI, CONTACT_METHODS_PROJECTION,
-                            QUERY_KIND_EMAIL_OR_IM + " AND " + ContactMethods.DATA + "=?",
-                            new String[] { mQueryData },
-                            getSortOrder(CONTACT_METHODS_PROJECTION));
+                            uri, SIMPLE_CONTACTS_PROJECTION, null, null,
+                            getSortOrder(CONTACTS_PROJECTION));
                     
                 } else if (mQueryMode == QUERY_MODE_TEL) {
                     mQueryPersonIdIndex = PHONES_PERSON_ID_INDEX;
@@ -1566,6 +1573,17 @@ public final class ContactsListActivity extends ListActivity
                 cache.nameView.setText(mUnknownNameText);
             }
             
+            // Bail out early if using a specific SEARCH query mode, usually for
+            // matching a specific E-mail or phone number. Any contact details
+            // shown would be identical, and columns might not even be present
+            // in the returned cursor.
+            if (mQueryMode != QUERY_MODE_NONE) {
+                cache.numberView.setVisibility(View.GONE);
+                cache.labelView.setVisibility(View.GONE);
+                cache.presenceView.setVisibility(View.GONE);
+                return;
+            }
+            
             // Set the phone number
             TextView numberView = cache.numberView;
             TextView labelView = cache.labelView;
index 8d3cf0b..0732ffe 100755 (executable)
@@ -56,20 +56,17 @@ public final class ShowOrCreateActivity extends Activity {
     static final boolean LOGD = false;
 
     static final String[] PHONES_PROJECTION = new String[] {
-        Phones._ID,
         Phones.PERSON_ID,
     };
 
-    static final String[] CONTACT_METHODS_PROJECTION = new String[] {
-        ContactMethods._ID,
-        ContactMethods.PERSON_ID,
+    static final String[] PEOPLE_PROJECTION = new String[] {
+        People._ID,
     };
     
     static final String SCHEME_MAILTO = "mailto";
     static final String SCHEME_TEL = "tel";
     
-    static final int ID_INDEX = 0;
-    static final int PERSON_ID_INDEX = 1;
+    static final int PERSON_ID_INDEX = 0;
 
     /**
      * Query clause to filter {@link ContactMethods#CONTENT_URI} to only search
@@ -126,11 +123,9 @@ public final class ShowOrCreateActivity extends Activity {
         // Handle specific query request
         if (SCHEME_MAILTO.equals(scheme)) {
             createExtras.putString(Intents.Insert.EMAIL, ssp);
-            mQueryHandler.startQuery(QUERY_TOKEN, null,
-                    ContactMethods.CONTENT_URI, CONTACT_METHODS_PROJECTION,
-                    QUERY_KIND_EMAIL_OR_IM + " AND " + ContactMethods.DATA + "=?",
-                    new String[] { ssp }, null);
-            
+            Uri uri = Uri.withAppendedPath(People.WITH_EMAIL_OR_IM_FILTER_URI, Uri.encode(ssp));
+            mQueryHandler.startQuery(QUERY_TOKEN, null, uri,
+                    PEOPLE_PROJECTION, null, null, null);
         } else if (SCHEME_TEL.equals(scheme)) {
             createExtras.putString(Intents.Insert.PHONE, ssp);
             mQueryHandler.startQuery(QUERY_TOKEN, null,