From e077d2b607032fb66a4a046aa4b46945d32d281e Mon Sep 17 00:00:00 2001 From: satok Date: Mon, 25 Jul 2011 09:38:11 +0900 Subject: [Step 1] Add preference activities for spell checkers Bug: 5057977 Change-Id: I8f2f3d480325029c794c058beed2475033a617f9 --- src/com/android/settings/Settings.java | 1 + .../inputmethod/CheckBoxAndSettingsPreference.java | 118 +++++++++++++++++++++ .../InputMethodAndLanguageSettings.java | 6 ++ .../inputmethod/InputMethodAndSubtypeEnabler.java | 2 + .../settings/inputmethod/SpellCheckerUtils.java | 35 ++++++ .../inputmethod/SpellCheckersPreference.java | 27 +++++ .../inputmethod/SpellCheckersSettings.java | 84 +++++++++++++++ .../settings/inputmethod/UserDictionaryList.java | 1 + 8 files changed, 274 insertions(+) create mode 100644 src/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.java create mode 100644 src/com/android/settings/inputmethod/SpellCheckerUtils.java create mode 100644 src/com/android/settings/inputmethod/SpellCheckersPreference.java create mode 100644 src/com/android/settings/inputmethod/SpellCheckersSettings.java (limited to 'src/com') 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 getUserDictionaryLocalesList(Activity activity) { + @SuppressWarnings("deprecation") final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI, new String[] { UserDictionary.Words.LOCALE }, null, null, null); -- cgit v1.1