Merge "[Step 1] Add preference activities for spell checkers"

This commit is contained in:
satok
2011-07-24 18:13:04 -07:00
committed by Android (Google) Code Review
13 changed files with 321 additions and 1 deletions

View File

@@ -364,6 +364,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">

View File

@@ -3586,4 +3586,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>

View File

@@ -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"

View File

@@ -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>

View File

@@ -562,6 +562,7 @@ public class Settings extends PreferenceActivity implements ButtonBarHandler {
public static class WifiP2pSettingsActivity 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 */ }

View File

@@ -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);
}
}
}

View File

@@ -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) {

View File

@@ -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) {
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);