From 72c2a6e5c2990df7f36c4f7305d4ba4b28e10023 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Sat, 12 Jul 2014 17:31:12 +0900 Subject: [PATCH] Small refactor, remove unused/unnecessary code, and cosmetic fix Change-Id: Ia0771f547b0489d3519faf23495e5c6bdfefa42e --- .../InputMethodAndSubtypeEnabler.java | 127 +++++++++--------- 1 file changed, 64 insertions(+), 63 deletions(-) diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java index fc0e8db3545..51f5e14134d 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java +++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java @@ -50,51 +50,46 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { private boolean mHaveHardKeyboard; final private HashMap> mInputMethodAndSubtypePrefsMap = new HashMap<>(); - final private HashMap mSubtypeAutoSelectionCBMap = new HashMap<>(); + final private HashMap mAutoSelectionPrefsMap = new HashMap<>(); private InputMethodManager mImm; - // TODO: Change mInputMethodProperties to Map - private List mInputMethodProperties; + // TODO: Change mInputMethodInfoList to Map + private List mInputMethodInfoList; private String mInputMethodId; - private String mTitle; @Override - public void onCreate(Bundle icicle) { + public void onCreate(final Bundle icicle) { super.onCreate(icicle); mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); final Configuration config = getResources().getConfiguration(); mHaveHardKeyboard = (config.keyboard == Configuration.KEYBOARD_QWERTY); - final Bundle arguments = getArguments(); // Input method id should be available from an Intent when this preference is launched as a // single Activity (see InputMethodAndSubtypeEnablerActivity). It should be available // from a preference argument when the preference is launched as a part of the other // Activity (like a right pane of 2-pane Settings app) - mInputMethodId = getActivity().getIntent().getStringExtra( + mInputMethodId = getStringExtraFromIntentOrArguments( android.provider.Settings.EXTRA_INPUT_METHOD_ID); - if (mInputMethodId == null && (arguments != null)) { - final String inputMethodId = - arguments.getString(android.provider.Settings.EXTRA_INPUT_METHOD_ID); - if (inputMethodId != null) { - mInputMethodId = inputMethodId; - } - } - mTitle = getActivity().getIntent().getStringExtra(Intent.EXTRA_TITLE); - if (mTitle == null && (arguments != null)) { - final String title = arguments.getString(Intent.EXTRA_TITLE); - if (title != null) { - mTitle = title; - } - } - mInputMethodProperties = mImm.getInputMethodList(); + mInputMethodInfoList = mImm.getInputMethodList(); setPreferenceScreen(createPreferenceHierarchy()); } + private String getStringExtraFromIntentOrArguments(final String name) { + final Intent intent = getActivity().getIntent(); + final String fromIntent = intent.getStringExtra(name); + if (fromIntent != null) { + return fromIntent; + } + final Bundle arguments = getArguments(); + return (arguments == null) ? null : arguments.getString(name); + } + @Override - public void onActivityCreated(Bundle icicle) { + public void onActivityCreated(final Bundle icicle) { super.onActivityCreated(icicle); - if (!TextUtils.isEmpty(mTitle)) { - getActivity().setTitle(mTitle); + final String title = getStringExtraFromIntentOrArguments(Intent.EXTRA_TITLE); + if (!TextUtils.isEmpty(title)) { + getActivity().setTitle(title); } } @@ -106,7 +101,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { InputMethodSettingValuesWrapper .getInstance(getActivity()).refreshAllInputMethodAndSubtypes(); InputMethodAndSubtypeUtil.loadInputMethodSubtypeList( - this, getContentResolver(), mInputMethodProperties, mInputMethodAndSubtypePrefsMap); + this, getContentResolver(), mInputMethodInfoList, mInputMethodAndSubtypePrefsMap); updateAutoSelectionCB(); } @@ -116,18 +111,18 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { // Clear all subtypes of all IMEs to make sure clearImplicitlyEnabledSubtypes(null); InputMethodAndSubtypeUtil.saveInputMethodSubtypeList(this, getContentResolver(), - mInputMethodProperties, mHaveHardKeyboard); + mInputMethodInfoList, mHaveHardKeyboard); } @Override - public boolean onPreferenceTreeClick( - PreferenceScreen preferenceScreen, Preference preference) { + public boolean onPreferenceTreeClick(final PreferenceScreen preferenceScreen, + final Preference preference) { if (preference instanceof CheckBoxPreference) { final CheckBoxPreference chkPref = (CheckBoxPreference) preference; - for (String imiId: mSubtypeAutoSelectionCBMap.keySet()) { - if (mSubtypeAutoSelectionCBMap.get(imiId) == chkPref) { + for (final String imiId : mAutoSelectionPrefsMap.keySet()) { + if (mAutoSelectionPrefsMap.get(imiId) == chkPref) { // We look for the first preference item in subtype enabler. // The first item is used for turning on/off subtype auto selection. // We are in the subtype enabler and trying selecting subtypes automatically. @@ -139,14 +134,14 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { final String id = chkPref.getKey(); if (chkPref.isChecked()) { InputMethodInfo selImi = null; - final int N = mInputMethodProperties.size(); + final int N = mInputMethodInfoList.size(); for (int i = 0; i < N; i++) { - InputMethodInfo imi = mInputMethodProperties.get(i); + final InputMethodInfo imi = mInputMethodInfoList.get(i); if (id.equals(imi.getId())) { selImi = imi; if (InputMethodUtils.isSystemIme(imi)) { InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( - this, mInputMethodProperties, id, true); + this, mInputMethodInfoList, id, true); // This is a built-in IME, so no need to warn. return super.onPreferenceTreeClick(preferenceScreen, preference); } @@ -168,7 +163,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { chkPref.setChecked(true); InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( InputMethodAndSubtypeEnabler.this, - mInputMethodProperties, id, true); + mInputMethodInfoList, id, true); } }) @@ -191,7 +186,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { mDialog.show(); } else { InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( - this, mInputMethodProperties, id, false); + this, mInputMethodInfoList, id, false); updateAutoSelectionCB(); } } @@ -213,11 +208,13 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { final Context context = getActivity(); final Collator collator = Collator.getInstance(); - final int N = (mInputMethodProperties == null ? 0 : mInputMethodProperties.size()); + final int N = (mInputMethodInfoList == null ? 0 : mInputMethodInfoList.size()); for (int i = 0; i < N; ++i) { - final InputMethodInfo imi = mInputMethodProperties.get(i); + final InputMethodInfo imi = mInputMethodInfoList.get(i); final int subtypeCount = imi.getSubtypeCount(); - if (subtypeCount <= 1) continue; + if (subtypeCount <= 1) { + continue; + } final String imiId = imi.getId(); // Add this subtype to the list when no IME is specified or when the IME of this // subtype is the specified IME. @@ -233,7 +230,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { keyboardSettingsCategory.setKey(imiId); // TODO: Use toggle Preference if images are ready. final CheckBoxPreference autoCB = new CheckBoxPreference(context); - mSubtypeAutoSelectionCBMap.put(imiId, autoCB); + mAutoSelectionPrefsMap.put(imiId, autoCB); keyboardSettingsCategory.addPreference(autoCB); final PreferenceCategory activeInputMethodsCategory = new PreferenceCategory(context); @@ -246,18 +243,15 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { if (subtypeCount > 0) { for (int j = 0; j < subtypeCount; ++j) { final InputMethodSubtype subtype = imi.getSubtypeAt(j); - final CharSequence subtypeLabel = subtype.getDisplayName(context, - imi.getPackageName(), imi.getServiceInfo().applicationInfo); if (subtype.overridesImplicitlyEnabledSubtype()) { if (!isAutoSubtype) { isAutoSubtype = true; - autoSubtypeLabel = subtypeLabel; + autoSubtypeLabel = subtype.getDisplayName(context, + imi.getPackageName(), imi.getServiceInfo().applicationInfo); } } else { final CheckBoxPreference chkbxPref = new InputMethodSubtypePreference( context, subtype, imi); - chkbxPref.setKey(imiId + subtype.hashCode()); - chkbxPref.setTitle(subtypeLabel); subtypePreferences.add(chkbxPref); } } @@ -292,9 +286,8 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { private boolean isNoSubtypesExplicitlySelected(String imiId) { boolean allSubtypesOff = true; final List subtypePrefs = mInputMethodAndSubtypePrefsMap.get(imiId); - for (Preference subtypePref: subtypePrefs) { - if (subtypePref instanceof CheckBoxPreference - && ((CheckBoxPreference)subtypePref).isChecked()) { + for (final Preference pref : subtypePrefs) { + if (pref instanceof CheckBoxPreference && ((CheckBoxPreference)pref).isChecked()) { allSubtypesOff = false; break; } @@ -303,11 +296,13 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { } private void setSubtypeAutoSelectionEnabled(String imiId, boolean autoSelectionEnabled) { - CheckBoxPreference autoSelectionCB = mSubtypeAutoSelectionCBMap.get(imiId); - if (autoSelectionCB == null) return; + final CheckBoxPreference autoSelectionCB = mAutoSelectionPrefsMap.get(imiId); + if (autoSelectionCB == null) { + return; + } autoSelectionCB.setChecked(autoSelectionEnabled); final List subtypePrefs = mInputMethodAndSubtypePrefsMap.get(imiId); - for (Preference subtypePref: subtypePrefs) { + for (final Preference subtypePref : subtypePrefs) { if (subtypePref instanceof CheckBoxPreference) { // When autoSelectionEnabled is true, all subtype prefs need to be disabled with // implicitly checked subtypes. In case of false, all subtype prefs need to be @@ -319,8 +314,8 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { } } if (autoSelectionEnabled) { - InputMethodAndSubtypeUtil.saveInputMethodSubtypeList(this, getContentResolver(), - mInputMethodProperties, mHaveHardKeyboard); + InputMethodAndSubtypeUtil.saveInputMethodSubtypeList( + this, getContentResolver(), mInputMethodInfoList, mHaveHardKeyboard); setCheckedImplicitlyEnabledSubtypes(imiId); } } @@ -335,23 +330,29 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { private void updateImplicitlyEnabledSubtypes(String targetImiId, boolean check) { // When targetImiId is null, apply to all subtypes of all IMEs - for (InputMethodInfo imi: mInputMethodProperties) { - String imiId = imi.getId(); - if (targetImiId != null && !targetImiId.equals(imiId)) continue; - final CheckBoxPreference autoCB = mSubtypeAutoSelectionCBMap.get(imiId); + for (final InputMethodInfo imi : mInputMethodInfoList) { + final String imiId = imi.getId(); + if (targetImiId != null && !targetImiId.equals(imiId)) { + continue; + } + final CheckBoxPreference autoCB = mAutoSelectionPrefsMap.get(imiId); // No need to update implicitly enabled subtypes when the user has unchecked the // "subtype auto selection". - if (autoCB == null || !autoCB.isChecked()) continue; + if (autoCB == null || !autoCB.isChecked()) { + continue; + } final List subtypePrefs = mInputMethodAndSubtypePrefsMap.get(imiId); final List implicitlyEnabledSubtypes = mImm.getEnabledInputMethodSubtypeList(imi, true); - if (subtypePrefs == null || implicitlyEnabledSubtypes == null) continue; - for (Preference subtypePref: subtypePrefs) { + if (subtypePrefs == null || implicitlyEnabledSubtypes == null) { + continue; + } + for (final Preference subtypePref : subtypePrefs) { if (subtypePref instanceof CheckBoxPreference) { - CheckBoxPreference cb = (CheckBoxPreference)subtypePref; + final CheckBoxPreference cb = (CheckBoxPreference)subtypePref; cb.setChecked(false); if (check) { - for (InputMethodSubtype subtype: implicitlyEnabledSubtypes) { + for (final InputMethodSubtype subtype : implicitlyEnabledSubtypes) { String implicitlyEnabledSubtypePrefKey = imiId + subtype.hashCode(); if (cb.getKey().equals(implicitlyEnabledSubtypePrefKey)) { cb.setChecked(true); @@ -365,7 +366,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { } private void updateAutoSelectionCB() { - for (String imiId: mInputMethodAndSubtypePrefsMap.keySet()) { + for (final String imiId : mInputMethodAndSubtypePrefsMap.keySet()) { setSubtypeAutoSelectionEnabled(imiId, isNoSubtypesExplicitlySelected(imiId)); } setCheckedImplicitlyEnabledSubtypes(null);