Update Color Scheme summary explicitly

Bug: 11622614
Change-Id: I5464054425e4d688eaa39f96ba9a3a3c613c6f42
main
Tadashi G. Takaoka 2013-11-22 12:32:52 +09:00
parent 1b0e574830
commit b0b1982442
4 changed files with 61 additions and 23 deletions

View File

@ -161,7 +161,6 @@
<ListPreference <ListPreference
android:key="pref_keyboard_layout_20110916" android:key="pref_keyboard_layout_20110916"
android:title="@string/keyboard_color_scheme" android:title="@string/keyboard_color_scheme"
android:summary="%s"
android:persistent="true" android:persistent="true"
android:entryValues="@array/keyboard_color_schemes_values" android:entryValues="@array/keyboard_color_schemes_values"
android:entries="@array/keyboard_color_schemes" android:entries="@array/keyboard_color_schemes"

View File

@ -44,8 +44,6 @@ import com.android.inputmethod.latin.utils.ResourceUtils;
public final class KeyboardSwitcher implements KeyboardState.SwitchActions { public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
private static final String TAG = KeyboardSwitcher.class.getSimpleName(); private static final String TAG = KeyboardSwitcher.class.getSimpleName();
public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20110916";
static final class KeyboardTheme { static final class KeyboardTheme {
public final int mThemeId; public final int mThemeId;
public final int mStyleId; public final int mStyleId;
@ -58,13 +56,14 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
} }
} }
private static final int INDEX_THEME_ICS = 0; public static final int THEME_INDEX_ICS = 0;
private static final int INDEX_THEME_GB = 1; public static final int THEME_INDEX_GB = 1;
private static final int INDEX_THEME_KLP = 2; public static final int THEME_INDEX_KLP = 2;
private static final KeyboardTheme[] KEYBOARD_THEMES = { public static final int THEME_INDEX_DEFAULT = THEME_INDEX_KLP;
new KeyboardTheme(INDEX_THEME_ICS, R.style.KeyboardTheme_ICS), public static final KeyboardTheme[] KEYBOARD_THEMES = {
new KeyboardTheme(INDEX_THEME_GB, R.style.KeyboardTheme_GB), new KeyboardTheme(THEME_INDEX_ICS, R.style.KeyboardTheme_ICS),
new KeyboardTheme(INDEX_THEME_KLP, R.style.KeyboardTheme_KLP), new KeyboardTheme(THEME_INDEX_GB, R.style.KeyboardTheme_GB),
new KeyboardTheme(THEME_INDEX_KLP, R.style.KeyboardTheme_KLP),
}; };
private SubtypeSwitcher mSubtypeSwitcher; private SubtypeSwitcher mSubtypeSwitcher;
@ -86,7 +85,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
* what user actually typed. */ * what user actually typed. */
private boolean mIsAutoCorrectionActive; private boolean mIsAutoCorrectionActive;
private KeyboardTheme mKeyboardTheme = KEYBOARD_THEMES[INDEX_THEME_KLP]; private KeyboardTheme mKeyboardTheme = KEYBOARD_THEMES[THEME_INDEX_DEFAULT];
private Context mThemeContext; private Context mThemeContext;
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@ -124,19 +123,15 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
private static KeyboardTheme getKeyboardTheme(final Context context, private static KeyboardTheme getKeyboardTheme(final Context context,
final SharedPreferences prefs) { final SharedPreferences prefs) {
final String defaultIndex = context.getString(R.string.config_default_keyboard_theme_index); final Resources res = context.getResources();
final String themeIndex = prefs.getString(PREF_KEYBOARD_LAYOUT, defaultIndex); final int index = Settings.readKeyboardThemeIndex(prefs, res);
try {
final int index = Integer.valueOf(themeIndex);
if (index >= 0 && index < KEYBOARD_THEMES.length) { if (index >= 0 && index < KEYBOARD_THEMES.length) {
return KEYBOARD_THEMES[index]; return KEYBOARD_THEMES[index];
} }
} catch (NumberFormatException e) { final int defaultThemeIndex = Settings.resetAndGetDefaultKeyboardThemeIndex(prefs, res);
// Format error, keyboard theme is default to 0. Log.w(TAG, "Illegal keyboard theme in preference: " + index + ", default to "
} + defaultThemeIndex);
Log.w(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to " return KEYBOARD_THEMES[defaultThemeIndex];
+ defaultIndex);
return KEYBOARD_THEMES[Integer.valueOf(defaultIndex)];
} }
private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context, private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,

