Handle the case where no spell checker is selected. am: 1ea368b5d5
am: edbcfde9a4
* commit 'edbcfde9a4abdbb69508a3388c8b3840e2630dc3':
Handle the case where no spell checker is selected.
This commit is contained in:
@@ -7238,6 +7238,9 @@
|
||||
<!-- [CHAR LIMIT=30] Title for dialog for setting to control the default spell checker -->
|
||||
<string name="choose_spell_checker">Choose spell checker</string>
|
||||
|
||||
<!-- [CHAR LIMIT=30] Label for the placeholder of the current spell checker name. Used when no spell checker is currently selected. -->
|
||||
<string name="spell_checker_not_selected">Not selected</string>
|
||||
|
||||
<!-- Notification log debug tool: missing title -->
|
||||
<string name="notification_log_no_title">(none)</string>
|
||||
<!-- Notification log debug tool: delimiter between header and field data -->
|
||||
|
@@ -261,12 +261,16 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
|
||||
if (spellChecker != null) {
|
||||
final TextServicesManager tsm = (TextServicesManager) getSystemService(
|
||||
Context.TEXT_SERVICES_MANAGER_SERVICE);
|
||||
final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
|
||||
spellChecker.setEnabled(sci != null);
|
||||
if (tsm.isSpellCheckerEnabled() && sci != null) {
|
||||
spellChecker.setSummary(sci.loadLabel(getPackageManager()));
|
||||
} else {
|
||||
if (!tsm.isSpellCheckerEnabled()) {
|
||||
spellChecker.setEnabled(false);
|
||||
spellChecker.setSummary(R.string.switch_off_text);
|
||||
} else {
|
||||
final SpellCheckerInfo sci = tsm.getCurrentSpellChecker();
|
||||
if (sci != null) {
|
||||
spellChecker.setSummary(sci.loadLabel(getPackageManager()));
|
||||
} else {
|
||||
spellChecker.setSummary(R.string.spell_checker_not_selected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -73,19 +73,17 @@ public class SpellCheckersSettings extends SettingsPreferenceFragment
|
||||
}
|
||||
|
||||
private void populatePreferenceScreen() {
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
final Context context = getActivity();
|
||||
final int count = (mEnabledScis == null) ? 0 : mEnabledScis.length;
|
||||
|
||||
for (int index = 0; index < count; ++index) {
|
||||
final SpellCheckerInfo sci = mEnabledScis[index];
|
||||
}
|
||||
final SpellCheckerPreference pref = new SpellCheckerPreference(getPrefContext(),
|
||||
mEnabledScis);
|
||||
pref.setTitle(R.string.default_spell_checker);
|
||||
pref.setSummary("%s");
|
||||
final int count = (mEnabledScis == null) ? 0 : mEnabledScis.length;
|
||||
if (count > 0) {
|
||||
pref.setSummary("%s");
|
||||
} else {
|
||||
pref.setSummary(R.string.spell_checker_not_selected);
|
||||
}
|
||||
pref.setOnPreferenceChangeListener(this);
|
||||
screen.addPreference(pref);
|
||||
getPreferenceScreen().addPreference(pref);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -114,8 +112,13 @@ public class SpellCheckersSettings extends SettingsPreferenceFragment
|
||||
final boolean isSpellCheckerEnabled = mTsm.isSpellCheckerEnabled();
|
||||
mSwitchBar.setChecked(isSpellCheckerEnabled);
|
||||
|
||||
final SpellCheckerSubtype currentScs = mTsm.getCurrentSpellCheckerSubtype(
|
||||
false /* allowImplicitlySelectedSubtype */);
|
||||
final SpellCheckerSubtype currentScs;
|
||||
if (mCurrentSci == null) {
|
||||
currentScs = mTsm.getCurrentSpellCheckerSubtype(
|
||||
false /* allowImplicitlySelectedSubtype */);
|
||||
} else {
|
||||
currentScs = null;
|
||||
}
|
||||
mSpellCheckerLanaguagePref.setSummary(getSpellCheckerSubtypeLabel(mCurrentSci, currentScs));
|
||||
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
@@ -128,12 +131,13 @@ public class SpellCheckersSettings extends SettingsPreferenceFragment
|
||||
pref.setSelected(mCurrentSci);
|
||||
}
|
||||
}
|
||||
mSpellCheckerLanaguagePref.setEnabled(isSpellCheckerEnabled && mCurrentSci != null);
|
||||
}
|
||||
|
||||
private CharSequence getSpellCheckerSubtypeLabel(final SpellCheckerInfo sci,
|
||||
final SpellCheckerSubtype subtype) {
|
||||
if (sci == null) {
|
||||
return null;
|
||||
return getString(R.string.spell_checker_not_selected);
|
||||
}
|
||||
if (subtype == null) {
|
||||
return getString(R.string.use_system_language_to_select_input_method_subtypes);
|
||||
@@ -173,6 +177,11 @@ public class SpellCheckersSettings extends SettingsPreferenceFragment
|
||||
mDialog.dismiss();
|
||||
}
|
||||
final SpellCheckerInfo currentSci = mTsm.getCurrentSpellChecker();
|
||||
if (currentSci == null) {
|
||||
// This can happen in some situations. One example is that the package that the current
|
||||
// spell checker belongs to was uninstalled or being in background.
|
||||
return;
|
||||
}
|
||||
final SpellCheckerSubtype currentScs = mTsm.getCurrentSpellCheckerSubtype(
|
||||
false /* allowImplicitlySelectedSubtype */);
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
|
Reference in New Issue
Block a user