Proper handling of View/Edit from list-context Menu
Change-Id: Ibe299620ca0c0ba237a3cd4bfc83e9c807cc63ab
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 62530fd..d05f2b1 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -290,7 +290,7 @@
}
}
- private void setupContactEditorFragment() {
+ private void setupContactEditorFragment(Uri contactLookupUri) {
// No detail view here
closeDetailFragment();
closeEmptyFragment();
@@ -299,6 +299,8 @@
if (mEditorFragment != null) return;
mEditorFragment = new ContactEditorFragment();
+ mEditorFragment.load(Intent.ACTION_EDIT, contactLookupUri,
+ Contacts.CONTENT_ITEM_TYPE, new Bundle());
// Nothing showing yet? Create (this happens during Activity-Startup)
openFragmentTransaction()
@@ -418,8 +420,9 @@
}
private final class ContactBrowserActionListener implements OnContactBrowserActionListener {
- public void onViewContactAction(Uri contactLookupUri) {
+ public void onViewContactAction(Uri contactLookupUri, boolean force) {
if (mContactContentDisplayed) {
+ if (force) closeEditorFragment(true);
mListFragment.setSelectedContactUri(contactLookupUri);
setupContactDetailFragment(contactLookupUri);
} else {
@@ -437,12 +440,18 @@
}
public void onEditContactAction(Uri contactLookupUri) {
- Intent intent = new Intent(Intent.ACTION_EDIT, contactLookupUri);
- Bundle extras = getIntent().getExtras();
- if (extras != null) {
- intent.putExtras(extras);
+ if (mContactContentDisplayed) {
+ closeEditorFragment(true);
+ mListFragment.setSelectedContactUri(contactLookupUri);
+ setupContactEditorFragment(contactLookupUri);
+ } else {
+ Intent intent = new Intent(Intent.ACTION_EDIT, contactLookupUri);
+ Bundle extras = getIntent().getExtras();
+ if (extras != null) {
+ intent.putExtras(extras);
+ }
+ startActivity(intent);
}
- startActivity(intent);
}
public void onAddToFavoritesAction(Uri contactUri) {
@@ -482,9 +491,7 @@
@Override
public void onEditRequested(Uri contactLookupUri) {
- setupContactEditorFragment();
- mEditorFragment.load(Intent.ACTION_EDIT, contactLookupUri, Contacts.CONTENT_ITEM_TYPE,
- new Bundle());
+ setupContactEditorFragment(contactLookupUri);
}
@Override
diff --git a/src/com/android/contacts/activities/ContactSearchActivity.java b/src/com/android/contacts/activities/ContactSearchActivity.java
index 327ccfa..799653c 100644
--- a/src/com/android/contacts/activities/ContactSearchActivity.java
+++ b/src/com/android/contacts/activities/ContactSearchActivity.java
@@ -108,7 +108,7 @@
}
private final class ContactBrowserActionListener implements OnContactBrowserActionListener {
- public void onViewContactAction(Uri contactLookupUri) {
+ public void onViewContactAction(Uri contactLookupUri, boolean force) {
startActivity(new Intent(Intent.ACTION_VIEW, contactLookupUri));
}
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 55d225a..b1e13ad 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -231,7 +231,7 @@
}
private final class ContactBrowserActionListener implements OnContactBrowserActionListener {
- public void onViewContactAction(Uri contactLookupUri) {
+ public void onViewContactAction(Uri contactLookupUri, boolean force) {
throw new UnsupportedOperationException();
}
diff --git a/src/com/android/contacts/list/ContactBrowseListContextMenuAdapter.java b/src/com/android/contacts/list/ContactBrowseListContextMenuAdapter.java
index 1529c1d..0cb4394 100644
--- a/src/com/android/contacts/list/ContactBrowseListContextMenuAdapter.java
+++ b/src/com/android/contacts/list/ContactBrowseListContextMenuAdapter.java
@@ -100,7 +100,7 @@
final Uri contactUri = adapter.getContactUri(position);
switch (item.getItemId()) {
case MENU_ITEM_VIEW_CONTACT: {
- mContactListFragment.viewContact(contactUri);
+ mContactListFragment.viewContact(contactUri, true);
return true;
}
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 85b70fe..c3a3f2e 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -132,8 +132,8 @@
mListener.onCreateNewContactAction();
}
- public void viewContact(Uri contactUri) {
- mListener.onViewContactAction(contactUri);
+ public void viewContact(Uri contactUri, boolean finishEditing) {
+ mListener.onViewContactAction(contactUri, finishEditing);
}
public void editContact(Uri contactUri) {
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 2133d49..dd0ae3e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -119,7 +119,7 @@
editContact(adapter.getContactUri(position));
}
} else {
- viewContact(adapter.getContactUri(position));
+ viewContact(adapter.getContactUri(position), false);
}
}
diff --git a/src/com/android/contacts/list/OnContactBrowserActionListener.java b/src/com/android/contacts/list/OnContactBrowserActionListener.java
index 2532c84..5291639 100644
--- a/src/com/android/contacts/list/OnContactBrowserActionListener.java
+++ b/src/com/android/contacts/list/OnContactBrowserActionListener.java
@@ -24,8 +24,11 @@
/**
* Opens the specified contact for viewing.
+ *
+ * @param contactLookupUri The lookup-uri of the Contact that should be opened
+ * @param finishEditing The user has explicitly requested to leave the edit mode
*/
- void onViewContactAction(Uri contactLookupUri);
+ void onViewContactAction(Uri contactLookupUri, boolean finishEditing);
/**
* Creates a new contact.
diff --git a/src/com/android/contacts/list/StrequentContactListFragment.java b/src/com/android/contacts/list/StrequentContactListFragment.java
index 4b8e2bb..722e3b7 100644
--- a/src/com/android/contacts/list/StrequentContactListFragment.java
+++ b/src/com/android/contacts/list/StrequentContactListFragment.java
@@ -58,7 +58,7 @@
@Override
protected void onItemClick(int position, long id) {
ContactListAdapter adapter = getAdapter();
- viewContact(adapter.getContactUri(position));
+ viewContact(adapter.getContactUri(position), false);
}
@Override