diff options
Diffstat (limited to 'src/com/android/settings/inputmethod/SpellCheckersSettings.java')
-rw-r--r-- | src/com/android/settings/inputmethod/SpellCheckersSettings.java | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/com/android/settings/inputmethod/SpellCheckersSettings.java b/src/com/android/settings/inputmethod/SpellCheckersSettings.java new file mode 100644 index 0000000..d6c0b1c --- /dev/null +++ b/src/com/android/settings/inputmethod/SpellCheckersSettings.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2011 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 com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; + +import android.content.Context; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceScreen; +import android.view.textservice.SpellCheckerInfo; +import android.view.textservice.TextServicesManager; + +import java.util.ArrayList; + +public class SpellCheckersSettings extends SettingsPreferenceFragment + implements Preference.OnPreferenceClickListener { + + private SpellCheckerInfo mCurrentSci; + private SpellCheckerInfo[] mEnabledScis; + private TextServicesManager mTsm; + private final ArrayList<SingleSpellCheckerPreference> mSpellCheckers = + new ArrayList<SingleSpellCheckerPreference>(); + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + mTsm = (TextServicesManager) getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE); + addPreferencesFromResource(R.xml.spellchecker_prefs); + updateScreen(); + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) { + return false; + } + + @Override + public void onResume() { + super.onResume(); + updateScreen(); + } + + @Override + public void onPause() { + super.onPause(); + saveState(); + } + + private void saveState() { + SpellCheckerUtils.setCurrentSpellChecker(mTsm, mCurrentSci); + } + + private void updateScreen() { + getPreferenceScreen().removeAll(); + updateEnabledSpellCheckers(); + } + + private void updateEnabledSpellCheckers() { + mCurrentSci = SpellCheckerUtils.getCurrentSpellChecker(mTsm); + mEnabledScis = SpellCheckerUtils.getEnabledSpellCheckers(mTsm); + if (mCurrentSci == null || mEnabledScis == null) { + return; + } + mSpellCheckers.clear(); + for (int i = 0; i < mEnabledScis.length; ++i) { + final SpellCheckerInfo sci = mEnabledScis[i]; + final SingleSpellCheckerPreference scPref = new SingleSpellCheckerPreference( + this, null, sci); + mSpellCheckers.add(scPref); + scPref.setTitle(sci.getId()); + scPref.setSelected(mCurrentSci != null && mCurrentSci.getId().equals(sci.getId())); + getPreferenceScreen().addPreference(scPref); + } + } + + @Override + public boolean onPreferenceClick(Preference arg0) { + for (SingleSpellCheckerPreference scp : mSpellCheckers) { + if (arg0.equals(scp)) { + scp.setSelected(true); + mTsm.setCurrentSpellChecker(scp.getSpellCheckerInfo()); + } else { + scp.setSelected(false); + } + } + return true; + } +} |