Implement the delete button for user words

Bug: 6026080
Change-Id: I43345874edb0a1b51dfcac9c99e74c345eeef7e6
diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
index 1e8bf74..d33f8c3 100644
--- a/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
+++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
@@ -87,9 +87,18 @@
         outState.putString(EXTRA_LOCALE, mLocale);
     }
 
+    /* package */ void delete(final Context context) {
+        if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
+            // Mode edit: remove the old entry.
+            final ContentResolver resolver = context.getContentResolver();
+            UserDictionarySettings.deleteWord(mOldWord, mOldShortcut, resolver);
+        }
+        // If we are in add mode, nothing was added, so we don't need to do anything.
+    }
+
     /* package */ void apply(final Context context) {
         final ContentResolver resolver = context.getContentResolver();
-        if (UserDictionaryAddWordContents.MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
+        if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
             // Mode edit: remove the old entry.
             UserDictionarySettings.deleteWord(mOldWord, mOldShortcut, resolver);
         }
diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
index 0a9738f..676ef7d 100644
--- a/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
+++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
@@ -45,6 +45,7 @@
 
     private UserDictionaryAddWordContents mContents;
     private View mRootView;
+    private boolean mIsDeleting = false;
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
@@ -55,6 +56,7 @@
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
         mRootView = inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null);
+        mIsDeleting = false;
         return mRootView;
     }
 
@@ -66,6 +68,24 @@
                 MenuItem.SHOW_AS_ACTION_WITH_TEXT);
     }
 
+    /**
+     * Callback for the framework when a menu option is pressed.
+     *
+     * This class only supports the delete menu item.
+     * @param MenuItem the item that was pressed
+     * @return false to allow normal menu processing to proceed, true to consume it here
+     */
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == OPTIONS_MENU_DELETE) {
+            mContents.delete(getActivity());
+            mIsDeleting = true;
+            getFragmentManager().popBackStack();
+            return true;
+        }
+        return false;
+    }
+
     @Override
     public void onResume() {
         super.onResume();
@@ -85,8 +105,10 @@
     @Override
     public void onPause() {
         super.onPause();
-        mContents.apply(getActivity());
-        // We are being hidden: commit changes to the user dictionary
+        // We are being hidden: commit changes to the user dictionary, unless we were deleting it
+        if (!mIsDeleting) {
+            mContents.apply(getActivity());
+        }
     }
 
     @Override