diff options
-rw-r--r-- | AndroidManifest.xml | 20 | ||||
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | res/values/styles.xml | 2 | ||||
-rw-r--r-- | res/xml/language_settings.xml | 4 | ||||
-rw-r--r-- | res/xml/spellchecker_prefs.xml | 20 | ||||
-rw-r--r-- | src/com/android/settings/Settings.java | 1 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.java | 118 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java | 6 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java | 2 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/SpellCheckerUtils.java | 35 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/SpellCheckersPreference.java | 27 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/SpellCheckersSettings.java | 84 | ||||
-rw-r--r-- | src/com/android/settings/inputmethod/UserDictionaryList.java | 1 |
13 files changed, 321 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 69ec091..cfd92d0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -346,6 +346,26 @@ android:resource="@id/language_settings" /> </activity> + <activity android:name="Settings$SpellCheckersSettingsActivity" + android:label="@string/spellcheckers_settings_title" + android:clearTaskOnLaunch="true"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <action android:name="com.android.settings.VOICE_INPUT_OUTPUT_SETTINGS" /> + <category android:name="android.intent.category.VOICE_LAUNCH" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="com.android.settings.SHORTCUT" /> + </intent-filter> + <meta-data android:name="com.android.settings.FRAGMENT_CLASS" + android:value="com.android.settings.inputmethod.SpellCheckersSettings" /> + <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID" + android:resource="@id/language_settings" /> + <meta-data android:name="com.android.settings.PARENT_FRAGMENT_TITLE" + android:resource="@string/language_keyboard_settings_title" /> + <meta-data android:name="com.android.settings.PARENT_FRAGMENT_CLASS" + android:value="com.android.settings.Settings$InputMethodAndLanguageSettingsActivity" /> + </activity> + <activity android:name=".inputmethod.InputMethodAndSubtypeEnablerActivity" android:label="" android:clearTaskOnLaunch="true"> diff --git a/res/values/strings.xml b/res/values/strings.xml index 78a8069..d901d00 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3569,4 +3569,6 @@ found in the list of installed applications.</string> <!-- Instruction for touch exploration tutorial lesson 2, displayed after the user has scrolled a large amount. --> <string name="accessibility_tutorial_lesson_2_text_4">You have completed the tutorial. To exit and return to the Talk As I Touch setting, find and tap the <xliff:g id="finish" example="Finish">%s</xliff:g> button.</string> + <!-- Title for spelling correction settings --> + <string name="spellcheckers_settings_title">Spelling correction</string> </resources> diff --git a/res/values/styles.xml b/res/values/styles.xml index e9405fb..b832e97 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -158,7 +158,7 @@ <item name="android:layout">@layout/preference_inputmethod</item> <item name="android:widgetLayout">@layout/preference_inputmethod_widget</item> </style> - + <style name="AcessibilityTutorialButton"> <item name="android:layout_width">150dip</item> <item name="android:layout_height">wrap_content</item> diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml index fdf87fc..f696187 100644 --- a/res/xml/language_settings.xml +++ b/res/xml/language_settings.xml @@ -30,6 +30,10 @@ <PreferenceScreen android:key="key_user_dictionary_settings" /> + <com.android.settings.inputmethod.SpellCheckersPreference + android:key="spellcheckers_settings" + android:title="@string/spellcheckers_settings_title"/> + </PreferenceCategory> <PreferenceCategory android:key="keyboard_settings_category" diff --git a/res/xml/spellchecker_prefs.xml b/res/xml/spellchecker_prefs.xml new file mode 100644 index 0000000..1de0493 --- /dev/null +++ b/res/xml/spellchecker_prefs.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> + +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + android:title="@string/spellcheckers_settings_title"> + +</PreferenceScreen> diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index eb0b40c..f09125c 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -561,6 +561,7 @@ public class Settings extends PreferenceActivity implements ButtonBarHandler { public static class WifiSettingsActivity extends Settings { /* empty */ } public static class InputMethodAndLanguageSettingsActivity extends Settings { /* empty */ } public static class InputMethodAndSubtypeEnablerActivity extends Settings { /* empty */ } + public static class SpellCheckersSettingsActivity extends Settings { /* empty */ } public static class LocalePickerActivity extends Settings { /* empty */ } public static class UserDictionarySettingsActivity extends Settings { /* empty */ } public static class SoundSettingsActivity extends Settings { /* empty */ } diff --git a/src/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.java b/src/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.java new file mode 100644 index 0000000..f983f59 --- /dev/null +++ b/src/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.java @@ -0,0 +1,118 @@ +/* + * 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.content.Intent; +import android.preference.CheckBoxPreference; +import android.util.AttributeSet; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageView; +import android.widget.TextView; + +public class CheckBoxAndSettingsPreference extends CheckBoxPreference { + private static final float DISABLED_ALPHA = 0.4f; + + private SettingsPreferenceFragment mFragment; + private TextView mTitleText; + private TextView mSummaryText; + private View mCheckBox; + private ImageView mSetingsButton; + private Intent mSettingsIntent; + + public CheckBoxAndSettingsPreference(Context context, AttributeSet attrs) { + super(context, attrs); + setLayoutResource(R.layout.preference_inputmethod); + setWidgetLayoutResource(R.layout.preference_inputmethod_widget); + } + + @Override + protected void onBindView(View view) { + super.onBindView(view); + mCheckBox = view.findViewById(R.id.inputmethod_pref); + mCheckBox.setOnClickListener( + new OnClickListener() { + @Override + public void onClick(View arg0) { + onCheckBoxClicked(arg0); + } + }); + mSetingsButton = (ImageView)view.findViewById(R.id.inputmethod_settings); + mTitleText = (TextView)view.findViewById(android.R.id.title); + mSummaryText = (TextView)view.findViewById(android.R.id.summary); + mSetingsButton.setOnClickListener( + new OnClickListener() { + @Override + public void onClick(View arg0) { + onSettingsButtonClicked(arg0); + } + }); + enableSettingsButton(); + } + + + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + enableSettingsButton(); + } + + public void setFragmentIntent(SettingsPreferenceFragment fragment, Intent intent) { + mFragment = fragment; + mSettingsIntent = intent; + } + + protected void onCheckBoxClicked(View view) { + if (isChecked()) { + setChecked(false); + } else { + setChecked(true); + } + } + + protected void onSettingsButtonClicked(View arg0) { + if (mFragment != null && mSettingsIntent != null) { + mFragment.startActivity(mSettingsIntent); + } + } + + private void enableSettingsButton() { + if (mSetingsButton != null) { + if (mSettingsIntent == null) { + mSetingsButton.setVisibility(View.GONE); + } else { + final boolean checked = isChecked(); + mSetingsButton.setEnabled(checked); + mSetingsButton.setClickable(checked); + mSetingsButton.setFocusable(checked); + if (!checked) { + mSetingsButton.setAlpha(DISABLED_ALPHA); + } + } + } + if (mTitleText != null) { + mTitleText.setEnabled(true); + } + if (mSummaryText != null) { + mSummaryText.setEnabled(true); + } + } +} diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index e966ec7..d0ff2a0 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -17,6 +17,7 @@ package com.android.settings.inputmethod; import com.android.settings.R; +import com.android.settings.Settings.SpellCheckersSettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.UserDictionarySettings; import com.android.settings.Utils; @@ -112,6 +113,11 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mImis = mImm.getInputMethodList(); createImePreferenceHierarchy((PreferenceGroup)findPreference("keyboard_settings_category")); + + final Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setClass(getActivity(), SpellCheckersSettingsActivity.class); + ((SpellCheckersPreference)findPreference("spellcheckers_settings")).setFragmentIntent( + this, intent); } private void updateInputMethodSelectorSummary(int value) { diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java index b5353d6..efed823 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java +++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java @@ -147,6 +147,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { .setCancelable(true) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { chkPref.setChecked(true); InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( @@ -157,6 +158,7 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { }) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + @Override public void onClick(DialogInterface dialog, int which) { } diff --git a/src/com/android/settings/inputmethod/SpellCheckerUtils.java b/src/com/android/settings/inputmethod/SpellCheckerUtils.java new file mode 100644 index 0000000..3cc256f --- /dev/null +++ b/src/com/android/settings/inputmethod/SpellCheckerUtils.java @@ -0,0 +1,35 @@ +/* + * 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 android.view.textservice.SpellCheckerInfo; + +public class SpellCheckerUtils { + public static void setSpellCheckersEnabled(boolean enable) { + } + public static boolean getSpellCheckersEnabled() { + return true; + } + public static void setCurrentSpellChecker(SpellCheckerInfo info) { + } + public static SpellCheckerInfo getCurrentSpellChecker() { + return null; + } + public static SpellCheckerInfo[] getEnabledSpellCheckers() { + return null; + } +} diff --git a/src/com/android/settings/inputmethod/SpellCheckersPreference.java b/src/com/android/settings/inputmethod/SpellCheckersPreference.java new file mode 100644 index 0000000..7d2eec8 --- /dev/null +++ b/src/com/android/settings/inputmethod/SpellCheckersPreference.java @@ -0,0 +1,27 @@ +/* + * 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 android.content.Context; +import android.util.AttributeSet; + +public class SpellCheckersPreference extends CheckBoxAndSettingsPreference { + + public SpellCheckersPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } +} diff --git a/src/com/android/settings/inputmethod/SpellCheckersSettings.java b/src/com/android/settings/inputmethod/SpellCheckersSettings.java new file mode 100644 index 0000000..a36491f --- /dev/null +++ b/src/com/android/settings/inputmethod/SpellCheckersSettings.java @@ -0,0 +1,84 @@ +/* + * 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.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceScreen; +import android.view.textservice.SpellCheckerInfo; + +public class SpellCheckersSettings extends SettingsPreferenceFragment + implements Preference.OnPreferenceChangeListener { + + private SpellCheckerInfo mCurrentSci; + private SpellCheckerInfo[] mEnabledScis; + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + addPreferencesFromResource(R.xml.spellchecker_prefs); + updateScreen(); + } + + @Override + public boolean onPreferenceChange(Preference arg0, Object arg1) { + return false; + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) { + return false; + } + + @Override + public void onResume() { + updateScreen(); + } + + @Override + public void onPause() { + saveState(); + } + + private void saveState() { + SpellCheckerUtils.setCurrentSpellChecker(mCurrentSci); + } + + private void updateScreen() { + getPreferenceScreen().removeAll(); + updateEnabledSpellCheckers(); + } + + private void updateEnabledSpellCheckers() { + mCurrentSci = SpellCheckerUtils.getCurrentSpellChecker(); + mEnabledScis = SpellCheckerUtils.getEnabledSpellCheckers(); + if (mCurrentSci == null || mEnabledScis == null) { + return; + } + // TODO: implement here + for (int i = 0; i < mEnabledScis.length; ++i) { + final SpellCheckerInfo sci = mEnabledScis[i]; + final PreferenceScreen scs = new PreferenceScreen(getActivity(), null); + scs.setTitle(sci.getId()); + getPreferenceScreen().addPreference(scs); + + } + } +} diff --git a/src/com/android/settings/inputmethod/UserDictionaryList.java b/src/com/android/settings/inputmethod/UserDictionaryList.java index e0afe48..232a6db 100644 --- a/src/com/android/settings/inputmethod/UserDictionaryList.java +++ b/src/com/android/settings/inputmethod/UserDictionaryList.java @@ -45,6 +45,7 @@ public class UserDictionaryList extends SettingsPreferenceFragment { } static Set<String> getUserDictionaryLocalesList(Activity activity) { + @SuppressWarnings("deprecation") final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI, new String[] { UserDictionary.Words.LOCALE }, null, null, null); |