Add delete button to Edit View

When a contact is deleted, QuickContacts is told by LoaderCallbacks
that it shouldn't be visible prior to onResume().

Change-Id: I5f9c84cbfefddca3722bd1de3c5a98760547ef0a
diff --git a/res/menu/edit_contact.xml b/res/menu/edit_contact.xml
index 58e13cb..fe6d2b9 100644
--- a/res/menu/edit_contact.xml
+++ b/res/menu/edit_contact.xml
@@ -34,6 +34,10 @@
         android:title="@string/menu_discard" />
 
     <item
+        android:id="@+id/menu_delete"
+        android:title="@string/menu_deleteContact" />
+
+    <item
         android:id="@+id/menu_set_ringtone"
         android:title="@string/menu_set_ring_tone" />
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 127d93b..06e52cf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -168,8 +168,8 @@
     <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
     <string name="deleteConfirmation">This contact will be deleted.</string>
 
-    <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=12] -->
-    <string name="menu_discard">Discard</string>
+    <!-- Menu item to indicate you want to stop editing a contact and NOT save the changes you've made [CHAR LIMIT=30] -->
+    <string name="menu_discard">Discard changes</string>
 
     <!-- Message displayed in a toast when you try to view the details of a contact that
          for some reason doesn't exist anymore. [CHAR LIMIT=NONE]-->
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index d12da85..d47449d 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -39,6 +39,7 @@
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.interactions.ContactDeletionInteraction;
 import com.android.contacts.util.DialogManager;
 
 import java.util.ArrayList;
@@ -156,6 +157,12 @@
 
     private final ContactEditorFragment.Listener mFragmentListener =
             new ContactEditorFragment.Listener() {
+
+        @Override
+        public void onDeleteRequested(Uri contactUri) {
+            ContactDeletionInteraction.start(ContactEditorActivity.this, contactUri, true);
+        }
+
         @Override
         public void onReverted() {
             finish();
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 73a2d45..1585c66 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -1043,6 +1043,7 @@
         final MenuItem discardMenu = menu.findItem(R.id.menu_discard);
         final MenuItem sendToVoiceMailMenu = menu.findItem(R.id.menu_send_to_voicemail);
         final MenuItem ringToneMenu = menu.findItem(R.id.menu_set_ringtone);
+        final MenuItem deleteMenu = menu.findItem(R.id.menu_delete);
 
         // Set visibility of menus
         doneMenu.setVisible(false);
@@ -1056,6 +1057,7 @@
             HelpUtils.prepareHelpMenuItem(mContext, helpMenu, R.string.help_url_people_add);
             splitMenu.setVisible(false);
             joinMenu.setVisible(false);
+            deleteMenu.setVisible(false);
         } else if (Intent.ACTION_EDIT.equals(mAction)) {
             HelpUtils.prepareHelpMenuItem(mContext, helpMenu, R.string.help_url_people_edit);
             // Split only if more than one raw profile and not a user profile
@@ -1086,6 +1088,9 @@
                 return save(SaveMode.CLOSE);
             case R.id.menu_discard:
                 return revert();
+            case R.id.menu_delete:
+                if (mListener != null) mListener.onDeleteRequested(mLookupUri);
+                return true;
             case R.id.menu_split:
                 return doSplitContactAction();
             case R.id.menu_join:
@@ -1450,6 +1455,8 @@
          */
         void onCustomEditContactActivityRequested(AccountWithDataSet account, Uri rawContactUri,
                 Bundle intentExtras, boolean redirect);
+
+        void onDeleteRequested(Uri contactUri);
     }
 
     private class EntityDeltaComparator implements Comparator<RawContactDelta> {