aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-05-16 09:59:22 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-16 09:59:22 +0000
commit060e63835a8e6e9dc752c8017ede8af6e8096a5c (patch)
tree3bbe35f82a280d2ce0353ac5e0cb08dcd11e3df6 /java/src
parentd1f9ce00db1013e38ce07979aae364287435fa37 (diff)
parent3b12718537f40b262e5eeb5c8168d69b2afa6955 (diff)
downloadlatinime-060e63835a8e6e9dc752c8017ede8af6e8096a5c.tar.gz
latinime-060e63835a8e6e9dc752c8017ede8af6e8096a5c.tar.xz
latinime-060e63835a8e6e9dc752c8017ede8af6e8096a5c.zip
Merge "Fix keyboard theme selection logic"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardTheme.java57
1 files changed, 37 insertions, 20 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
index e0b74fa14..0c0c16229 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -29,8 +29,8 @@ import java.util.Comparator;
public final class KeyboardTheme {
private static final String TAG = KeyboardTheme.class.getSimpleName();
- static final String KITKAT_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916";
- static final String KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509";
+ static final String KLP_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916";
+ static final String LXX_KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509";
static final int THEME_ID_ICS = 0;
static final int THEME_ID_KLP = 2;
@@ -39,9 +39,9 @@ public final class KeyboardTheme {
private static final KeyboardTheme[] KEYBOARD_THEMES = {
new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS,
- VERSION_CODES.ICE_CREAM_SANDWICH),
+ VERSION_CODES.BASE),
new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP,
- VERSION_CODES.KITKAT),
+ VERSION_CODES.ICE_CREAM_SANDWICH),
new KeyboardTheme(THEME_ID_LXX, R.style.KeyboardTheme_LXX,
// TODO: Update this constant once the *next* version becomes available.
VERSION_CODES.CUR_DEVELOPMENT),
@@ -116,22 +116,23 @@ public final class KeyboardTheme {
static KeyboardTheme getDefaultKeyboardTheme(final SharedPreferences prefs,
final int sdkVersion) {
- final String obsoleteIdString = prefs.getString(KITKAT_KEYBOARD_THEME_KEY, null);
- if (obsoleteIdString != null) {
- // Remove old preference.
- prefs.edit().remove(KITKAT_KEYBOARD_THEME_KEY).apply();
+ final String klpThemeIdString = prefs.getString(KLP_KEYBOARD_THEME_KEY, null);
+ if (klpThemeIdString != null) {
if (sdkVersion <= VERSION_CODES.KITKAT) {
try {
- final int themeId = Integer.parseInt(obsoleteIdString);
+ final int themeId = Integer.parseInt(klpThemeIdString);
final KeyboardTheme theme = searchKeyboardThemeById(themeId);
if (theme != null) {
return theme;
}
- Log.w(TAG, "Unknown keyboard theme in preference: " + obsoleteIdString);
+ Log.w(TAG, "Unknown keyboard theme in KLP preference: " + klpThemeIdString);
} catch (final NumberFormatException e) {
- Log.w(TAG, "Illegal keyboard theme in preference: " + obsoleteIdString);
+ Log.w(TAG, "Illegal keyboard theme in KLP preference: " + klpThemeIdString, e);
}
}
+ // Remove old preference.
+ Log.i(TAG, "Remove KLP keyboard theme preference: " + klpThemeIdString);
+ prefs.edit().remove(KLP_KEYBOARD_THEME_KEY).apply();
}
// TODO: This search algorithm isn't optimal if there are many themes.
for (final KeyboardTheme theme : KEYBOARD_THEMES) {
@@ -144,27 +145,43 @@ public final class KeyboardTheme {
public static void saveKeyboardThemeId(final String themeIdString,
final SharedPreferences prefs) {
- prefs.edit().putString(KEYBOARD_THEME_KEY, themeIdString).apply();
+ saveKeyboardThemeId(themeIdString, prefs, getSdkVersion());
+ }
+
+ static String getPreferenceKey(final int sdkVersion) {
+ if (sdkVersion <= VERSION_CODES.KITKAT) {
+ return KLP_KEYBOARD_THEME_KEY;
+ }
+ return LXX_KEYBOARD_THEME_KEY;
+ }
+
+ static void saveKeyboardThemeId(final String themeIdString, final SharedPreferences prefs,
+ final int sdkVersion) {
+ final String prefKey = getPreferenceKey(sdkVersion);
+ prefs.edit().putString(prefKey, themeIdString).apply();
}
public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) {
- final int sdkVersion = getSdkVersion();
- final String themeIdString = prefs.getString(KEYBOARD_THEME_KEY, null);
- if (themeIdString == null) {
+ return getKeyboardTheme(prefs, getSdkVersion());
+ }
+
+ static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs, final int sdkVersion) {
+ final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null);
+ if (lxxThemeIdString == null) {
return getDefaultKeyboardTheme(prefs, sdkVersion);
}
try {
- final int themeId = Integer.parseInt(themeIdString);
+ final int themeId = Integer.parseInt(lxxThemeIdString);
final KeyboardTheme theme = searchKeyboardThemeById(themeId);
if (theme != null) {
return theme;
}
- Log.w(TAG, "Unknown keyboard theme in preference: " + themeIdString);
+ Log.w(TAG, "Unknown keyboard theme in LXX preference: " + lxxThemeIdString);
} catch (final NumberFormatException e) {
- Log.w(TAG, "Illegal keyboard theme in preference: " + themeIdString);
+ Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e);
}
- // Remove preference.
- prefs.edit().remove(KEYBOARD_THEME_KEY).apply();
+ // Remove preference that contains unknown or illegal theme id.
+ prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply();
return getDefaultKeyboardTheme(prefs, sdkVersion);
}
}