diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 8f6c12561efdd982ddf33ad26c15a884a5938714..61779d4b5452f8afada397725618ed507965edd7 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -41,7 +41,7 @@ <integer name="config_keyboard_grid_width">32</integer> <integer name="config_keyboard_grid_height">16</integer> <integer name="config_double_space_period_timeout">1100</integer> - <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. --> + <!-- This configuration is an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. --> <string name="config_default_keyboard_theme_index" translatable="false">2</string> <integer name="config_max_more_keys_column">5</integer> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index ca9d7c388f11b47c8a0cef07ab074b8515ab8f81..af5ec061b2fbdf03c7ec4089fee735e14e6d2624 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -111,12 +111,24 @@ <item>@string/layout_gingerbread</item> <item>@string/layout_klp</item> </string-array> + <!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. --> <string-array name="keyboard_layout_modes_values"> <item>0</item> <item>1</item> <item>2</item> </string-array> + <!-- For keyboard color scheme option dialog. --> + <string-array name="keyboard_color_schemes"> + <item>@string/keyboard_color_scheme_white</item> + <item>@string/keyboard_color_scheme_blue</item> + </string-array> + <!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. --> + <string-array name="keyboard_color_schemes_values"> + <item>2</item> + <item>0</item> + </string-array> + <!-- Subtype locale display name exceptions. For each exception, there should be related string resources for display name that may have explicit keyboard layout. The string resource name must be "subtype_<locale>" or diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index b159bb5ddd8a939865110cb41149a18863d2ef37..11b3ea3afb8569535050dd2d5c35f78f3b5993ce 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -452,6 +452,13 @@ mobile devices. [CHAR LIMIT=25] --> <!-- Description for Emoji keyboard subtype [CHAR LIMIT=25] --> <string name="subtype_emoji">Emoji</string> + <!-- Title of the preference settings for switching keyboard color scheme [CHAR LIMIT=35] --> + <string name="keyboard_color_scheme">Color scheme</string> + <!-- The keyboard color scheme name, White [CHAR LIMIT=16] --> + <string name="keyboard_color_scheme_white">White</string> + <!-- The keyboard color scheme name, Blue [CHAR LIMIT=16] --> + <string name="keyboard_color_scheme_blue">Blue</string> + <!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]--> <string name="custom_input_styles_title">Custom input styles</string> <!-- Title of the option menu to add a new style entry in the preference settings [CHAR LIMIT=16] --> diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index 6c36b0e8914dc1608982b25f691874de6e9cecb3..d2b4475450da7525de854f37d50a35c7551ea6ac 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -158,6 +158,14 @@ android:summary="@string/sliding_key_input_preview_summary" android:persistent="true" android:defaultValue="true" /> + <ListPreference + android:key="pref_keyboard_layout_20110916" + android:title="@string/keyboard_color_scheme" + android:summary="%s" + android:persistent="true" + android:entryValues="@array/keyboard_color_schemes_values" + android:entries="@array/keyboard_color_schemes" + android:defaultValue="@string/config_default_keyboard_theme_index" /> <PreferenceScreen android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings" android:key="custom_input_styles" diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index f893636ada03666e050fa255bb7adbe6cfd1fca7..a6b293f2f328c46527bc88a8585489ae42854cd1 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -27,6 +27,7 @@ import android.view.View; import android.view.inputmethod.EditorInfo; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; +import com.android.inputmethod.compat.InputMethodServiceCompatUtils; import com.android.inputmethod.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException; import com.android.inputmethod.keyboard.internal.KeyboardState; import com.android.inputmethod.latin.InputView; @@ -75,6 +76,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private EmojiPalettesView mEmojiPalettesView; private LatinIME mLatinIME; private Resources mResources; + private boolean mIsHardwareAcceleratedDrawingEnabled; private KeyboardState mState; @@ -108,7 +110,16 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mPrefs = prefs; mSubtypeSwitcher = SubtypeSwitcher.getInstance(); mState = new KeyboardState(this); - setContextThemeWrapper(latinIme, getKeyboardTheme(latinIme, prefs)); + mIsHardwareAcceleratedDrawingEnabled = + InputMethodServiceCompatUtils.enableHardwareAcceleration(mLatinIME); + } + + public void updateKeyboardTheme() { + final boolean themeUpdated = updateKeyboardThemeAndContextThemeWrapper( + mLatinIME, getKeyboardTheme(mLatinIME, mPrefs)); + if (themeUpdated && mKeyboardView != null) { + mLatinIME.setInputView(onCreateInputView(mIsHardwareAcceleratedDrawingEnabled)); + } } private static KeyboardTheme getKeyboardTheme(final Context context, @@ -128,12 +139,15 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { return KEYBOARD_THEMES[Integer.valueOf(defaultIndex)]; } - private void setContextThemeWrapper(final Context context, final KeyboardTheme keyboardTheme) { + private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context, + final KeyboardTheme keyboardTheme) { if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) { mKeyboardTheme = keyboardTheme; mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId); KeyboardLayoutSet.clearKeyboardCache(); + return true; } + return false; } public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues settingsValues) { @@ -365,7 +379,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mKeyboardView.closing(); } - setContextThemeWrapper(mLatinIME, mKeyboardTheme); + updateKeyboardThemeAndContextThemeWrapper(mLatinIME, mKeyboardTheme); mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate( R.layout.input_view, null); mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame); diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 26b35bf0c58d20de532aa2995e58e4b133ac6163..326c53f0e821625aaea718deda672028d3078384 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -809,6 +809,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen super.onStartInputView(editorInfo, restarting); mRichImm.clearSubtypeCaches(); final KeyboardSwitcher switcher = mKeyboardSwitcher; + switcher.updateKeyboardTheme(); final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView(); // If we are starting input in a different text field from before, we'll have to reload // settings, so currentSettingsValues can't be final. diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java index 1b592b56521a09546254b8591a47c54a77e4f3f0..da1fb73feaacf95202b74b4703a9efa8f22649d8 100644 --- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java +++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java @@ -113,9 +113,7 @@ public final class DebugSettings extends PreferenceFragment mServiceNeedsRestart = true; } } else if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH) - || key.equals(KeyboardSwitcher.PREF_KEYBOARD_LAYOUT)) { - mServiceNeedsRestart = true; - } else if (key.equals(PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG)) { + || key.equals(PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG)) { mServiceNeedsRestart = true; } }