Add keyboard color switch option

Bug: 11622614
Change-Id: I25aa1ff7376fe72fd94ab2cb7190c61d7a98a1af
main
Tadashi G. Takaoka 2013-11-11 20:39:03 +09:00
parent 1c95c8ba3b
commit b4c7a10840
7 changed files with 47 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

@ -452,6 +452,13 @@ mobile devices. [CHAR LIMIT=25] -->
<!-- Description for Emoji keyboard subtype [CHAR LIMIT=25] --> <!-- Description for Emoji keyboard subtype [CHAR LIMIT=25] -->
<string name="subtype_emoji">Emoji</string> <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]--> <!-- 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> <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] --> <!-- Title of the option menu to add a new style entry in the preference settings [CHAR LIMIT=16] -->

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

@ -809,6 +809,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;
} }
} }