Loading java/res/values/config-common.xml +3 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ at input history to suggest a hopefully helpful suggestions for the next word? --> <bool name="config_default_next_word_prediction">true</bool> <!-- This configuration must be aligned with {@link KeyboardTheme#DEFAULT_THEME_ID}. --> <string name="config_default_keyboard_theme_id" translatable="false">2</string> <integer name="config_delay_update_shift_state">100</integer> <integer name="config_double_space_period_timeout">1100</integer> Loading java/res/values/keyboard-themes.xmldeleted 100644 → 0 +0 −34 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- /* ** ** Copyright 2014, 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. */ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- For keyboard color scheme option dialog. --> <string-array name="keyboard_theme_names" translatable="false"> <item>@string/keyboard_color_scheme_white</item> <item>@string/keyboard_color_scheme_blue</item> <!-- TODO: Make this item as translatable string resource. --> <item>Quantum</item> </string-array> <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. --> <string-array name="keyboard_theme_ids" translatable="false"> <item>2</item> <item>0</item> <item>3</item> </string-array> </resources> java/res/xml/prefs.xml +3 −2 Original line number Diff line number Diff line Loading @@ -158,11 +158,12 @@ android:persistent="true" android:defaultValue="false" /> <ListPreference android:key="pref_keyboard_theme" android:key="pref_keyboard_layout_20110916" android:title="@string/keyboard_color_scheme" android:persistent="true" android:entryValues="@array/keyboard_theme_ids" android:entries="@array/keyboard_theme_names" /> android:entries="@array/keyboard_theme_names" android:defaultValue="@string/config_default_keyboard_theme_id" /> <PreferenceScreen android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings" android:key="custom_input_styles" Loading java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +3 −4 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { * what user actually typed. */ private boolean mIsAutoCorrectionActive; private KeyboardTheme mKeyboardTheme; private KeyboardTheme mKeyboardTheme = KeyboardTheme.getDefaultKeyboardTheme(); private Context mThemeContext; private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); Loading Loading @@ -101,7 +101,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context, final KeyboardTheme keyboardTheme) { if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme)) { if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) { mKeyboardTheme = keyboardTheme; mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId); KeyboardLayoutSet.clearKeyboardCache(); Loading Loading @@ -342,8 +342,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mKeyboardView.closing(); } updateKeyboardThemeAndContextThemeWrapper( mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs)); updateKeyboardThemeAndContextThemeWrapper(mLatinIME, mKeyboardTheme); mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate( R.layout.input_view, null); mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame); Loading java/src/com/android/inputmethod/keyboard/KeyboardTheme.java +18 −108 Original line number Diff line number Diff line Loading @@ -17,86 +17,34 @@ package com.android.inputmethod.keyboard; import android.content.SharedPreferences; import android.os.Build; import android.os.Build.VERSION_CODES; import android.util.Log; import com.android.inputmethod.latin.R; import java.util.Arrays; import java.util.Comparator; import com.android.inputmethod.latin.settings.Settings; 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 int THEME_ID_ICS = 0; static final int THEME_ID_KLP = 2; static final int THEME_ID_LMP = 3; static final int DEFAULT_THEME_ID = THEME_ID_KLP; public static final int THEME_ID_ICS = 0; public static final int THEME_ID_KLP = 2; private static final int DEFAULT_THEME_ID = THEME_ID_KLP; private static final KeyboardTheme[] KEYBOARD_THEMES = { new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS, VERSION_CODES.ICE_CREAM_SANDWICH), new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP, VERSION_CODES.KITKAT), // TODO: Update to LMP style. new KeyboardTheme(THEME_ID_LMP, R.style.KeyboardTheme_KLP, // TODO: Update this constant once the *next* version becomes available. VERSION_CODES.CUR_DEVELOPMENT), new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS), new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP), }; static { // Sort {@link #KEYBOARD_THEME} by descending order of {@link #mMinApiVersion}. Arrays.sort(KEYBOARD_THEMES, new Comparator<KeyboardTheme>() { @Override public int compare(final KeyboardTheme lhs, final KeyboardTheme rhs) { if (lhs.mMinApiVersion > rhs.mMinApiVersion) return -1; if (lhs.mMinApiVersion < rhs.mMinApiVersion) return 1; return 0; } }); } public final int mThemeId; public final int mStyleId; final int mMinApiVersion; // Note: The themeId should be aligned with "themeId" attribute of Keyboard style // in values/themes-<style>.xml. private KeyboardTheme(final int themeId, final int styleId, final int minApiVersion) { // in values/style.xml. public KeyboardTheme(final int themeId, final int styleId) { mThemeId = themeId; mStyleId = styleId; mMinApiVersion = minApiVersion; } @Override public boolean equals(final Object o) { if (o == this) return true; return (o instanceof KeyboardTheme) && ((KeyboardTheme)o).mThemeId == mThemeId; } @Override public int hashCode() { return mThemeId; } // TODO: This method should be removed when {@link LatinImeLogger} is removed. public int getCompatibleThemeIdForLogging() { switch (mThemeId) { case THEME_ID_ICS: return 5; case THEME_ID_KLP: return 9; case THEME_ID_LMP: return 10; default: // Invalid theme return -1; } } private static KeyboardTheme searchKeyboardThemeById(final int themeId) { private static KeyboardTheme searchKeyboardTheme(final int themeId) { // TODO: This search algorithm isn't optimal if there are many themes. for (final KeyboardTheme theme : KEYBOARD_THEMES) { if (theme.mThemeId == themeId) { Loading @@ -106,57 +54,18 @@ public final class KeyboardTheme { return null; } private static int getSdkVersion() { final int sdkVersion = Build.VERSION.SDK_INT; // TODO: Consider to remove this check once the *next* version becomes available. if (sdkVersion == VERSION_CODES.KITKAT && Build.VERSION.CODENAME.startsWith("L")) { return VERSION_CODES.CUR_DEVELOPMENT; } return sdkVersion; } 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(); if (sdkVersion <= VERSION_CODES.KITKAT) { try { final int themeId = Integer.parseInt(obsoleteIdString); final KeyboardTheme theme = searchKeyboardThemeById(themeId); if (theme != null) { return theme; } Log.w(TAG, "Unknown keyboard theme in preference: " + obsoleteIdString); } catch (final NumberFormatException e) { Log.w(TAG, "Illegal keyboard theme in preference: " + obsoleteIdString); } } } // TODO: This search algorithm isn't optimal if there are many themes. for (final KeyboardTheme theme : KEYBOARD_THEMES) { if (sdkVersion >= theme.mMinApiVersion) { return theme; } } return searchKeyboardThemeById(DEFAULT_THEME_ID); } public static void saveKeyboardThemeId(final String themeIdString, final SharedPreferences prefs) { prefs.edit().putString(KEYBOARD_THEME_KEY, themeIdString).apply(); public static KeyboardTheme getDefaultKeyboardTheme() { return searchKeyboardTheme(DEFAULT_THEME_ID); } public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) { final int sdkVersion = getSdkVersion(); final String themeIdString = prefs.getString(KEYBOARD_THEME_KEY, null); final String themeIdString = prefs.getString(Settings.PREF_KEYBOARD_LAYOUT, null); if (themeIdString == null) { return getDefaultKeyboardTheme(prefs, sdkVersion); return getDefaultKeyboardTheme(); } try { final int themeId = Integer.parseInt(themeIdString); final KeyboardTheme theme = searchKeyboardThemeById(themeId); final KeyboardTheme theme = searchKeyboardTheme(themeId); if (theme != null) { return theme; } Loading @@ -164,8 +73,9 @@ public final class KeyboardTheme { } catch (final NumberFormatException e) { Log.w(TAG, "Illegal keyboard theme in preference: " + themeIdString); } // Remove preference. prefs.edit().remove(KEYBOARD_THEME_KEY).apply(); return getDefaultKeyboardTheme(prefs, sdkVersion); // Reset preference to default value. final String defaultThemeIdString = Integer.toString(DEFAULT_THEME_ID); prefs.edit().putString(Settings.PREF_KEYBOARD_LAYOUT, defaultThemeIdString).apply(); return getDefaultKeyboardTheme(); } } Loading
java/res/values/config-common.xml +3 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ at input history to suggest a hopefully helpful suggestions for the next word? --> <bool name="config_default_next_word_prediction">true</bool> <!-- This configuration must be aligned with {@link KeyboardTheme#DEFAULT_THEME_ID}. --> <string name="config_default_keyboard_theme_id" translatable="false">2</string> <integer name="config_delay_update_shift_state">100</integer> <integer name="config_double_space_period_timeout">1100</integer> Loading
java/res/values/keyboard-themes.xmldeleted 100644 → 0 +0 −34 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- /* ** ** Copyright 2014, 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. */ --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- For keyboard color scheme option dialog. --> <string-array name="keyboard_theme_names" translatable="false"> <item>@string/keyboard_color_scheme_white</item> <item>@string/keyboard_color_scheme_blue</item> <!-- TODO: Make this item as translatable string resource. --> <item>Quantum</item> </string-array> <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. --> <string-array name="keyboard_theme_ids" translatable="false"> <item>2</item> <item>0</item> <item>3</item> </string-array> </resources>
java/res/xml/prefs.xml +3 −2 Original line number Diff line number Diff line Loading @@ -158,11 +158,12 @@ android:persistent="true" android:defaultValue="false" /> <ListPreference android:key="pref_keyboard_theme" android:key="pref_keyboard_layout_20110916" android:title="@string/keyboard_color_scheme" android:persistent="true" android:entryValues="@array/keyboard_theme_ids" android:entries="@array/keyboard_theme_names" /> android:entries="@array/keyboard_theme_names" android:defaultValue="@string/config_default_keyboard_theme_id" /> <PreferenceScreen android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings" android:key="custom_input_styles" Loading
java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +3 −4 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { * what user actually typed. */ private boolean mIsAutoCorrectionActive; private KeyboardTheme mKeyboardTheme; private KeyboardTheme mKeyboardTheme = KeyboardTheme.getDefaultKeyboardTheme(); private Context mThemeContext; private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); Loading Loading @@ -101,7 +101,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context, final KeyboardTheme keyboardTheme) { if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme)) { if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) { mKeyboardTheme = keyboardTheme; mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId); KeyboardLayoutSet.clearKeyboardCache(); Loading Loading @@ -342,8 +342,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mKeyboardView.closing(); } updateKeyboardThemeAndContextThemeWrapper( mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs)); updateKeyboardThemeAndContextThemeWrapper(mLatinIME, mKeyboardTheme); mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate( R.layout.input_view, null); mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame); Loading
java/src/com/android/inputmethod/keyboard/KeyboardTheme.java +18 −108 Original line number Diff line number Diff line Loading @@ -17,86 +17,34 @@ package com.android.inputmethod.keyboard; import android.content.SharedPreferences; import android.os.Build; import android.os.Build.VERSION_CODES; import android.util.Log; import com.android.inputmethod.latin.R; import java.util.Arrays; import java.util.Comparator; import com.android.inputmethod.latin.settings.Settings; 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 int THEME_ID_ICS = 0; static final int THEME_ID_KLP = 2; static final int THEME_ID_LMP = 3; static final int DEFAULT_THEME_ID = THEME_ID_KLP; public static final int THEME_ID_ICS = 0; public static final int THEME_ID_KLP = 2; private static final int DEFAULT_THEME_ID = THEME_ID_KLP; private static final KeyboardTheme[] KEYBOARD_THEMES = { new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS, VERSION_CODES.ICE_CREAM_SANDWICH), new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP, VERSION_CODES.KITKAT), // TODO: Update to LMP style. new KeyboardTheme(THEME_ID_LMP, R.style.KeyboardTheme_KLP, // TODO: Update this constant once the *next* version becomes available. VERSION_CODES.CUR_DEVELOPMENT), new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS), new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP), }; static { // Sort {@link #KEYBOARD_THEME} by descending order of {@link #mMinApiVersion}. Arrays.sort(KEYBOARD_THEMES, new Comparator<KeyboardTheme>() { @Override public int compare(final KeyboardTheme lhs, final KeyboardTheme rhs) { if (lhs.mMinApiVersion > rhs.mMinApiVersion) return -1; if (lhs.mMinApiVersion < rhs.mMinApiVersion) return 1; return 0; } }); } public final int mThemeId; public final int mStyleId; final int mMinApiVersion; // Note: The themeId should be aligned with "themeId" attribute of Keyboard style // in values/themes-<style>.xml. private KeyboardTheme(final int themeId, final int styleId, final int minApiVersion) { // in values/style.xml. public KeyboardTheme(final int themeId, final int styleId) { mThemeId = themeId; mStyleId = styleId; mMinApiVersion = minApiVersion; } @Override public boolean equals(final Object o) { if (o == this) return true; return (o instanceof KeyboardTheme) && ((KeyboardTheme)o).mThemeId == mThemeId; } @Override public int hashCode() { return mThemeId; } // TODO: This method should be removed when {@link LatinImeLogger} is removed. public int getCompatibleThemeIdForLogging() { switch (mThemeId) { case THEME_ID_ICS: return 5; case THEME_ID_KLP: return 9; case THEME_ID_LMP: return 10; default: // Invalid theme return -1; } } private static KeyboardTheme searchKeyboardThemeById(final int themeId) { private static KeyboardTheme searchKeyboardTheme(final int themeId) { // TODO: This search algorithm isn't optimal if there are many themes. for (final KeyboardTheme theme : KEYBOARD_THEMES) { if (theme.mThemeId == themeId) { Loading @@ -106,57 +54,18 @@ public final class KeyboardTheme { return null; } private static int getSdkVersion() { final int sdkVersion = Build.VERSION.SDK_INT; // TODO: Consider to remove this check once the *next* version becomes available. if (sdkVersion == VERSION_CODES.KITKAT && Build.VERSION.CODENAME.startsWith("L")) { return VERSION_CODES.CUR_DEVELOPMENT; } return sdkVersion; } 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(); if (sdkVersion <= VERSION_CODES.KITKAT) { try { final int themeId = Integer.parseInt(obsoleteIdString); final KeyboardTheme theme = searchKeyboardThemeById(themeId); if (theme != null) { return theme; } Log.w(TAG, "Unknown keyboard theme in preference: " + obsoleteIdString); } catch (final NumberFormatException e) { Log.w(TAG, "Illegal keyboard theme in preference: " + obsoleteIdString); } } } // TODO: This search algorithm isn't optimal if there are many themes. for (final KeyboardTheme theme : KEYBOARD_THEMES) { if (sdkVersion >= theme.mMinApiVersion) { return theme; } } return searchKeyboardThemeById(DEFAULT_THEME_ID); } public static void saveKeyboardThemeId(final String themeIdString, final SharedPreferences prefs) { prefs.edit().putString(KEYBOARD_THEME_KEY, themeIdString).apply(); public static KeyboardTheme getDefaultKeyboardTheme() { return searchKeyboardTheme(DEFAULT_THEME_ID); } public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) { final int sdkVersion = getSdkVersion(); final String themeIdString = prefs.getString(KEYBOARD_THEME_KEY, null); final String themeIdString = prefs.getString(Settings.PREF_KEYBOARD_LAYOUT, null); if (themeIdString == null) { return getDefaultKeyboardTheme(prefs, sdkVersion); return getDefaultKeyboardTheme(); } try { final int themeId = Integer.parseInt(themeIdString); final KeyboardTheme theme = searchKeyboardThemeById(themeId); final KeyboardTheme theme = searchKeyboardTheme(themeId); if (theme != null) { return theme; } Loading @@ -164,8 +73,9 @@ public final class KeyboardTheme { } catch (final NumberFormatException e) { Log.w(TAG, "Illegal keyboard theme in preference: " + themeIdString); } // Remove preference. prefs.edit().remove(KEYBOARD_THEME_KEY).apply(); return getDefaultKeyboardTheme(prefs, sdkVersion); // Reset preference to default value. final String defaultThemeIdString = Integer.toString(DEFAULT_THEME_ID); prefs.edit().putString(Settings.PREF_KEYBOARD_LAYOUT, defaultThemeIdString).apply(); return getDefaultKeyboardTheme(); } }