summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/inputmethod
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-07-19 18:16:43 -0700
committerTadashi G. Takaoka <takaoka@google.com>2014-07-22 17:22:15 +0000
commit1f53937469095f268d4c7a21d93f821a341a151d (patch)
tree0522d5052491728c78c08e301394f7130843c690 /src/com/android/settings/inputmethod
parent686c250323553231f5b314525b221f7000e88572 (diff)
downloadpackages_apps_Settings-1f53937469095f268d4c7a21d93f821a341a151d.zip
packages_apps_Settings-1f53937469095f268d4c7a21d93f821a341a151d.tar.gz
packages_apps_Settings-1f53937469095f268d4c7a21d93f821a341a151d.tar.bz2
Use SwitchPreference for input method subtype enabler
Bug: 15781377 Change-Id: I80fe987e499722af7768147a184934650bbf8385
Diffstat (limited to 'src/com/android/settings/inputmethod')
-rw-r--r--src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java22
-rw-r--r--src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java17
-rw-r--r--src/com/android/settings/inputmethod/InputMethodSubtypePreference.java3
-rw-r--r--src/com/android/settings/inputmethod/SwitchWithNoTextPreference.java30
4 files changed, 50 insertions, 22 deletions
diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java
index eff1daa..146f512 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java
@@ -21,11 +21,11 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.os.Bundle;
-import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
+import android.preference.TwoStatePreference;
import android.text.TextUtils;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -46,7 +46,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
private boolean mHaveHardKeyboard;
private final HashMap<String, List<Preference>> mInputMethodAndSubtypePrefsMap =
new HashMap<>();
- private final HashMap<String, CheckBoxPreference> mAutoSelectionPrefsMap = new HashMap<>();
+ private final HashMap<String, TwoStatePreference> mAutoSelectionPrefsMap = new HashMap<>();
private InputMethodManager mImm;
// TODO: Change mInputMethodInfoList to Map
private List<InputMethodInfo> mInputMethodInfoList;
@@ -130,7 +130,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
for (final String imiId : mAutoSelectionPrefsMap.keySet()) {
// An auto select subtype preference is changing.
if (mAutoSelectionPrefsMap.get(imiId) == pref) {
- final CheckBoxPreference autoSelectionPref = (CheckBoxPreference) pref;
+ final TwoStatePreference autoSelectionPref = (TwoStatePreference) pref;
autoSelectionPref.setChecked(isChecking);
// Enable or disable subtypes depending on the auto selection preference.
setAutoSelectionSubtypesEnabled(imiId, autoSelectionPref.isChecked());
@@ -167,7 +167,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
keyboardSettingsCategory.setTitle(label);
keyboardSettingsCategory.setKey(imiId);
// TODO: Use toggle Preference if images are ready.
- final CheckBoxPreference autoSelectionPref = new CheckBoxPreference(context);
+ final TwoStatePreference autoSelectionPref = new SwitchWithNoTextPreference(context);
mAutoSelectionPrefsMap.put(imiId, autoSelectionPref);
keyboardSettingsCategory.addPreference(autoSelectionPref);
autoSelectionPref.setOnPreferenceChangeListener(this);
@@ -219,7 +219,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
private boolean isNoSubtypesExplicitlySelected(final String imiId) {
final List<Preference> subtypePrefs = mInputMethodAndSubtypePrefsMap.get(imiId);
for (final Preference pref : subtypePrefs) {
- if (pref instanceof CheckBoxPreference && ((CheckBoxPreference)pref).isChecked()) {
+ if (pref instanceof TwoStatePreference && ((TwoStatePreference)pref).isChecked()) {
return false;
}
}
@@ -228,20 +228,20 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
private void setAutoSelectionSubtypesEnabled(final String imiId,
final boolean autoSelectionEnabled) {
- final CheckBoxPreference autoSelectionPref = mAutoSelectionPrefsMap.get(imiId);
+ final TwoStatePreference autoSelectionPref = mAutoSelectionPrefsMap.get(imiId);
if (autoSelectionPref == null) {
return;
}
autoSelectionPref.setChecked(autoSelectionEnabled);
final List<Preference> subtypePrefs = mInputMethodAndSubtypePrefsMap.get(imiId);
for (final Preference pref : subtypePrefs) {
- if (pref instanceof CheckBoxPreference) {
+ if (pref instanceof TwoStatePreference) {
// 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
// enabled.
pref.setEnabled(!autoSelectionEnabled);
if (autoSelectionEnabled) {
- ((CheckBoxPreference)pref).setChecked(false);
+ ((TwoStatePreference)pref).setChecked(false);
}
}
}
@@ -256,7 +256,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
// When targetImiId is null, apply to all subtypes of all IMEs
for (final InputMethodInfo imi : mInputMethodInfoList) {
final String imiId = imi.getId();
- final CheckBoxPreference autoSelectionPref = mAutoSelectionPrefsMap.get(imiId);
+ final TwoStatePreference autoSelectionPref = mAutoSelectionPrefsMap.get(imiId);
// No need to update implicitly enabled subtypes when the user has unchecked the
// "subtype auto selection".
if (autoSelectionPref == null || !autoSelectionPref.isChecked()) {
@@ -277,10 +277,10 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment
return;
}
for (final Preference pref : subtypePrefs) {
- if (!(pref instanceof CheckBoxPreference)) {
+ if (!(pref instanceof TwoStatePreference)) {
continue;
}
- final CheckBoxPreference subtypePref = (CheckBoxPreference)pref;
+ final TwoStatePreference subtypePref = (TwoStatePreference)pref;
subtypePref.setChecked(false);
if (check) {
for (final InputMethodSubtype subtype : implicitlyEnabledSubtypes) {
diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
index e8d11c6..3f37db7 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
@@ -18,7 +18,6 @@ package com.android.settings.inputmethod;
import android.content.ContentResolver;
import android.content.SharedPreferences;
-import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.preference.TwoStatePreference;
@@ -186,12 +185,12 @@ class InputMethodAndSubtypeUtil {
for (int i = 0; i < subtypeCount; ++i) {
InputMethodSubtype subtype = imi.getSubtypeAt(i);
final String subtypeHashCodeStr = String.valueOf(subtype.hashCode());
- CheckBoxPreference subtypePref = (CheckBoxPreference) context.findPreference(
- imiId + subtypeHashCodeStr);
+ final TwoStatePreference subtypePref = (TwoStatePreference) context
+ .findPreference(imiId + subtypeHashCodeStr);
// In the Configure input method screen which does not have subtype preferences.
if (subtypePref == null) continue;
if (!subtypePrefFound) {
- // Once subtype checkbox is found, subtypeSet needs to be cleared.
+ // Once subtype preference is found, subtypeSet needs to be cleared.
// Because of system change, hashCode value could have been changed.
subtypesSet.clear();
// If selected subtype preference is disabled, needs to reset.
@@ -283,10 +282,10 @@ class InputMethodAndSubtypeUtil {
for (final InputMethodInfo imi : inputMethodInfos) {
final String imiId = imi.getId();
final Preference pref = context.findPreference(imiId);
- if (pref instanceof CheckBoxPreference) {
- final CheckBoxPreference checkBoxPreference = (CheckBoxPreference) pref;
+ if (pref instanceof TwoStatePreference) {
+ final TwoStatePreference subtypePref = (TwoStatePreference) pref;
final boolean isEnabled = enabledSubtypes.containsKey(imiId);
- checkBoxPreference.setChecked(isEnabled);
+ subtypePref.setChecked(isEnabled);
if (inputMethodPrefsMap != null) {
for (final Preference childPref: inputMethodPrefsMap.get(imiId)) {
childPref.setEnabled(isEnabled);
@@ -307,7 +306,7 @@ class InputMethodAndSubtypeUtil {
final int subtypeCount = imi.getSubtypeCount();
for (int i = 0; i < subtypeCount; ++i) {
final InputMethodSubtype subtype = imi.getSubtypeAt(i);
- final CheckBoxPreference pref = (CheckBoxPreference) preferenceScreen
+ final TwoStatePreference pref = (TwoStatePreference) preferenceScreen
.findPreference(id + subtype.hashCode());
if (pref != null) {
pref.setEnabled(enabled);
@@ -336,7 +335,7 @@ class InputMethodAndSubtypeUtil {
Log.d(TAG, "--- Set checked state: " + "id" + ", " + hashCode + ", "
+ enabledSubtypesSet.contains(hashCode));
}
- final CheckBoxPreference pref = (CheckBoxPreference) preferenceScreen
+ final TwoStatePreference pref = (TwoStatePreference) preferenceScreen
.findPreference(id + hashCode);
if (pref != null) {
pref.setChecked(enabledSubtypesSet.contains(hashCode));
diff --git a/src/com/android/settings/inputmethod/InputMethodSubtypePreference.java b/src/com/android/settings/inputmethod/InputMethodSubtypePreference.java
index 1c3ea0e..6ded6ad 100644
--- a/src/com/android/settings/inputmethod/InputMethodSubtypePreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodSubtypePreference.java
@@ -17,7 +17,6 @@
package com.android.settings.inputmethod;
import android.content.Context;
-import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.text.TextUtils;
import android.view.inputmethod.InputMethodInfo;
@@ -33,7 +32,7 @@ import java.util.Locale;
*
* This preference represents a subtype of an IME. It is used to enable or disable the subtype.
*/
-class InputMethodSubtypePreference extends CheckBoxPreference {
+class InputMethodSubtypePreference extends SwitchWithNoTextPreference {
private final boolean mIsSystemLocale;
private final boolean mIsSystemLanguage;
diff --git a/src/com/android/settings/inputmethod/SwitchWithNoTextPreference.java b/src/com/android/settings/inputmethod/SwitchWithNoTextPreference.java
new file mode 100644
index 0000000..677c031
--- /dev/null
+++ b/src/com/android/settings/inputmethod/SwitchWithNoTextPreference.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 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.content.Context;
+import android.preference.SwitchPreference;
+
+class SwitchWithNoTextPreference extends SwitchPreference {
+ private static final String EMPTY_TEXT = "";
+
+ SwitchWithNoTextPreference(final Context context) {
+ super(context);
+ setSwitchTextOn(EMPTY_TEXT);
+ setSwitchTextOff(EMPTY_TEXT);
+ }
+}