summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/inputmethod
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-05-08 19:11:49 +0900
committerJean Chalard <jchalard@google.com>2012-05-08 20:26:59 +0900
commitbe3f0faf526d628b578b1af6d975c19cfdf8637b (patch)
treeaf35b918917f1090f5ca853c0806129f177ff42b /src/com/android/settings/inputmethod
parentbe07e49a9292b653b923cbfa64dc5c42972ded41 (diff)
downloadpackages_apps_settings-be3f0faf526d628b578b1af6d975c19cfdf8637b.zip
packages_apps_settings-be3f0faf526d628b578b1af6d975c19cfdf8637b.tar.gz
packages_apps_settings-be3f0faf526d628b578b1af6d975c19cfdf8637b.tar.bz2
Factor some code
Bug: 6026080 Change-Id: I38475a95b1d421162099390244dbda09658346f5
Diffstat (limited to 'src/com/android/settings/inputmethod')
-rw-r--r--src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java71
-rw-r--r--src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java59
-rw-r--r--src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java6
3 files changed, 92 insertions, 44 deletions
diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java
index b58f258..e502b7a 100644
--- a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java
+++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java
@@ -41,19 +41,12 @@ import android.widget.Spinner;
public class UserDictionaryAddWordActivity extends Activity
implements AdapterView.OnItemSelectedListener {
- public static final String EXTRA_MODE = "mode";
- public static final String EXTRA_WORD = "word";
- public static final String EXTRA_LOCALE = "locale";
private static final int FREQUENCY_FOR_USER_DICTIONARY_ADDS = 250;
private static final String STATE_KEY_IS_OPEN = "isOpen";
- private static final String STATE_KEY_WORD = "word";
- private static final String STATE_KEY_LOCALE = "locale";
public static final String MODE_EDIT_ACTION = "com.android.settings.USER_DICTIONARY_EDIT";
public static final String MODE_INSERT_ACTION = "com.android.settings.USER_DICTIONARY_INSERT";
- private static final int MODE_EDIT = 0;
- private static final int MODE_INSERT = 1;
private static final int[] IDS_SHOWN_ONLY_IN_MORE_OPTIONS_MODE = {
R.id.user_dictionary_add_word_label,
@@ -63,10 +56,8 @@ public class UserDictionaryAddWordActivity extends Activity
R.id.user_dictionary_settings_add_dialog_locale,
};
- private EditText mEditText;
- private int mMode; // Either MODE_EDIT or MODE_INSERT
+ private UserDictionaryAddWordContents mContents;
private String mOldWord;
- private String mLocale; // may not be null: will be converted to default locale if received null
private boolean mIsShowingMoreOptions = false;
@@ -76,39 +67,32 @@ public class UserDictionaryAddWordActivity extends Activity
setContentView(R.layout.user_dictionary_add_word);
final Intent intent = getIntent();
final String action = intent.getAction();
+ final int mode;
if (MODE_EDIT_ACTION.equals(action)) {
- mMode = MODE_EDIT;
+ mode = UserDictionaryAddWordContents.MODE_EDIT;
} else if (MODE_INSERT_ACTION.equals(action)) {
- mMode = MODE_INSERT;
+ mode = UserDictionaryAddWordContents.MODE_INSERT;
} else {
// Can never come here because we only support these two actions in the manifest
throw new RuntimeException("Unsupported action: " + action);
}
- String savedWord = null;
- String savedLocale = null;
+ // The following will get the EXTRA_WORD and EXTRA_LOCALE fields that are in the intent.
+ // We do need to add the action by hand, because UserDictionaryAddWordContents expects
+ // it to be in the bundle, in the EXTRA_MODE key.
+ final Bundle args = intent.getExtras();
+ args.putInt(UserDictionaryAddWordContents.EXTRA_MODE, mode);
+
if (null != savedInstanceState) {
mIsShowingMoreOptions =
savedInstanceState.getBoolean(STATE_KEY_IS_OPEN, mIsShowingMoreOptions);
- savedWord = savedInstanceState.getString(STATE_KEY_WORD);
- savedLocale = savedInstanceState.getString(STATE_KEY_LOCALE);
+ // Override options if we have a saved state.
+ args.putAll(savedInstanceState);
}
- mOldWord = intent.getStringExtra(EXTRA_WORD);
- if (null != savedLocale) {
- mLocale = savedLocale;
- } else {
- final String locale = intent.getStringExtra(EXTRA_LOCALE); // this may be null
- mLocale = null == locale ? Locale.getDefault().toString() : locale;
- }
- mEditText = (EditText)findViewById(R.id.user_dictionary_add_word_text);
- if (null != savedWord) {
- mEditText.setText(savedWord);
- mEditText.setSelection(savedWord.length());
- } else if (null != mOldWord) {
- mEditText.setText(mOldWord);
- mEditText.setSelection(mOldWord.length());
- }
+ mOldWord = intent.getStringExtra(UserDictionaryAddWordContents.EXTRA_WORD);
+
+ mContents = new UserDictionaryAddWordContents(getWindow().getDecorView(), args);
if (mIsShowingMoreOptions) {
onClickMoreOptions(findViewById(R.id.user_dictionary_settings_add_dialog_more_options));
@@ -126,8 +110,9 @@ public class UserDictionaryAddWordActivity extends Activity
@Override
public void onSaveInstanceState(final Bundle outState) {
outState.putBoolean(STATE_KEY_IS_OPEN, mIsShowingMoreOptions);
- outState.putString(STATE_KEY_WORD, mEditText.getText().toString());
- outState.putString(STATE_KEY_LOCALE, mLocale);
+ outState.putString(
+ UserDictionaryAddWordContents.EXTRA_WORD, mContents.mEditText.getText().toString());
+ outState.putString(UserDictionaryAddWordContents.EXTRA_LOCALE, mContents.mLocale);
}
public void onClickCancel(final View v) {
@@ -135,10 +120,11 @@ public class UserDictionaryAddWordActivity extends Activity
}
public void onClickConfirm(final View v) {
- if (MODE_EDIT == mMode && !TextUtils.isEmpty(mOldWord)) {
+ if (UserDictionaryAddWordContents.MODE_EDIT == mContents.mMode
+ && !TextUtils.isEmpty(mOldWord)) {
UserDictionarySettings.deleteWord(mOldWord, this.getContentResolver());
}
- final String newWord = mEditText.getText().toString();
+ final String newWord = mContents.mEditText.getText().toString();
if (TextUtils.isEmpty(newWord)) {
// If the word is somehow empty, don't insert it.
// TODO: grey out the Ok button when the text is empty?
@@ -149,7 +135,7 @@ public class UserDictionaryAddWordActivity extends Activity
// TODO: Redefine the logic when we support shortcuts.
UserDictionarySettings.deleteWord(newWord, this.getContentResolver());
- if (TextUtils.isEmpty(mLocale)) {
+ if (TextUtils.isEmpty(mContents.mLocale)) {
// Empty string means insert for all languages.
UserDictionary.Words.addWord(this, newWord.toString(),
FREQUENCY_FOR_USER_DICTIONARY_ADDS, UserDictionary.Words.LOCALE_TYPE_ALL);
@@ -157,7 +143,7 @@ public class UserDictionaryAddWordActivity extends Activity
// TODO: fix the framework so that it can accept a locale when we add a word
// to the user dictionary instead of querying the system locale.
final Locale prevLocale = Locale.getDefault();
- Locale.setDefault(Utils.createLocaleFromString(mLocale));
+ Locale.setDefault(Utils.createLocaleFromString(mContents.mLocale));
UserDictionary.Words.addWord(this, newWord.toString(),
FREQUENCY_FOR_USER_DICTIONARY_ADDS, UserDictionary.Words.LOCALE_TYPE_CURRENT);
Locale.setDefault(prevLocale);
@@ -207,7 +193,7 @@ public class UserDictionaryAddWordActivity extends Activity
final Set<String> locales = UserDictionaryList.getUserDictionaryLocalesList(this);
// Remove our locale if it's in, because we're always gonna put it at the top
- locales.remove(mLocale); // mLocale may not be null
+ locales.remove(mContents.mLocale); // mLocale may not be null
final String systemLocale = Locale.getDefault().toString();
// The system locale should be inside. We want it at the 2nd spot.
locales.remove(systemLocale); // system locale may not be null
@@ -215,8 +201,8 @@ public class UserDictionaryAddWordActivity extends Activity
final ArrayList<LocaleRenderer> localesList = new ArrayList<LocaleRenderer>();
// Add the passed locale, then the system locale at the top of the list. Add an
// "all languages" entry at the bottom of the list.
- addLocaleDisplayNameToList(this, localesList, mLocale);
- if (!systemLocale.equals(mLocale)) {
+ addLocaleDisplayNameToList(this, localesList, mContents.mLocale);
+ if (!systemLocale.equals(mContents.mLocale)) {
addLocaleDisplayNameToList(this, localesList, systemLocale);
}
for (final String l : locales) {
@@ -251,14 +237,13 @@ public class UserDictionaryAddWordActivity extends Activity
public void onItemSelected(final AdapterView<?> parent, final View view, final int pos,
final long id) {
final LocaleRenderer locale = (LocaleRenderer)parent.getItemAtPosition(pos);
- mLocale = locale.getLocaleString();
+ mContents.updateLocale(locale.getLocaleString());
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// I'm not sure we can come here, but if we do, that's the right thing to do.
final Intent intent = getIntent();
- final String locale = intent.getStringExtra(EXTRA_LOCALE); // this may be null
- mLocale = null == locale ? Locale.getDefault().toString() : locale;
+ mContents.updateLocale(intent.getStringExtra(UserDictionaryAddWordContents.EXTRA_LOCALE));
}
}
diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
new file mode 100644
index 0000000..b67e834
--- /dev/null
+++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.inputmethod;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+
+import com.android.settings.R;
+
+import java.util.Locale;
+
+/**
+ * A container class to factor common code to UserDictionaryAddWordFragment
+ * and UserDictionaryAddWordActivity.
+ */
+public class UserDictionaryAddWordContents {
+ public static final String EXTRA_MODE = "mode";
+ public static final String EXTRA_WORD = "word";
+ public static final String EXTRA_LOCALE = "locale";
+
+ public static final int MODE_EDIT = 0;
+ public static final int MODE_INSERT = 1;
+
+ /* package */ final int mMode; // Either MODE_EDIT or MODE_INSERT
+ /* package */ final EditText mEditText;
+ /* package */ String mLocale;
+
+ /* package */ UserDictionaryAddWordContents(final View view, final Bundle args) {
+ mEditText = (EditText)view.findViewById(R.id.user_dictionary_add_word_text);
+ final String word = args.getString(EXTRA_WORD);
+ if (null != word) {
+ mEditText.setText(word);
+ mEditText.setSelection(word.length());
+ }
+ mMode = args.getInt(EXTRA_MODE); // default return value for #getInt() is 0 = MODE_EDIT
+ updateLocale(args.getString(EXTRA_LOCALE));
+ }
+
+ // locale may be null, this means default locale
+ // It may also be the empty string, which means "all locales"
+ /* package */ void updateLocale(final String locale) {
+ mLocale = null == locale ? Locale.getDefault().toString() : locale;
+ }
+}
diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
index 9f3bad9..d5f4e3f 100644
--- a/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
+++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordFragment.java
@@ -36,6 +36,8 @@ public class UserDictionaryAddWordFragment extends Fragment {
private static final int OPTIONS_MENU_DELETE = Menu.FIRST;
+ private UserDictionaryAddWordContents mContents;
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
@@ -44,7 +46,9 @@ public class UserDictionaryAddWordFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- return inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null);
+ final View view = inflater.inflate(R.layout.user_dictionary_add_word_fullscreen, null);
+ mContents = new UserDictionaryAddWordContents(view, getArguments());
+ return view;
}
@Override