Contact picker restored to some extent
Change-Id: Ib3b5f099dd479a73c944918c8e88e85633c375af
diff --git a/src/android/app/patterns/LoaderManagingFragment.java b/src/android/app/patterns/LoaderManagingFragment.java
index e0a464b..20b5a88 100644
--- a/src/android/app/patterns/LoaderManagingFragment.java
+++ b/src/android/app/patterns/LoaderManagingFragment.java
@@ -38,7 +38,7 @@
* when the new loader completes it's work. The callback will be delivered before the old loader
* is destroyed.
*/
- protected void startLoading(int id, Bundle args) {
+ protected Loader<D> startLoading(int id, Bundle args) {
LoaderInfo<D> info = mLoaders.get(id);
if (info != null) {
// Keep track of the previous instance of this loader so we can destroy
@@ -56,6 +56,7 @@
loader.registerListener(id, this);
loader.startLoading();
}
+ return loader;
}
protected abstract Loader<D> onCreateLoader(int id, Bundle args);
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index e0b5f98..160bacc 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -658,7 +658,7 @@
fragment.setSectionHeaderDisplayEnabled(true);
}
- if (mMode == MODE_INSERT_OR_EDIT_CONTACT) {
+ if (mMode == MODE_PICK_OR_CREATE_CONTACT) {
fragment.setCreateContactEnabled(true);
}
@@ -1972,6 +1972,12 @@
}
public void startQuery() {
+
+ // Disabled
+ if (true) {
+ return;
+ }
+
if (mSearchResultsMode) {
TextView foundContactsText = (TextView)findViewById(R.id.search_results_found);
foundContactsText.setText(R.string.search_results_searching);
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 0614772..accf42a 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -15,11 +15,7 @@
*/
package com.android.contacts.list;
-import android.app.patterns.CursorLoader;
-import android.app.patterns.Loader;
-import android.database.Cursor;
import android.net.Uri;
-import android.os.Bundle;
/**
* Fragment containing a contact list used for browsing (as compared to
@@ -30,39 +26,10 @@
private OnContactBrowserActionListener mListener;
- private CursorLoader mLoader;
-
- @Override
- protected CursorLoader onCreateLoader(int id, Bundle args) {
- mLoader = new CursorLoader(getActivity(), null, null, null, null, null);
- return mLoader;
- }
-
- public CursorLoader getLoader() {
- return mLoader;
- }
-
- @Override
- protected void reloadData() {
- getAdapter().configureLoader(mLoader);
- mLoader.forceLoad();
- }
-
public void setOnContactListActionListener(OnContactBrowserActionListener listener) {
mListener = listener;
}
- @Override
- protected void onInitializeLoaders() {
- startLoading(0, null);
- }
-
- @Override
- protected void onLoadFinished(Loader<Cursor> loader, Cursor data) {
- super.onLoadFinished(loader, data);
- getAdapter().changeCursor(data);
- }
-
public void createNewContact() {
mListener.onCreateNewContactAction();
}
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index 9a3bf1d..3ccd973 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -21,10 +21,10 @@
import com.android.contacts.ContactsListActivity;
import com.android.contacts.R;
import com.android.contacts.widget.ContextMenuAdapter;
-import com.android.contacts.widget.PinnedHeaderListView;
import com.android.contacts.widget.SearchEditText;
import com.android.contacts.widget.SearchEditText.OnCloseListener;
+import android.app.patterns.CursorLoader;
import android.app.patterns.Loader;
import android.app.patterns.LoaderManagingFragment;
import android.content.Context;
@@ -70,6 +70,7 @@
private String mQueryString;
private ContactsApplicationController mAppController;
+ private CursorLoader mLoader;
private T mAdapter;
private View mView;
private ListView mListView;
@@ -87,7 +88,6 @@
private ContactPhotoLoader mPhotoLoader;
private SearchEditText mSearchEditText;
-
protected abstract View inflateView(LayoutInflater inflater, ViewGroup container);
protected abstract T createListAdapter();
@@ -98,6 +98,10 @@
*/
protected abstract void onItemClick(int position, long id);
+ public CursorLoader getLoader() {
+ return mLoader;
+ }
+
public T getAdapter() {
return mAdapter;
}
@@ -119,15 +123,14 @@
return mListView;
}
- // TODO make abstract
@Override
protected Loader<Cursor> onCreateLoader(int id, Bundle args) {
- throw new UnsupportedOperationException();
+ return new CursorLoader(getActivity(), null, null, null, null, null);
}
- // TODO make abstract
@Override
protected void onInitializeLoaders() {
+ mLoader = (CursorLoader)startLoading(0, null);
}
@Override
@@ -136,20 +139,25 @@
return;
}
+ mAdapter.changeCursor(data);
showCount(data);
}
+ protected void reloadData() {
+ mAdapter.configureLoader(mLoader);
+ mLoader.forceLoad();
+ }
+
/**
- * Shows the count of entries included in the list.
+ * Shows the count of entries included in the list. The default
+ * implementation does nothing.
*/
protected void showCount(Cursor data) {
}
- protected void reloadData() {
- }
-
/**
- * Override to provide logic that dismisses this fragment.
+ * Provides logic that dismisses this fragment. The default implementation
+ * does nothing.
*/
protected void finish() {
}
@@ -252,6 +260,7 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container) {
mView = createView(inflater, container);
mAdapter = createListAdapter();
+ mAdapter.configureLoader(mLoader);
setListAdapter(mAdapter);
return mView;
}
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index 1b6e444..e13ba58 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -111,6 +111,10 @@
return getCursor().getString(mDisplayNameColumnIndex);
}
+ public boolean isQuickContactEnabled() {
+ return mQuickContactEnabled;
+ }
+
public void setQuickContactEnabled(boolean quickContactEnabled) {
mQuickContactEnabled = quickContactEnabled;
}
diff --git a/src/com/android/contacts/list/ContactPickerFragment.java b/src/com/android/contacts/list/ContactPickerFragment.java
index 930646b..62ac1c3 100644
--- a/src/com/android/contacts/list/ContactPickerFragment.java
+++ b/src/com/android/contacts/list/ContactPickerFragment.java
@@ -17,10 +17,10 @@
import com.android.contacts.R;
-import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AdapterView;
/**
* Fragment for the contact list used for browsing contacts (as compared to
@@ -35,23 +35,44 @@
mListener = listener;
}
+ public void setCreateContactEnabled(boolean flag) {
+ this.mCreateContactEnabled = flag;
+ }
+
+ public boolean isCreateContactEnabled() {
+ return mCreateContactEnabled;
+ }
+
+ @Override
+ protected View createView(LayoutInflater inflater, ViewGroup container) {
+ View view = super.createView(inflater, container);
+ if (mCreateContactEnabled) {
+ getListView().addHeaderView(inflater.inflate(R.layout.create_new_contact, null, false));
+ }
+ return view;
+ }
+
public boolean isSearchAllContactsItemPosition(int position) {
return isSearchMode() && position == getAdapter().getCount() - 1;
}
@Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ if (position == 0 && !isSearchMode() && mCreateContactEnabled) {
+ mListener.onCreateNewContactAction();
+ } else {
+ super.onItemClick(parent, view, position, id);
+ }
+ }
+
+ @Override
protected void onItemClick(int position, long id) {
if (isSearchAllContactsItemPosition(position)) {
mListener.onSearchAllContactsAction((String)null);
} else {
- Intent intent;
- if (position == 0 && !isSearchMode() && isCreateContactEnabled()) {
- mListener.onCreateNewContactAction();
- } else {
- ContactListAdapter adapter = getAdapter();
- adapter.moveToPosition(position);
- mListener.onPickContactAction(adapter.getContactUri());
- }
+ ContactListAdapter adapter = getAdapter();
+ adapter.moveToPosition(position);
+ mListener.onPickContactAction(adapter.getContactUri());
}
}
@@ -59,8 +80,17 @@
protected ContactListAdapter createListAdapter() {
// TODO different adapter
ContactListAdapter adapter = new DefaultContactListAdapter(getActivity());
- adapter.setSectionHeaderDisplayEnabled(isSectionHeaderDisplayEnabled());
- adapter.setDisplayPhotos(isPhotoLoaderEnabled());
+ adapter.setSectionHeaderDisplayEnabled(true);
+
+ adapter.setDisplayPhotos(true);
+ adapter.setQuickContactEnabled(false);
+
+ adapter.setSearchMode(isSearchMode());
+ adapter.setSearchResultsMode(isSearchResultsMode());
+ adapter.setQueryString(getQueryString());
+
+ adapter.setContactNameDisplayOrder(getContactNameDisplayOrder());
+ adapter.setSortOrder(getSortOrder());
// TODO more settings
@@ -77,12 +107,4 @@
return inflater.inflate(R.layout.contacts_list_content, null);
}
}
-
- public void setCreateContactEnabled(boolean flag) {
- this.mCreateContactEnabled = flag;
- }
-
- public boolean isCreateContactEnabled() {
- return mCreateContactEnabled;
- }
}
diff --git a/src/com/android/contacts/list/DefaultContactListAdapter.java b/src/com/android/contacts/list/DefaultContactListAdapter.java
index 309475c..3ddf42c 100644
--- a/src/com/android/contacts/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/list/DefaultContactListAdapter.java
@@ -77,7 +77,13 @@
final ContactListItemView view = (ContactListItemView)itemView;
bindSectionHeaderAndDivider(view, cursor);
- bindQuickContact(view, cursor);
+
+ if (isQuickContactEnabled()) {
+ bindQuickContact(view, cursor);
+ } else {
+ bindPhoto(view, cursor);
+ }
+
bindName(view, cursor);
bindPresence(view, cursor);