Preserving separate contact selection per mode.
Change-Id: Ic481ffbbe8582cece04e4f2c0b1aa7aada7b93c7
diff --git a/src/com/android/contacts/activities/ContactListActivity.java b/src/com/android/contacts/activities/ContactListActivity.java
index 7b8eccc..ed098a7 100644
--- a/src/com/android/contacts/activities/ContactListActivity.java
+++ b/src/com/android/contacts/activities/ContactListActivity.java
@@ -273,6 +273,18 @@
}
private void setupContactDetailFragment(Uri contactLookupUri) {
+
+ // If we are already editing this URI - just continue editing
+ if (mEditorFragment != null && contactLookupUri != null
+ && contactLookupUri.equals(mEditorFragment.getUri())) {
+ return;
+ }
+
+ if (mDetailFragment != null && contactLookupUri != null
+ && contactLookupUri.equals(mDetailFragment.getUri())) {
+ return;
+ }
+
// No editor here
closeEditorFragment();
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 4d7be3f..cfe0830 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -18,6 +18,7 @@
import com.android.contacts.R;
import android.net.Uri;
+import android.widget.ListView;
/**
* Fragment containing a contact list used for browsing (as compared to
@@ -88,4 +89,18 @@
super.finish();
mListener.onFinishAction();
}
+
+ @Override
+ protected void completeRestoreInstanceState() {
+ super.completeRestoreInstanceState();
+ ListView listView = getListView();
+ if (listView.getChoiceMode() == ListView.CHOICE_MODE_SINGLE) {
+ Uri checkedUri = null;
+ int position = listView.getCheckedItemPosition();
+ if (position != -1) {
+ checkedUri = getAdapter().getContactUri(position - listView.getHeaderViewsCount());
+ }
+ mListener.onViewContactAction(checkedUri);
+ }
+ }
}
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index 2eedf0c..1cb8969 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -733,7 +733,7 @@
/**
* Restore the list state after the adapter is populated.
*/
- private void completeRestoreInstanceState() {
+ protected void completeRestoreInstanceState() {
if (mListState != null) {
mListView.onRestoreInstanceState(mListState);
mListState = null;
diff --git a/src/com/android/contacts/views/detail/ContactDetailFragment.java b/src/com/android/contacts/views/detail/ContactDetailFragment.java
index a7319f5..8bd465d 100644
--- a/src/com/android/contacts/views/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/views/detail/ContactDetailFragment.java
@@ -214,6 +214,10 @@
mListener = value;
}
+ public Uri getUri() {
+ return mLookupUri;
+ }
+
public void loadUri(Uri lookupUri) {
// TODO: Ensure we are not loading twice here
mLookupUri = lookupUri;
diff --git a/src/com/android/contacts/views/editor/ContactEditorFragment.java b/src/com/android/contacts/views/editor/ContactEditorFragment.java
index 8fd8473..7418e8b 100644
--- a/src/com/android/contacts/views/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/views/editor/ContactEditorFragment.java
@@ -1356,4 +1356,8 @@
}
}
}
+
+ public Uri getUri() {
+ return mUri;
+ }
}
\ No newline at end of file