Show contact after creation; refactor ContactEditorFragment.Listener
Change-Id: I1fcf45334196a3776ed187cfeb93334f88cee281
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index c94907e..f030311 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -67,10 +67,10 @@
private static final String KEY_MODE = "mode";
- private static final int SUBACTIVITY_NEW_CONTACT = 1;
- private static final int SUBACTIVITY_VIEW_CONTACT = 2;
- private static final int SUBACTIVITY_DISPLAY_GROUP = 3;
- private static final int SUBACTIVITY_SEARCH = 4;
+ private static final int SUBACTIVITY_NEW_CONTACT = 2;
+ private static final int SUBACTIVITY_VIEW_CONTACT = 3;
+ private static final int SUBACTIVITY_DISPLAY_GROUP = 4;
+ private static final int SUBACTIVITY_SEARCH = 5;
private DialogManager mDialogManager = new DialogManager(this);
@@ -503,20 +503,14 @@
private class EditorFragmentListener implements ContactEditorFragment.Listener {
@Override
- public void closeAfterDelete() {
- Toast.makeText(ContactBrowserActivity.this, "closeAfterDelete",
- Toast.LENGTH_LONG).show();
- }
-
- @Override
- public void closeAfterRevert() {
+ public void onReverted() {
final Uri uri = mEditorFragment.getUri();
closeEditorFragment(false);
setupContactDetailFragment(uri);
}
@Override
- public void closeAfterSaving(int resultCode, Intent resultIntent) {
+ public void onSaveFinished(int resultCode, Intent resultIntent) {
// it is already saved, so no need to save again here
final Uri uri = mEditorFragment.getUri();
closeEditorFragment(false);
@@ -524,19 +518,19 @@
}
@Override
- public void closeAfterSplit() {
+ public void onSplit() {
Toast.makeText(ContactBrowserActivity.this, "closeAfterSplit",
Toast.LENGTH_LONG).show();
}
@Override
- public void closeBecauseAccountSelectorAborted() {
+ public void onAccountSelectorAborted() {
Toast.makeText(ContactBrowserActivity.this, "closeBecauseAccountSelectorAborted",
Toast.LENGTH_LONG).show();
}
@Override
- public void closeBecauseContactNotFound() {
+ public void onContactNotFound() {
Toast.makeText(ContactBrowserActivity.this, "closeBecauseContactNotFound",
Toast.LENGTH_LONG).show();
}
@@ -602,7 +596,7 @@
}
case R.id.menu_add: {
final Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
- startActivity(intent);
+ startActivityForResult(intent, SUBACTIVITY_NEW_CONTACT);
return true;
}
case R.id.menu_import_export: {
@@ -683,13 +677,14 @@
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
-// case SUBACTIVITY_NEW_CONTACT:
-// if (resultCode == RESULT_OK) {
-// returnPickerResult(null, data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME),
-// data.getData());
-// setRe
-// }
-// break;
+ case SUBACTIVITY_NEW_CONTACT: {
+ if (resultCode == RESULT_OK && mContactContentDisplayed) {
+ final Uri newContactUri = data.getData();
+ mListFragment.setSelectedContactUri(newContactUri);
+ setupContactDetailFragment(newContactUri);
+ }
+ break;
+ }
// case SUBACTIVITY_VIEW_CONTACT:
// if (resultCode == RESULT_OK) {
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 59a4e83..71ed3c5 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -97,39 +97,35 @@
private final ContactEditorFragment.Listener mFragmentListener =
new ContactEditorFragment.Listener() {
@Override
- public void closeAfterDelete() {
- Toast.makeText(ContactEditorActivity.this, "closeAfterDelete",
- Toast.LENGTH_LONG).show();
- }
-
- @Override
- public void closeAfterRevert() {
+ public void onReverted() {
finish();
}
@Override
- public void closeAfterSaving(int resultCode, Intent resultIntent) {
+ public void onSaveFinished(int resultCode, Intent resultIntent) {
+ setResult(resultCode, resultIntent);
finish();
}
@Override
- public void closeAfterSplit() {
+ public void onSplit() {
finish();
}
@Override
- public void closeBecauseAccountSelectorAborted() {
+ public void onAccountSelectorAborted() {
finish();
}
@Override
- public void closeBecauseContactNotFound() {
+ public void onContactNotFound() {
+ setResult(Activity.RESULT_CANCELED, null);
finish();
}
@Override
public void setTitleTo(int resourceId) {
- Toast.makeText(ContactEditorActivity.this, "setTitleTo", Toast.LENGTH_LONG).show();
+ setTitle(resourceId);
}
};
diff --git a/src/com/android/contacts/views/editor/ContactEditorFragment.java b/src/com/android/contacts/views/editor/ContactEditorFragment.java
index f75cfd1..5951f7f 100644
--- a/src/com/android/contacts/views/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/views/editor/ContactEditorFragment.java
@@ -519,7 +519,7 @@
public void onCancel(DialogInterface dialog) {
// If nothing remains, close activity
if (!hasValidState()) {
- mListener.closeBecauseAccountSelectorAborted();
+ mListener.onAccountSelectorAborted();
}
}
};
@@ -733,7 +733,7 @@
}
private boolean doRevertAction() {
- if (mListener != null) mListener.closeAfterRevert();
+ if (mListener != null) mListener.onReverted();
return true;
}
@@ -767,10 +767,10 @@
resultCode = Activity.RESULT_CANCELED;
resultIntent = null;
}
- if (mListener != null) mListener.closeAfterSaving(resultCode, resultIntent);
+ if (mListener != null) mListener.onSaveFinished(resultCode, resultIntent);
break;
case SAVE_MODE_SPLIT:
- if (mListener != null) mListener.closeAfterSplit();
+ if (mListener != null) mListener.onSplit();
break;
case SAVE_MODE_JOIN:
@@ -898,29 +898,25 @@
public static interface Listener {
/**
- * Contact was not found, so somehow close this fragment.
+ * Contact was not found, so somehow close this fragment. This is raised after a contact
+ * is removed via Menu/Delete (unless it was a new contact)
*/
- void closeBecauseContactNotFound();
+ void onContactNotFound();
/**
* Contact was split, so we can close now
*/
- void closeAfterSplit();
+ void onSplit();
/**
* User was presented with an account selection and couldn't decide.
*/
- void closeBecauseAccountSelectorAborted();
+ void onAccountSelectorAborted();
/**
* User has tapped Revert, close the fragment now.
*/
- void closeAfterRevert();
-
- /**
- * User has removed the contact, close the fragment now.
- */
- void closeAfterDelete();
+ void onReverted();
/**
* Set the Title (e.g. of the Activity)
@@ -928,11 +924,9 @@
void setTitleTo(int resourceId);
/**
- * Contact was
- * @param resultCode
- * @param resultIntent
+ * Contact was saved and the Fragment can now be closed safely.
*/
- void closeAfterSaving(int resultCode, Intent resultIntent);
+ void onSaveFinished(int resultCode, Intent resultIntent);
}
private class EntityDeltaComparator implements Comparator<EntityDelta> {
@@ -1117,7 +1111,7 @@
}
// Save the deletes
doSaveAction(SAVE_MODE_DEFAULT);
- mListener.closeAfterDelete();
+ mListener.onContactNotFound();
}
}
@@ -1330,7 +1324,7 @@
if (data == ContactLoader.Result.NOT_FOUND) {
// Item has been deleted
Log.i(TAG, "No contact found. Closing activity");
- if (mListener != null) mListener.closeBecauseContactNotFound();
+ if (mListener != null) mListener.onContactNotFound();
return;
}