am 21eafd79: Use KeyboardTheme id insteand of index
* commit '21eafd7910182a31372fb92895f057cff28a8480': Use KeyboardTheme id insteand of indexmain
commit
ade507ba37
|
@ -24,8 +24,8 @@
|
||||||
at input history to suggest a hopefully helpful suggestions for the next word? -->
|
at input history to suggest a hopefully helpful suggestions for the next word? -->
|
||||||
<bool name="config_default_next_word_prediction">true</bool>
|
<bool name="config_default_next_word_prediction">true</bool>
|
||||||
|
|
||||||
<!-- This configuration is an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
|
<!-- This configuration must be aligned with {@link KeyboardTheme#DEFAULT_THEME_ID}. -->
|
||||||
<string name="config_default_keyboard_theme_index" translatable="false">2</string>
|
<string name="config_default_keyboard_theme_id" translatable="false">2</string>
|
||||||
|
|
||||||
<integer name="config_delay_update_shift_state">100</integer>
|
<integer name="config_delay_update_shift_state">100</integer>
|
||||||
<integer name="config_double_space_period_timeout">1100</integer>
|
<integer name="config_double_space_period_timeout">1100</integer>
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
<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[]}. -->
|
<!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. -->
|
||||||
<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>
|
||||||
|
@ -66,12 +66,12 @@
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<!-- For keyboard color scheme option dialog. -->
|
<!-- For keyboard color scheme option dialog. -->
|
||||||
<string-array name="keyboard_color_schemes">
|
<string-array name="keyboard_theme_names">
|
||||||
<item>@string/keyboard_color_scheme_white</item>
|
<item>@string/keyboard_color_scheme_white</item>
|
||||||
<item>@string/keyboard_color_scheme_blue</item>
|
<item>@string/keyboard_color_scheme_blue</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
|
<!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. -->
|
||||||
<string-array name="keyboard_color_schemes_values">
|
<string-array name="keyboard_theme_ids">
|
||||||
<item>2</item>
|
<item>2</item>
|
||||||
<item>0</item>
|
<item>0</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
|
@ -168,9 +168,9 @@
|
||||||
android:key="pref_keyboard_layout_20110916"
|
android:key="pref_keyboard_layout_20110916"
|
||||||
android:title="@string/keyboard_color_scheme"
|
android:title="@string/keyboard_color_scheme"
|
||||||
android:persistent="true"
|
android:persistent="true"
|
||||||
android:entryValues="@array/keyboard_color_schemes_values"
|
android:entryValues="@array/keyboard_theme_ids"
|
||||||
android:entries="@array/keyboard_color_schemes"
|
android:entries="@array/keyboard_theme_names"
|
||||||
android:defaultValue="@string/config_default_keyboard_theme_index" />
|
android:defaultValue="@string/config_default_keyboard_theme_id" />
|
||||||
<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"
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
android:persistent="true"
|
android:persistent="true"
|
||||||
android:entryValues="@array/keyboard_layout_modes_values"
|
android:entryValues="@array/keyboard_layout_modes_values"
|
||||||
android:entries="@array/keyboard_layout_modes"
|
android:entries="@array/keyboard_layout_modes"
|
||||||
android:defaultValue="@string/config_default_keyboard_theme_index" />
|
android:defaultValue="@string/config_default_keyboard_theme_id" />
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="debug_mode"
|
android:key="debug_mode"
|
||||||
android:title="@string/prefs_debug_mode"
|
android:title="@string/prefs_debug_mode"
|
||||||
|
|
|
@ -38,7 +38,6 @@ import com.android.inputmethod.latin.R;
|
||||||
import com.android.inputmethod.latin.RichInputMethodManager;
|
import com.android.inputmethod.latin.RichInputMethodManager;
|
||||||
import com.android.inputmethod.latin.SubtypeSwitcher;
|
import com.android.inputmethod.latin.SubtypeSwitcher;
|
||||||
import com.android.inputmethod.latin.WordComposer;
|
import com.android.inputmethod.latin.WordComposer;
|
||||||
import com.android.inputmethod.latin.settings.Settings;
|
|
||||||
import com.android.inputmethod.latin.settings.SettingsValues;
|
import com.android.inputmethod.latin.settings.SettingsValues;
|
||||||
import com.android.inputmethod.latin.utils.ResourceUtils;
|
import com.android.inputmethod.latin.utils.ResourceUtils;
|
||||||
|
|
||||||
|
@ -66,8 +65,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
||||||
* what user actually typed. */
|
* what user actually typed. */
|
||||||
private boolean mIsAutoCorrectionActive;
|
private boolean mIsAutoCorrectionActive;
|
||||||
|
|
||||||
private KeyboardTheme mKeyboardTheme =
|
private KeyboardTheme mKeyboardTheme = KeyboardTheme.getDefaultKeyboardTheme();
|
||||||
KeyboardTheme.KEYBOARD_THEMES[KeyboardTheme.DEFAULT_THEME_INDEX];
|
|
||||||
private Context mThemeContext;
|
private Context mThemeContext;
|
||||||
|
|
||||||
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
|
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
|
||||||
|
@ -96,25 +94,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
||||||
|
|
||||||
public void updateKeyboardTheme() {
|
public void updateKeyboardTheme() {
|
||||||
final boolean themeUpdated = updateKeyboardThemeAndContextThemeWrapper(
|
final boolean themeUpdated = updateKeyboardThemeAndContextThemeWrapper(
|
||||||
mLatinIME, getKeyboardTheme(mLatinIME, mPrefs));
|
mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs));
|
||||||
if (themeUpdated && mKeyboardView != null) {
|
if (themeUpdated && mKeyboardView != null) {
|
||||||
mLatinIME.setInputView(onCreateInputView(mIsHardwareAcceleratedDrawingEnabled));
|
mLatinIME.setInputView(onCreateInputView(mIsHardwareAcceleratedDrawingEnabled));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static KeyboardTheme getKeyboardTheme(final Context context,
|
|
||||||
final SharedPreferences prefs) {
|
|
||||||
final Resources res = context.getResources();
|
|
||||||
final int index = Settings.readKeyboardThemeIndex(prefs, res);
|
|
||||||
if (index >= 0 && index < KeyboardTheme.KEYBOARD_THEMES.length) {
|
|
||||||
return KeyboardTheme.KEYBOARD_THEMES[index];
|
|
||||||
}
|
|
||||||
final int defaultThemeIndex = Settings.resetAndGetDefaultKeyboardThemeIndex(prefs, res);
|
|
||||||
Log.w(TAG, "Illegal keyboard theme in preference: " + index + ", default to "
|
|
||||||
+ defaultThemeIndex);
|
|
||||||
return KeyboardTheme.KEYBOARD_THEMES[defaultThemeIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
|
private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
|
||||||
final KeyboardTheme keyboardTheme) {
|
final KeyboardTheme keyboardTheme) {
|
||||||
if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) {
|
if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) {
|
||||||
|
|
|
@ -16,18 +16,24 @@
|
||||||
|
|
||||||
package com.android.inputmethod.keyboard;
|
package com.android.inputmethod.keyboard;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
import com.android.inputmethod.latin.settings.Settings;
|
||||||
|
|
||||||
public final class KeyboardTheme {
|
public final class KeyboardTheme {
|
||||||
public static final int THEME_INDEX_ICS = 0;
|
private static final String TAG = KeyboardTheme.class.getSimpleName();
|
||||||
public static final int THEME_INDEX_GB = 1;
|
|
||||||
public static final int THEME_INDEX_KLP = 2;
|
|
||||||
public static final int DEFAULT_THEME_INDEX = THEME_INDEX_KLP;
|
|
||||||
|
|
||||||
public static final KeyboardTheme[] KEYBOARD_THEMES = {
|
public static final int THEME_ID_ICS = 0;
|
||||||
new KeyboardTheme(THEME_INDEX_ICS, R.style.KeyboardTheme_ICS),
|
public static final int THEME_ID_GB = 1;
|
||||||
new KeyboardTheme(THEME_INDEX_GB, R.style.KeyboardTheme_GB),
|
public static final int THEME_ID_KLP = 2;
|
||||||
new KeyboardTheme(THEME_INDEX_KLP, R.style.KeyboardTheme_KLP),
|
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),
|
||||||
|
new KeyboardTheme(THEME_ID_GB, R.style.KeyboardTheme_GB),
|
||||||
|
new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP),
|
||||||
};
|
};
|
||||||
|
|
||||||
public final int mThemeId;
|
public final int mThemeId;
|
||||||
|
@ -39,4 +45,39 @@ public final class KeyboardTheme {
|
||||||
mThemeId = themeId;
|
mThemeId = themeId;
|
||||||
mStyleId = styleId;
|
mStyleId = styleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static KeyboardTheme getDefaultKeyboardTheme() {
|
||||||
|
return searchKeyboardTheme(DEFAULT_THEME_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) {
|
||||||
|
final String themeIdString = prefs.getString(Settings.PREF_KEYBOARD_LAYOUT, null);
|
||||||
|
if (themeIdString == null) {
|
||||||
|
return getDefaultKeyboardTheme();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
final int themeId = Integer.parseInt(themeIdString);
|
||||||
|
final KeyboardTheme theme = searchKeyboardTheme(themeId);
|
||||||
|
if (theme != null) {
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
Log.w(TAG, "Unknown keyboard theme in preference: " + themeIdString);
|
||||||
|
} catch (final NumberFormatException e) {
|
||||||
|
Log.w(TAG, "Illegal keyboard theme in preference: " + themeIdString);
|
||||||
|
}
|
||||||
|
// Reset preference to default value.
|
||||||
|
final String defaultThemeIdString = Integer.toString(DEFAULT_THEME_ID);
|
||||||
|
prefs.edit().putString(Settings.PREF_KEYBOARD_LAYOUT, defaultThemeIdString).apply();
|
||||||
|
return getDefaultKeyboardTheme();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ import android.content.res.Resources;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.inputmethod.keyboard.KeyboardTheme;
|
|
||||||
import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
|
import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
|
||||||
import com.android.inputmethod.latin.InputAttributes;
|
import com.android.inputmethod.latin.InputAttributes;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
@ -270,42 +269,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
|
||||||
return prefs.getBoolean(PREF_SHOW_LANGUAGE_SWITCH_KEY, true);
|
return prefs.getBoolean(PREF_SHOW_LANGUAGE_SWITCH_KEY, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int readKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) {
|
|
||||||
final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res);
|
|
||||||
final String themeIndexString = prefs.getString(PREF_KEYBOARD_LAYOUT, null);
|
|
||||||
if (themeIndexString == null) {
|
|
||||||
return defaultThemeIndex;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return Integer.parseInt(themeIndexString);
|
|
||||||
} catch (final NumberFormatException e) {
|
|
||||||
// Format error, returns default keyboard theme index.
|
|
||||||
Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndexString + ", default to "
|
|
||||||
+ defaultThemeIndex, e);
|
|
||||||
}
|
|
||||||
return defaultThemeIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int readDefaultKeyboardThemeIndex(final Resources res) {
|
|
||||||
final String defaultThemeIndexString = res.getString(
|
|
||||||
R.string.config_default_keyboard_theme_index);
|
|
||||||
try {
|
|
||||||
return Integer.parseInt(defaultThemeIndexString);
|
|
||||||
} catch (final NumberFormatException e) {
|
|
||||||
final int defaultThemeIndex = KeyboardTheme.DEFAULT_THEME_INDEX;
|
|
||||||
Log.e(TAG, "Corrupted default keyoard theme in resource: " + defaultThemeIndexString
|
|
||||||
+ ", default to " + defaultThemeIndex, e);
|
|
||||||
return defaultThemeIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int resetAndGetDefaultKeyboardThemeIndex(final SharedPreferences prefs,
|
|
||||||
final Resources res) {
|
|
||||||
final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res);
|
|
||||||
prefs.edit().putString(PREF_KEYBOARD_LAYOUT, Integer.toString(defaultThemeIndex)).apply();
|
|
||||||
return defaultThemeIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String readPrefAdditionalSubtypes(final SharedPreferences prefs,
|
public static String readPrefAdditionalSubtypes(final SharedPreferences prefs,
|
||||||
final Resources res) {
|
final Resources res) {
|
||||||
final String predefinedPrefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(
|
final String predefinedPrefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(
|
||||||
|
|
|
@ -41,7 +41,7 @@ import java.util.Locale;
|
||||||
@SmallTest
|
@SmallTest
|
||||||
public class KeyboardLayoutSetTestsBase extends AndroidTestCase {
|
public class KeyboardLayoutSetTestsBase extends AndroidTestCase {
|
||||||
private static final KeyboardTheme DEFAULT_KEYBOARD_THEME =
|
private static final KeyboardTheme DEFAULT_KEYBOARD_THEME =
|
||||||
KeyboardTheme.KEYBOARD_THEMES[KeyboardTheme.DEFAULT_THEME_INDEX];
|
KeyboardTheme.getDefaultKeyboardTheme();
|
||||||
|
|
||||||
// All input method subtypes of LatinIME.
|
// All input method subtypes of LatinIME.
|
||||||
private final ArrayList<InputMethodSubtype> mAllSubtypesList = CollectionUtils.newArrayList();
|
private final ArrayList<InputMethodSubtype> mAllSubtypesList = CollectionUtils.newArrayList();
|
||||||
|
|
Loading…
Reference in New Issue