aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorsatok <satok@google.com>2010-11-18 07:58:14 +0900
committersatok <satok@google.com>2010-11-18 08:35:26 +0900
commit3b776b78924610da2874f3ac555ed5d91a550843 (patch)
treeb73873394aa093bbaa0e7de9b65b88756c116c56 /java/src
parent0ed7191b4d1013a0b9d2fd1f26733dee7364871d (diff)
downloadlatinime-3b776b78924610da2874f3ac555ed5d91a550843.tar.gz
latinime-3b776b78924610da2874f3ac555ed5d91a550843.tar.xz
latinime-3b776b78924610da2874f3ac555ed5d91a550843.zip
Move functions in LatinKeyboard related to LanguageSwitcher to SubtypeSwitcher
Change-Id: I777db896bd0287931ce7c810b080ccee1121d34e
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/BaseKeyboardView.java2
-rw-r--r--java/src/com/android/inputmethod/latin/InputLanguageSelection.java12
-rw-r--r--java/src/com/android/inputmethod/latin/KeyboardSwitcher.java1
-rw-r--r--java/src/com/android/inputmethod/latin/LanguageSwitcher.java8
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboard.java49
-rw-r--r--java/src/com/android/inputmethod/latin/SubtypeSwitcher.java63
6 files changed, 70 insertions, 65 deletions
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
index 61978e4f0..519244165 100644
--- a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java
@@ -932,7 +932,7 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy {
|| tracker.isSpaceKey(keyIndex) || tracker.isSpaceKey(oldKeyIndex);
// If key changed and preview is on or the key is space (language switch is enabled)
if (oldKeyIndex != keyIndex && (mShowPreview || (hidePreviewOrShowSpaceKeyPreview
- && SubtypeSwitcher.getInstance().isLanguageSwitchEnabled()))) {
+ && SubtypeSwitcher.getInstance().needsToDisplayLanguage()))) {
if (keyIndex == NOT_A_KEY) {
mHandler.cancelPopupPreview();
mHandler.dismissPreview(mDelayAfterPreview);
diff --git a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
index e811a2cdd..4f4f7e3a7 100644
--- a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
@@ -74,7 +74,7 @@ public class InputLanguageSelection extends PreferenceActivity {
for (int i = 0; i < mAvailableLanguages.size(); i++) {
CheckBoxPreference pref = new CheckBoxPreference(this);
Locale locale = mAvailableLanguages.get(i).locale;
- pref.setTitle(LanguageSwitcher.toTitleCase(locale.getDisplayName(locale)));
+ pref.setTitle(SubtypeSwitcher.getLanguageName(locale));
boolean checked = isLocaleIn(locale, languageList);
pref.setChecked(checked);
if (hasDictionary(locale)) {
@@ -167,7 +167,7 @@ public class InputLanguageSelection extends PreferenceActivity {
if (finalSize == 0) {
preprocess[finalSize++] =
- new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName(l)), l);
+ new Loc(SubtypeSwitcher.getLanguageName(l), l);
} else {
// check previous entry:
// same lang and a country -> upgrade to full name and
@@ -175,15 +175,15 @@ public class InputLanguageSelection extends PreferenceActivity {
// diff lang -> insert ours with lang-only name
if (preprocess[finalSize-1].locale.getLanguage().equals(
language)) {
- preprocess[finalSize-1].label = LanguageSwitcher.toTitleCase(
- preprocess[finalSize-1].locale.getDisplayName());
+ preprocess[finalSize-1].label = SubtypeSwitcher.getLanguageName(
+ preprocess[finalSize-1].locale);
preprocess[finalSize++] =
- new Loc(LanguageSwitcher.toTitleCase(l.getDisplayName()), l);
+ new Loc(SubtypeSwitcher.getLanguageName(l), l);
} else {
String displayName;
if (s.equals("zz_ZZ")) {
} else {
- displayName = LanguageSwitcher.toTitleCase(l.getDisplayName(l));
+ displayName = SubtypeSwitcher.getLanguageName(l);
preprocess[finalSize++] = new Loc(displayName, l);
}
}
diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index bc0a40d97..3f6b6ca33 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -297,7 +297,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
keyboard.setVoiceMode(
hasVoiceKey(xml == R.xml.kbd_symbols || xml == R.xml.kbd_symbols_black),
mVoiceButtonEnabled);
- keyboard.setLanguageSwitcher(mSubtypeSwitcher.getLanguageSwitcher());
keyboard.setImeOptions(res, id.mMode, id.mImeOptions);
keyboard.setColorOfSymbolIcons(isBlackSym(id.mColorScheme));
diff --git a/java/src/com/android/inputmethod/latin/LanguageSwitcher.java b/java/src/com/android/inputmethod/latin/LanguageSwitcher.java
index cc1a295a5..c2805f506 100644
--- a/java/src/com/android/inputmethod/latin/LanguageSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/LanguageSwitcher.java
@@ -192,12 +192,4 @@ public class LanguageSwitcher {
editor.putString(LatinIME.PREF_INPUT_LANGUAGE, getInputLanguage());
SharedPreferencesCompat.apply(editor);
}
-
- static String toTitleCase(String s) {
- if (s.length() == 0) {
- return s;
- }
-
- return Character.toUpperCase(s.charAt(0)) + s.substring(1);
- }
}
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
index 54d8c47f8..9473eaf84 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
@@ -66,8 +66,6 @@ public class LatinKeyboard extends BaseKeyboard {
private int mSpaceKeyIndex = -1;
private int mSpaceDragStartX;
private int mSpaceDragLastDiff;
- private Locale mLocale;
- private LanguageSwitcher mLanguageSwitcher;
private final Resources mRes;
private final Context mContext;
private int mMode; // TODO: remove this and use the corresponding mode in the parent class
@@ -389,7 +387,7 @@ public class LatinKeyboard extends BaseKeyboard {
private void updateSpaceBarForLocale(boolean isAutoCompletion, boolean isBlack) {
final Resources res = mRes;
// If application locales are explicitly selected.
- if (mLocale != null) {
+ if (SubtypeSwitcher.getInstance().needsToDisplayLanguage()) {
mSpaceKey.icon = new BitmapDrawable(res,
drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion, isBlack));
} else {
@@ -421,7 +419,7 @@ public class LatinKeyboard extends BaseKeyboard {
final Rect bounds = new Rect();
// Estimate appropriate language name text size to fit in maxTextWidth.
- String language = LanguageSwitcher.toTitleCase(locale.getDisplayLanguage(locale));
+ String language = SubtypeSwitcher.getLanguageName(locale);
int textWidth = getTextWidth(paint, language, origTextSize, bounds);
// Assuming text width and text size are proportional to each other.
float textSize = origTextSize * Math.min(maxTextWidth / textWidth, 1.0f);
@@ -437,7 +435,7 @@ public class LatinKeyboard extends BaseKeyboard {
textSize = origTextSize;
}
if (useShortName) {
- language = LanguageSwitcher.toTitleCase(locale.getLanguage());
+ language = SubtypeSwitcher.getShortLanguageName(locale);
textWidth = getTextWidth(paint, language, origTextSize, bounds);
textSize = origTextSize * Math.min(maxTextWidth / textWidth, 1.0f);
}
@@ -462,15 +460,16 @@ public class LatinKeyboard extends BaseKeyboard {
final Resources res = mRes;
canvas.drawColor(res.getColor(R.color.latinkeyboard_transparent), PorterDuff.Mode.CLEAR);
+ SubtypeSwitcher subtypeSwitcher = SubtypeSwitcher.getInstance();
// If application locales are explicitly selected.
- if (mLocale != null) {
+ if (subtypeSwitcher.needsToDisplayLanguage()) {
final Paint paint = new Paint();
paint.setAlpha(opacity);
paint.setAntiAlias(true);
paint.setTextAlign(Align.CENTER);
final boolean allowVariableTextSize = true;
- final String language = layoutSpaceBar(paint, mLanguageSwitcher.getInputLocale(),
+ final String language = layoutSpaceBar(paint, subtypeSwitcher.getInputLocale(),
mButtonArrowLeftIcon, mButtonArrowRightIcon, width, height,
getTextSizeFromTheme(android.R.style.TextAppearance_Small, 14),
allowVariableTextSize);
@@ -487,7 +486,8 @@ public class LatinKeyboard extends BaseKeyboard {
canvas.drawText(language, width / 2, baseline - descent, paint);
// Put arrows that are already layed out on either side of the text
- if (mLanguageSwitcher.getLocaleCount() > 1) {
+ if (SubtypeSwitcher.USE_SPACEBAR_LANGUAGE_SWITCHER
+ && subtypeSwitcher.getEnabledKeyboardLocaleCount() > 1) {
mButtonArrowLeftIcon.draw(canvas);
mButtonArrowRightIcon.draw(canvas);
}
@@ -531,28 +531,13 @@ public class LatinKeyboard extends BaseKeyboard {
}
public int getLanguageChangeDirection() {
- if (mSpaceKey == null || mLanguageSwitcher.getLocaleCount() < 2
- || Math.abs(mSpaceDragLastDiff) < mSpaceKey.width * SPACEBAR_DRAG_THRESHOLD ) {
+ if (mSpaceKey == null || SubtypeSwitcher.getInstance().getEnabledKeyboardLocaleCount() <= 1
+ || Math.abs(mSpaceDragLastDiff) < mSpaceKey.width * SPACEBAR_DRAG_THRESHOLD) {
return 0; // No change
}
return mSpaceDragLastDiff > 0 ? 1 : -1;
}
- public void setLanguageSwitcher(LanguageSwitcher switcher) {
- mLanguageSwitcher = switcher;
- Locale locale = mLanguageSwitcher.getLocaleCount() > 0
- ? mLanguageSwitcher.getInputLocale()
- : null;
- // If the language count is 1 and is the same as the system language, don't show it.
- if (locale != null
- && mLanguageSwitcher.getLocaleCount() == 1
- && mLanguageSwitcher.getSystemLocale().getLanguage()
- .equalsIgnoreCase(locale.getLanguage())) {
- locale = null;
- }
- mLocale = locale;
- }
-
boolean isCurrentlyInSpace() {
return mCurrentlyInSpace;
}
@@ -586,7 +571,8 @@ public class LatinKeyboard extends BaseKeyboard {
if (code == KEYCODE_DELETE) x -= key.width / 6;
} else if (code == LatinIME.KEYCODE_SPACE) {
y += LatinKeyboard.sSpacebarVerticalCorrection;
- if (mLanguageSwitcher.getLocaleCount() > 1) {
+ if (SubtypeSwitcher.USE_SPACEBAR_LANGUAGE_SWITCHER
+ && SubtypeSwitcher.getInstance().getEnabledKeyboardLocaleCount() > 1) {
if (mCurrentlyInSpace) {
int diff = x - mSpaceDragStartX;
if (Math.abs(diff - mSpaceDragLastDiff) > 0) {
@@ -851,9 +837,6 @@ public class LatinKeyboard extends BaseKeyboard {
invalidateSelf();
}
- private String getLanguageName(Locale locale) {
- return LanguageSwitcher.toTitleCase(locale.getDisplayLanguage(locale));
- }
@Override
public void draw(Canvas canvas) {
@@ -867,10 +850,10 @@ public class LatinKeyboard extends BaseKeyboard {
final Drawable rArrow = mRightDrawable;
canvas.clipRect(0, 0, width, height);
if (mCurrentLanguage == null) {
- final LanguageSwitcher languageSwitcher = mLanguageSwitcher;
- mCurrentLanguage = getLanguageName(languageSwitcher.getInputLocale());
- mNextLanguage = getLanguageName(languageSwitcher.getNextInputLocale());
- mPrevLanguage = getLanguageName(languageSwitcher.getPrevInputLocale());
+ SubtypeSwitcher subtypeSwitcher = SubtypeSwitcher.getInstance();
+ mCurrentLanguage = subtypeSwitcher.getInputLanguageName();
+ mNextLanguage = subtypeSwitcher.getNextInputLanguageName();
+ mPrevLanguage = subtypeSwitcher.getPreviousInputLanguageName();
}
// Draw language text with shadow
final float baseline = mHeight * SPACEBAR_LANGUAGE_BASELINE - paint.descent();
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index a295957a1..11b4dc7f4 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -31,7 +31,9 @@ import java.util.List;
import java.util.Locale;
public class SubtypeSwitcher {
- private static final boolean USE_LEGACY_LANGUAGE_SWITCHER = true;
+ // This flag indicates if we support language switching by swipe on space bar.
+ // We may or may not draw the current language on space bar regardless of this flag.
+ public static final boolean USE_SPACEBAR_LANGUAGE_SWITCHER = true;
private static final String TAG = "SubtypeSwitcher";
private static final SubtypeSwitcher sInstance = new SubtypeSwitcher();
private InputMethodService mService;
@@ -46,7 +48,7 @@ public class SubtypeSwitcher {
sInstance.mService = service;
sInstance.mResources = service.getResources();
sInstance.mSystemLocale = sInstance.mResources.getConfiguration().locale;
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
sInstance.initLanguageSwitcher(service);
}
}
@@ -61,22 +63,23 @@ public class SubtypeSwitcher {
// Language Switching functions //
//////////////////////////////////
- private int getEnabledKeyboardLocaleCount() {
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ public int getEnabledKeyboardLocaleCount() {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
return mLanguageSwitcher.getLocaleCount();
}
// TODO: Implement for no legacy mode
return 0;
}
- public boolean isLanguageSwitchEnabled() {
+ // TODO: Cache the value
+ public boolean needsToDisplayLanguage() {
// TODO: Takes care of two-char locale such as "en" in addition to "en_US"
return !(getEnabledKeyboardLocaleCount() == 1 && getSystemLocale().getLanguage(
).equalsIgnoreCase(getInputLocale().getLanguage()));
}
public Locale getInputLocale() {
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
return mLanguageSwitcher.getInputLocale();
}
// TODO: Implement for no legacy mode
@@ -85,7 +88,7 @@ public class SubtypeSwitcher {
public String getInputLanguage() {
String inputLanguage = null;
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
inputLanguage = mLanguageSwitcher.getInputLanguage();
}
// Should return system locale if there is no Language available.
@@ -96,7 +99,7 @@ public class SubtypeSwitcher {
}
public String[] getEnabledLanguages() {
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
return mLanguageSwitcher.getEnabledLanguages();
}
// TODO: Implement for no legacy mode
@@ -107,6 +110,7 @@ public class SubtypeSwitcher {
return mSystemLocale;
}
+ // TODO: Cache the value for faster processing.
public boolean isSystemLocaleSameAsInputLocale() {
// TODO: Takes care of two-char locale such as "en" in addition to "en_US"
return getSystemLocale().getLanguage().equalsIgnoreCase(
@@ -114,7 +118,7 @@ public class SubtypeSwitcher {
}
public void onConfigurationChanged(Configuration conf) {
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
// If the system locale changes and is different from the saved
// locale (mSystemLocale), then reload the input locale list from the
// latin ime settings (shared prefs) and reset the input locale
@@ -132,7 +136,7 @@ public class SubtypeSwitcher {
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
mLanguageSwitcher.loadLocales(sharedPreferences);
return;
}
@@ -151,6 +155,38 @@ public class SubtypeSwitcher {
////////////////////////////////////////////
private LanguageSwitcher mLanguageSwitcher;
+ public static String getLanguageName(Locale locale) {
+ return toTitleCase(locale.getDisplayLanguage(locale));
+ }
+
+ public static String getShortLanguageName(Locale locale) {
+ return toTitleCase(locale.getLanguage());
+ }
+
+ private static String toTitleCase(String s) {
+ if (s.length() == 0) {
+ return s;
+ }
+ return Character.toUpperCase(s.charAt(0)) + s.substring(1);
+ }
+
+ public String getInputLanguageName() {
+ return getLanguageName(getInputLocale());
+ }
+
+ public String getNextInputLanguageName() {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
+ return getLanguageName(mLanguageSwitcher.getNextInputLocale());
+ }
+ return "";
+ }
+
+ public String getPreviousInputLanguageName() {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
+ return getLanguageName(mLanguageSwitcher.getPrevInputLocale());
+ }
+ return "";
+ }
// TODO: This can be an array of String
// A list of locales which are supported by default for voice input, unless we get a
@@ -183,7 +219,7 @@ public class SubtypeSwitcher {
}
public void loadSettings(SharedPreferences prefs) {
- if (USE_LEGACY_LANGUAGE_SWITCHER) {
+ if (USE_SPACEBAR_LANGUAGE_SWITCHER) {
mLanguageSwitcher.loadLocales(prefs);
}
}
@@ -208,9 +244,4 @@ public class SubtypeSwitcher {
mLanguageSwitcher.loadLocales(prefs);
mLanguageSwitcher.setSystemLocale(conf.locale);
}
-
- // TODO: remove this function when the refactor for LanguageSwitcher will be finished
- public LanguageSwitcher getLanguageSwitcher() {
- return mLanguageSwitcher;
- }
} \ No newline at end of file