InputMethodAndLanguageSettings.java revision afc4ab2ffbb8327ddce9907961295a32cbf49d0f
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.ContentResolver; 20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Configuration; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.CheckBoxPreference; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceGroup; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceScreen; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings.System; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.inputmethod.InputMethodInfo; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.inputmethod.InputMethodManager; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.HashSet; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.List; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class LanguageSettings extends PreferenceActivity { 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final String[] mSettingsUiKey = { 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "auto_caps", 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "auto_replace", 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "auto_punctuate", 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Note: Order of this array should correspond to the order of the above array 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final String[] mSettingsSystemId = { 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project System.TEXT_AUTO_CAPS, 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project System.TEXT_AUTO_REPLACE, 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project System.TEXT_AUTO_PUNCTUATE, 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Note: Order of this array should correspond to the order of the above array 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final int[] mSettingsDefault = { 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1, 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1, 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1, 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private List<InputMethodInfo> mInputMethodProperties; 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final TextUtils.SimpleStringSplitter mStringColonSplitter 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project = new TextUtils.SimpleStringSplitter(':'); 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mLastInputMethodId; 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mLastTickedInputMethodId; 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project static public String getInputMethodIdFromKey(String key) { 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return key; 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.language_settings); 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (getAssets().getLocales().length == 1) { 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen(). 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project removePreference(findPreference("language_category")); 82afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Configuration config = getResources().getConfiguration(); 85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (config.keyboard != Configuration.KEYBOARD_QWERTY) { 86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen().removePreference( 87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getPreferenceScreen().findPreference("hardkeyboard_category")); 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ContentResolver resolver = getContentResolver(); 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < mSettingsUiKey.length; i++) { 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CheckBoxPreference pref = (CheckBoxPreference) findPreference(mSettingsUiKey[i]); 92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pref.setChecked(System.getInt(resolver, mSettingsSystemId[i], 93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mSettingsDefault[i]) > 0); 94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project onCreateIMM(); 98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void onCreateIMM() { 101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mInputMethodProperties = imm.getInputMethodList(); 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastInputMethodId = Settings.Secure.getString(getContentResolver(), 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.DEFAULT_INPUT_METHOD); 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project PreferenceGroup textCategory = (PreferenceGroup) findPreference("text_category"); 109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int N = (mInputMethodProperties == null ? 0 : mInputMethodProperties 111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .size()); 112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < N; ++i) { 113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project InputMethodInfo property = mInputMethodProperties.get(i); 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String prefKey = property.getId(); 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CharSequence label = property.loadLabel(getPackageManager()); 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Add a check box. 119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CheckBoxPreference chkbxPref = new CheckBoxPreference(this); 120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project chkbxPref.setKey(prefKey); 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project chkbxPref.setTitle(label); 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project textCategory.addPreference(chkbxPref); 123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // If setting activity is available, add a setting screen entry. 125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (null != property.getSettingsActivity()) { 126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project PreferenceScreen prefScreen = new PreferenceScreen(this, null); 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project prefScreen.setKey(property.getSettingsActivity()); 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CharSequence settingsLabel = getResources().getString( 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project R.string.input_methods_settings_label_format, label); 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project prefScreen.setTitle(settingsLabel); 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project textCategory.addPreference(prefScreen); 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 139afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 140afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final HashSet<String> enabled = new HashSet<String>(); 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String enabledStr = Settings.Secure.getString(getContentResolver(), 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.ENABLED_INPUT_METHODS); 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (enabledStr != null) { 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final TextUtils.SimpleStringSplitter splitter = mStringColonSplitter; 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project splitter.setString(enabledStr); 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project while (splitter.hasNext()) { 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project enabled.add(splitter.next()); 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Update the statuses of the Check Boxes. 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int N = mInputMethodProperties.size(); 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < N; ++i) { 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final String id = mInputMethodProperties.get(i).getId(); 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CheckBoxPreference pref = (CheckBoxPreference) findPreference(mInputMethodProperties 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .get(i).getId()); 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project pref.setChecked(enabled.contains(id)); 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastTickedInputMethodId = null; 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 163afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onPause() { 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 166afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project StringBuilder builder = new StringBuilder(256); 167afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean haveLastInputMethod = false; 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 170afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int firstEnabled = -1; 171afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int N = mInputMethodProperties.size(); 172afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < N; ++i) { 173afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final String id = mInputMethodProperties.get(i).getId(); 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CheckBoxPreference pref = (CheckBoxPreference) findPreference(id); 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean hasIt = id.equals(mLastInputMethodId); 176afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (pref.isChecked()) { 177afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (builder.length() > 0) builder.append(':'); 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project builder.append(id); 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (firstEnabled < 0) { 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project firstEnabled = i; 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (hasIt) haveLastInputMethod = true; 183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (hasIt) { 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastInputMethodId = mLastTickedInputMethodId; 185afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // If the last input method is unset, set it as the first enabled one. 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (null == mLastInputMethodId || "".equals(mLastInputMethodId)) { 190afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (firstEnabled >= 0) { 191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastInputMethodId = mInputMethodProperties.get(firstEnabled).getId(); 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 193afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastInputMethodId = null; 194afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 197afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.putString(getContentResolver(), 198afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.ENABLED_INPUT_METHODS, builder.toString()); 199afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.putString(getContentResolver(), 200afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.DEFAULT_INPUT_METHOD, mLastInputMethodId); 201afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 203afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 204afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 205afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 206afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Physical keyboard stuff 207afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < mSettingsUiKey.length; i++) { 208afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mSettingsUiKey[i].equals(preference.getKey())) { 209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project System.putInt(getContentResolver(), mSettingsSystemId[i], 210afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ((CheckBoxPreference)preference).isChecked()? 1 : 0); 211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Input Method stuff 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Those monkeys kept committing suicide, so we add this property 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // to disable this functionality 218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) { 219afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return false; 220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 222afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (preference instanceof CheckBoxPreference) { 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project CheckBoxPreference chkPref = (CheckBoxPreference) preference; 224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String id = getInputMethodIdFromKey(chkPref.getKey()); 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (chkPref.isChecked()) { 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastTickedInputMethodId = id; 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (id.equals(mLastTickedInputMethodId)) { 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mLastTickedInputMethodId = null; 229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference instanceof PreferenceScreen) { 231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (preference.getIntent() == null) { 232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project PreferenceScreen pref = (PreferenceScreen) preference; 233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String activityName = pref.getKey(); 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String packageName = activityName.substring(0, activityName 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .lastIndexOf(".")); 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (activityName.length() > 0) { 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent i = new Intent(Intent.ACTION_MAIN); 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project i.setClassName(packageName, activityName); 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project startActivity(i); 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 244afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return super.onPreferenceTreeClick(preferenceScreen, preference); 245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 247afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 248