OSDN Git Service

Pass the shortcut to the user dictionary provider.
authorJean Chalard <jchalard@google.com>
Wed, 9 May 2012 09:39:36 +0000 (18:39 +0900)
committerJean Chalard <jchalard@google.com>
Wed, 9 May 2012 10:57:08 +0000 (19:57 +0900)
Bug: 6026080

Change-Id: I87b7c8b1ae89856f393871e6d3440b43efc22a29

res/layout/user_dictionary_add_word_fullscreen.xml
src/com/android/settings/UserDictionarySettings.java
src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java

index 9e2617b..c0f3f53 100644 (file)
@@ -49,7 +49,7 @@
               android:layout_height="wrap_content"
               android:layout_gravity="left|center_vertical"
               android:text="@string/user_dict_settings_add_shortcut_option_name" />
-    <EditText android:id="@+id/user_dictionary_settings_add_dialog_shortcut"
+    <EditText android:id="@+id/user_dictionary_add_shortcut"
               android:maxLength="@integer/maximum_user_dictionary_word_length"
               android:layout_width="wrap_content"
               android:layout_gravity="fill_horizontal|center_vertical"
@@ -64,7 +64,7 @@
               android:layout_height="wrap_content"
               android:layout_gravity="left|center_vertical"
               android:text="@string/user_dict_settings_add_locale_option_name" />
-    <Spinner  android:id="@+id/user_dictionary_settings_add_dialog_locale"
+    <Spinner  android:id="@+id/user_dictionary_add_locale"
               android:layout_marginLeft="8dip"
               android:layout_marginBottom="8dip"
               android:layout_marginTop="8dip"
