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> {