Fixing direct dial shortcut maker
Change-Id: I8ef26983a4ef08a964cfca31ef2373a8fba0ea06
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 093aec6..e899d69 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -279,6 +279,7 @@
fragment.setCreateContactEnabled(!mRequest.isSearchMode());
fragment.setLegacyCompatibilityMode(mRequest.isLegacyCompatibilityMode());
fragment.setSearchMode(mRequest.isSearchMode());
+ fragment.setQueryString(mRequest.getQueryString());
fragment.setShortcutRequested(true);
mListFragment = fragment;
break;
@@ -298,8 +299,9 @@
fragment.setOnPhoneNumberPickerActionListener(
new PhoneNumberPickerActionListener());
fragment.setLegacyCompatibilityMode(mRequest.isLegacyCompatibilityMode());
- fragment.setSectionHeaderDisplayEnabled(false);
fragment.setShortcutAction(Intent.ACTION_CALL);
+ fragment.setSearchMode(mRequest.isSearchMode());
+
mListFragment = fragment;
break;
}
@@ -309,8 +311,9 @@
fragment.setOnPhoneNumberPickerActionListener(
new PhoneNumberPickerActionListener());
fragment.setLegacyCompatibilityMode(mRequest.isLegacyCompatibilityMode());
- fragment.setSectionHeaderDisplayEnabled(false);
fragment.setShortcutAction(Intent.ACTION_SENDTO);
+ fragment.setSearchMode(mRequest.isSearchMode());
+
mListFragment = fragment;
break;
}
diff --git a/src/com/android/contacts/list/PhoneNumberListAdapter.java b/src/com/android/contacts/list/PhoneNumberListAdapter.java
index 617e823..0bfd6dc 100644
--- a/src/com/android/contacts/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/list/PhoneNumberListAdapter.java
@@ -20,10 +20,14 @@
import android.content.CursorLoader;
import android.database.Cursor;
import android.net.Uri;
+import android.net.Uri.Builder;
import android.provider.ContactsContract;
import android.provider.ContactsContract.ContactCounts;
+import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
+import android.provider.ContactsContract.Directory;
import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
@@ -57,6 +61,7 @@
private CharSequence mUnknownNameText;
private int mDisplayNameColumnIndex;
private int mAlternativeDisplayNameColumnIndex;
+ private boolean mVisibleContactsOnly = true;
public PhoneNumberListAdapter(Context context) {
super(context);
@@ -68,11 +73,43 @@
return mUnknownNameText;
}
+ public void setVisibleContactsOnly(boolean flag) {
+ mVisibleContactsOnly = flag;
+ }
+
@Override
public void configureLoader(CursorLoader loader, long directoryId) {
- loader.setUri(buildSectionIndexerUri(Phone.CONTENT_URI));
- loader.setProjection(PHONES_PROJECTION);
+ Uri uri;
+ if (isSearchMode()) {
+ String query = getQueryString();
+ Builder builder = Phone.CONTENT_FILTER_URI.buildUpon();
+ if (TextUtils.isEmpty(query)) {
+ builder.appendPath("");
+ } else {
+ builder.appendPath(query); // Builder will encode the query
+ }
+
+ builder.appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+ String.valueOf(directoryId));
+ uri = builder.build();
+ // TODO a projection that includes the search snippet
+ loader.setProjection(PHONES_PROJECTION);
+ } else {
+ uri = Phone.CONTENT_URI;
+ loader.setProjection(PHONES_PROJECTION);
+ }
+
+ if (directoryId == Directory.DEFAULT) {
+ if (mVisibleContactsOnly) {
+ loader.setSelection(Contacts.IN_VISIBLE_GROUP + "=1");
+ }
+ if (isSectionHeaderDisplayEnabled()) {
+ uri = buildSectionIndexerUri(uri);
+ }
+ }
+
+ loader.setUri(uri);
if (getSortOrder() == ContactsContract.Preferences.SORT_ORDER_PRIMARY) {
loader.setSortOrder(Phone.SORT_KEY_PRIMARY);
} else {
diff --git a/src/com/android/contacts/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
index 4e8ebe9..cf787d2 100644
--- a/src/com/android/contacts/list/PhoneNumberPickerFragment.java
+++ b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
@@ -15,6 +15,7 @@
*/
package com.android.contacts.list;
+import com.android.contacts.ContactsSearchManager;
import com.android.contacts.R;
import com.android.contacts.list.ShortcutIntentBuilder.OnShortcutIntentCreatedListener;
@@ -34,7 +35,6 @@
public PhoneNumberPickerFragment() {
setPhotoLoaderEnabled(true);
- setSectionHeaderDisplayEnabled(true);
}
public void setOnPhoneNumberPickerActionListener(OnPhoneNumberPickerActionListener listener) {
@@ -53,11 +53,7 @@
protected void onItemClick(int position, long id) {
if (!isLegacyCompatibilityMode()) {
PhoneNumberListAdapter adapter = (PhoneNumberListAdapter)getAdapter();
-// if (adapter.isSearchAllContactsItemPosition(position)) {
-// searchAllContacts();
-// } else {
pickPhoneNumber(adapter.getDataUri(position));
-// }
} else {
LegacyPhoneNumberListAdapter adapter = (LegacyPhoneNumberListAdapter)getAdapter();
pickPhoneNumber(adapter.getPhoneUri(position));
@@ -68,26 +64,25 @@
protected ContactEntryListAdapter createListAdapter() {
if (!isLegacyCompatibilityMode()) {
PhoneNumberListAdapter adapter = new PhoneNumberListAdapter(getActivity());
- adapter.setSectionHeaderDisplayEnabled(true);
adapter.setDisplayPhotos(true);
return adapter;
} else {
LegacyPhoneNumberListAdapter adapter = new LegacyPhoneNumberListAdapter(getActivity());
- adapter.setSectionHeaderDisplayEnabled(true);
adapter.setDisplayPhotos(true);
return adapter;
}
}
@Override
+ protected void configureAdapter() {
+ setSectionHeaderDisplayEnabled(!isSearchMode());
+ setAizyEnabled(!isSearchMode());
+ super.configureAdapter();
+ }
+
+ @Override
protected View inflateView(LayoutInflater inflater, ViewGroup container) {
- if (isSearchMode()) {
- return inflater.inflate(R.layout.contacts_search_content, null);
- } else if (isSearchResultsMode()) {
- return inflater.inflate(R.layout.contacts_list_search_results, null);
- } else {
- return inflater.inflate(R.layout.contacts_list_content, null);
- }
+ return inflater.inflate(R.layout.contacts_list_content, null);
}
public void pickPhoneNumber(Uri uri) {
@@ -105,4 +100,10 @@
public void onShortcutIntentCreated(Uri uri, Intent shortcutIntent) {
mListener.onShortcutIntentCreated(shortcutIntent);
}
+
+ @Override
+ public void startSearch(String initialQuery) {
+ ContactsSearchManager.startSearchForResult(getActivity(), initialQuery,
+ ACTIVITY_REQUEST_CODE_FILTER, getContactsRequest());
+ }
}