View File

@ -65,6 +65,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
"pref_show_language_switch_key"; "pref_show_language_switch_key";
public static final String PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST = public static final String PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST =
"pref_include_other_imes_in_language_switch_list"; "pref_include_other_imes_in_language_switch_list";
public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20110916";
public static final String PREF_CUSTOM_INPUT_STYLES = "custom_input_styles"; public static final String PREF_CUSTOM_INPUT_STYLES = "custom_input_styles";
public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY = public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY =
"pref_key_preview_popup_dismiss_delay"; "pref_key_preview_popup_dismiss_delay";
@ -262,6 +263,28 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
return prefs.getBoolean(PREF_SHOW_LANGUAGE_SWITCH_KEY, true); return prefs.getBoolean(PREF_SHOW_LANGUAGE_SWITCH_KEY, true);
} }
public static int readKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) {
final String defaultThemeIndex = res.getString(
R.string.config_default_keyboard_theme_index);
final String themeIndex = prefs.getString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex);
try {
return Integer.valueOf(themeIndex);
} catch (final NumberFormatException e) {
// Format error, returns default keyboard theme index.
Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to "
+ defaultThemeIndex, e);
return Integer.valueOf(defaultThemeIndex);
}
}
public static int resetAndGetDefaultKeyboardThemeIndex(final SharedPreferences prefs,
final Resources res) {
final String defaultThemeIndex = res.getString(
R.string.config_default_keyboard_theme_index);
prefs.edit().putString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex).apply();
return Integer.valueOf(defaultThemeIndex);
}
public static String readPrefAdditionalSubtypes(final SharedPreferences prefs, public static String readPrefAdditionalSubtypes(final SharedPreferences prefs,
final Resources res) { final Resources res) {
final String predefinedPrefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes( final String predefinedPrefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(

View File

@ -255,6 +255,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
} }
updateShowCorrectionSuggestionsSummary(); updateShowCorrectionSuggestionsSummary();
updateKeyPreviewPopupDelaySummary(); updateKeyPreviewPopupDelaySummary();
updateColorSchemeSummary(prefs, getResources());
updateCustomInputStylesSummary(); updateCustomInputStylesSummary();
} }
@ -288,6 +289,7 @@ public final class SettingsFragment extends InputMethodSettingsFragment
ensureConsistencyOfAutoCorrectionSettings(); ensureConsistencyOfAutoCorrectionSettings();
updateShowCorrectionSuggestionsSummary(); updateShowCorrectionSuggestionsSummary();
updateKeyPreviewPopupDelaySummary(); updateKeyPreviewPopupDelaySummary();
updateColorSchemeSummary(prefs, res);
refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, getResources()); refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, getResources());
} }
@ -305,6 +307,25 @@ public final class SettingsFragment extends InputMethodSettingsFragment
mShowCorrectionSuggestionsPreference.getValue())]); mShowCorrectionSuggestionsPreference.getValue())]);
} }
private void updateColorSchemeSummary(final SharedPreferences prefs, final Resources res) {
// Because the "%s" summary trick of {@link ListPreference} doesn't work properly before
// KitKat, we need to update the summary by code.
final Preference preference = findPreference(Settings.PREF_KEYBOARD_LAYOUT);
if (!(preference instanceof ListPreference)) {
Log.w(TAG, "Can't find Keyboard Color Scheme preference");
return;
}
final ListPreference colorSchemePreference = (ListPreference)preference;
final int themeIndex = Settings.readKeyboardThemeIndex(prefs, res);
int entryIndex = colorSchemePreference.findIndexOfValue(Integer.toString(themeIndex));
if (entryIndex < 0) {
final int defaultThemeIndex = Settings.resetAndGetDefaultKeyboardThemeIndex(prefs, res);
entryIndex = colorSchemePreference.findIndexOfValue(
Integer.toString(defaultThemeIndex));
}
colorSchemePreference.setSummary(colorSchemePreference.getEntries()[entryIndex]);
}
private void updateCustomInputStylesSummary() { private void updateCustomInputStylesSummary() {
final PreferenceScreen customInputStyles = final PreferenceScreen customInputStyles =
(PreferenceScreen)findPreference(Settings.PREF_CUSTOM_INPUT_STYLES); (PreferenceScreen)findPreference(Settings.PREF_CUSTOM_INPUT_STYLES);