Add keyboard color switch option

Bug: 11622614
Change-Id: I25aa1ff7376fe72fd94ab2cb7190c61d7a98a1af
main
Tadashi G. Takaoka 2013-11-11 20:39:03 +09:00 committed by The Android Automerger
parent 51352009b5
commit db86a6f271
6 changed files with 40 additions and 7 deletions

View File

@ -41,7 +41,7 @@
<integer name="config_keyboard_grid_width">32</integer> <integer name="config_keyboard_grid_width">32</integer>
<integer name="config_keyboard_grid_height">16</integer> <integer name="config_keyboard_grid_height">16</integer>
<integer name="config_double_space_period_timeout">1100</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> <string name="config_default_keyboard_theme_index" translatable="false">2</string>
<integer name="config_max_more_keys_column">5</integer> <integer name="config_max_more_keys_column">5</integer>

View File

@ -111,12 +111,24 @@
<item>@string/layout_gingerbread</item> <item>@string/layout_gingerbread</item>
<item>@string/layout_klp</item> <item>@string/layout_klp</item>
</string-array> </string-array>
<!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
<string-array name="keyboard_layout_modes_values"> <string-array name="keyboard_layout_modes_values">
<item>0</item> <item>0</item>
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
</string-array> </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. <!-- Subtype locale display name exceptions.
For each exception, there should be related string resources for display name that may have 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 explicit keyboard layout. The string resource name must be "subtype_<locale>" or

View File

@ -158,6 +158,14 @@
android:summary="@string/sliding_key_input_preview_summary" android:summary="@string/sliding_key_input_preview_summary"
android:persistent="true" android:persistent="true"
android:defaultValue="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 <PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings" android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings"
android:key="custom_input_styles" android:key="custom_input_styles"

View File

@ -27,6 +27,7 @@ import android.view.View;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy; import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
import com.android.inputmethod.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException; import com.android.inputmethod.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException;
import com.android.inputmethod.keyboard.internal.KeyboardState; import com.android.inputmethod.keyboard.internal.KeyboardState;
import com.android.inputmethod.latin.InputView; import com.android.inputmethod.latin.InputView;
@ -75,6 +76,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
private EmojiPalettesView mEmojiPalettesView; private EmojiPalettesView mEmojiPalettesView;
private LatinIME mLatinIME; private LatinIME mLatinIME;
private Resources mResources; private Resources mResources;
private boolean mIsHardwareAcceleratedDrawingEnabled;
private KeyboardState mState; private KeyboardState mState;
@ -108,7 +110,16 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mPrefs = prefs; mPrefs = prefs;
mSubtypeSwitcher = SubtypeSwitcher.getInstance(); mSubtypeSwitcher = SubtypeSwitcher.getInstance();
mState = new KeyboardState(this); 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, private static KeyboardTheme getKeyboardTheme(final Context context,
@ -128,12 +139,15 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
return KEYBOARD_THEMES[Integer.valueOf(defaultIndex)]; 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) { if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) {
mKeyboardTheme = keyboardTheme; mKeyboardTheme = keyboardTheme;
mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId); mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId);
KeyboardLayoutSet.clearKeyboardCache(); KeyboardLayoutSet.clearKeyboardCache();
return true;
} }
return false;
} }
public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues settingsValues) { public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues settingsValues) {
@ -365,7 +379,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mKeyboardView.closing(); mKeyboardView.closing();
} }
setContextThemeWrapper(mLatinIME, mKeyboardTheme); updateKeyboardThemeAndContextThemeWrapper(mLatinIME, mKeyboardTheme);
mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate( mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate(
R.layout.input_view, null); R.layout.input_view, null);
mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame); mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame);

View File

@ -811,6 +811,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
super.onStartInputView(editorInfo, restarting); super.onStartInputView(editorInfo, restarting);
mRichImm.clearSubtypeCaches(); mRichImm.clearSubtypeCaches();
final KeyboardSwitcher switcher = mKeyboardSwitcher; final KeyboardSwitcher switcher = mKeyboardSwitcher;
switcher.updateKeyboardTheme();
final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView(); final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView();
// If we are starting input in a different text field from before, we'll have to reload // If we are starting input in a different text field from before, we'll have to reload
// settings, so currentSettingsValues can't be final. // settings, so currentSettingsValues can't be final.

View File

@ -113,9 +113,7 @@ public final class DebugSettings extends PreferenceFragment
mServiceNeedsRestart = true; mServiceNeedsRestart = true;
} }
} else if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH) } else if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH)
|| key.equals(KeyboardSwitcher.PREF_KEYBOARD_LAYOUT)) { || key.equals(PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG)) {
mServiceNeedsRestart = true;
} else if (key.equals(PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG)) {
mServiceNeedsRestart = true; mServiceNeedsRestart = true;
} }
} }