index 931fc94..ec21111 100644 (file)
@@ -155,9 +155,10 @@ public class UserDictionarySettings extends ListFragment {
 
     @Override
     public void onListItemClick(ListView l, View v, int position, long id) {
-        String word = getWord(position);
+        final String word = getWord(position);
+        final String shortcut = getShortcut(position);
         if (word != null) {
-            showAddOrEditDialog(word);
+            showAddOrEditDialog(word, shortcut);
         }
     }
 
@@ -173,7 +174,7 @@ public class UserDictionarySettings extends ListFragment {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == OPTIONS_MENU_ADD) {
-            showAddOrEditDialog(null);
+            showAddOrEditDialog(null, null);
             return true;
         }
         return false;
@@ -182,13 +183,15 @@ public class UserDictionarySettings extends ListFragment {
     /**
      * Add or edit a word. If editingWord is null, it's an add; otherwise, it's an edit.
      * @param editingWord the word to edit, or null if it's an add.
+     * @param editingShortcut the shortcut for this entry, or null if none.
      */
-    private void showAddOrEditDialog(final String editingWord) {
+    private void showAddOrEditDialog(final String editingWord, final String editingShortcut) {
         final Bundle args = new Bundle();
         args.putInt(UserDictionaryAddWordContents.EXTRA_MODE, null == editingWord
                 ? UserDictionaryAddWordContents.MODE_INSERT
                 : UserDictionaryAddWordContents.MODE_EDIT);
         args.putString(UserDictionaryAddWordContents.EXTRA_WORD, editingWord);
+        args.putString(UserDictionaryAddWordContents.EXTRA_SHORTCUT, editingShortcut);
         args.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mLocale);
         android.preference.PreferenceActivity pa =
                 (android.preference.PreferenceActivity)getActivity();
@@ -197,7 +200,7 @@ public class UserDictionarySettings extends ListFragment {
                 args, R.string.details_title, null, null, 0);
     }
 
-    private String getWord(int position) {
+    private String getWord(final int position) {
         if (null == mCursor) return null;
         mCursor.moveToPosition(position);
         // Handle a possible race-condition
@@ -207,6 +210,16 @@ public class UserDictionarySettings extends ListFragment {
                 mCursor.getColumnIndexOrThrow(UserDictionary.Words.WORD));
     }
 
+    private String getShortcut(final int position) {
+        if (null == mCursor) return null;
+        mCursor.moveToPosition(position);
+        // Handle a possible race-condition
+        if (mCursor.isAfterLast()) return null;
+
+        return mCursor.getString(
+                mCursor.getColumnIndexOrThrow(UserDictionary.Words.SHORTCUT));
+    }
+
     public static void deleteWord(final String word, final ContentResolver resolver) {
         resolver.delete(
                 UserDictionary.Words.CONTENT_URI, DELETE_SELECTION, new String[] { word });
index 2ecca67..95e031e 100644 (file)
@@ -40,6 +40,7 @@ import java.util.TreeSet;
 public class UserDictionaryAddWordContents {
     public static final String EXTRA_MODE = "mode";
     public static final String EXTRA_WORD = "word";
+    public static final String EXTRA_SHORTCUT = "shortcut";
     public static final String EXTRA_LOCALE = "locale";
 
     public static final int MODE_EDIT = 0;
@@ -48,19 +49,27 @@ public class UserDictionaryAddWordContents {
     private static final int FREQUENCY_FOR_USER_DICTIONARY_ADDS = 250;
 
     private final int mMode; // Either MODE_EDIT or MODE_INSERT
-    private final EditText mEditText;
+    private final EditText mWordEditText;
+    private final EditText mShortcutEditText;
     private String mLocale;
     private final String mOldWord;
+    private final String mOldShortcut;
 
     /* package */ UserDictionaryAddWordContents(final View view, final Bundle args) {
-        mEditText = (EditText)view.findViewById(R.id.user_dictionary_add_word_text);
+        mWordEditText = (EditText)view.findViewById(R.id.user_dictionary_add_word_text);
+        mShortcutEditText = (EditText)view.findViewById(R.id.user_dictionary_add_shortcut);
         final String word = args.getString(EXTRA_WORD);
         if (null != word) {
-            mEditText.setText(word);
-            mEditText.setSelection(word.length());
+            mWordEditText.setText(word);
+            mWordEditText.setSelection(word.length());
+        }
+        final String shortcut = args.getString(EXTRA_SHORTCUT);
+        if (null != shortcut && null != mShortcutEditText) {
+            mShortcutEditText.setText(shortcut);
         }
         mMode = args.getInt(EXTRA_MODE); // default return value for #getInt() is 0 = MODE_EDIT
         mOldWord = args.getString(EXTRA_WORD);
+        mOldShortcut = args.getString(EXTRA_SHORTCUT);
         updateLocale(args.getString(EXTRA_LOCALE));
     }
 
@@ -71,7 +80,10 @@ public class UserDictionaryAddWordContents {
     }
 
     /* package */ void saveStateIntoBundle(final Bundle outState) {
-        outState.putString(EXTRA_WORD, mEditText.getText().toString());
+        outState.putString(EXTRA_WORD, mWordEditText.getText().toString());
+        if (null != mShortcutEditText) {
+            outState.putString(EXTRA_SHORTCUT, mShortcutEditText.getText().toString());
+        }
         outState.putString(EXTRA_LOCALE, mLocale);
     }
 
@@ -80,7 +92,7 @@ public class UserDictionaryAddWordContents {
         if (UserDictionaryAddWordContents.MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
             UserDictionarySettings.deleteWord(mOldWord, resolver);
         }
-        final String newWord = mEditText.getText().toString();
+        final String newWord = mWordEditText.getText().toString();
         if (TextUtils.isEmpty(newWord)) {
             // If the word is somehow empty, don't insert it.
             return;
@@ -92,7 +104,8 @@ public class UserDictionaryAddWordContents {
         // In this class we use the empty string to represent 'all locales' and mLocale cannot
         // be null. However the addWord method takes null to mean 'all locales'.
         UserDictionary.Words.addWord(context, newWord.toString(),
-                FREQUENCY_FOR_USER_DICTIONARY_ADDS, null /* shortcut */,
+                FREQUENCY_FOR_USER_DICTIONARY_ADDS,
+                null == mShortcutEditText ? null : mShortcutEditText.getText().toString(),
                 TextUtils.isEmpty(mLocale) ? null : Utils.createLocaleFromString(mLocale));
     }
 
index 7ab8ae6..0a9738f 100644 (file)
@@ -74,7 +74,7 @@ public class UserDictionaryAddWordFragment extends Fragment
         final ArrayList<LocaleRenderer> localesList = mContents.getLocalesList(getActivity());
 
         final Spinner localeSpinner =
-                (Spinner)mRootView.findViewById(R.id.user_dictionary_settings_add_dialog_locale);
+                (Spinner)mRootView.findViewById(R.id.user_dictionary_add_locale);
         final ArrayAdapter<LocaleRenderer> adapter = new ArrayAdapter<LocaleRenderer>(getActivity(),
                 android.R.layout.simple_spinner_item, localesList);
         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);