summaryrefslogtreecommitdiff
authorTing Li <ting.li@amlogic.com>2014-08-27 06:23:08 (GMT)
committer tao.dong <tao.dong@amlogic.com>2014-09-11 10:20:11 (GMT)
commita54ab33a9bceabd938ae517e21c396de2ca0ec63 (patch)
tree57006b4062a9b7aa6c405e9f8dd802e163374c88
parent54373d75bbd9ecd0923cd5e37410e692a5e62413 (diff)
downloadRemoteIME-a54ab33a9bceabd938ae517e21c396de2ca0ec63.zip
RemoteIME-a54ab33a9bceabd938ae517e21c396de2ca0ec63.tar.gz
RemoteIME-a54ab33a9bceabd938ae517e21c396de2ca0ec63.tar.bz2
pd#96334 fix bug of language switch and lable cannot switch
Change-Id: I512afbf5f2643d42fbc1226a0ef3d3e788f51a44
Diffstat
-rwxr-xr-xres/values-zh-rCN/strings.xml2
-rwxr-xr-xres/values/strings.xml2
-rwxr-xr-xres/xml/skb_sym1.xml4
-rwxr-xr-xres/xml/skb_sym2.xml4
-rwxr-xr-xsrc/com/amlogic/inputmethod/remote/RemoteIME.java4
-rwxr-xr-xsrc/com/amlogic/inputmethod/remote/SkbContainer.java23
-rwxr-xr-xsrc/com/amlogic/inputmethod/remote/SkbPool.java22
-rwxr-xr-xsrc/com/amlogic/inputmethod/remote/XmlKeyboardLoader.java4
8 files changed, 39 insertions, 26 deletions
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 1ed878f..206ad15 100755
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -64,4 +64,6 @@
<string name="toggle_enter_done_label">完成</string>
<string name="toggle_en_label">英 文</string>
<string name="toggle_cn_label">中 文</string>
+ <string name="sym_en_label">英 符</string>
+ <string name="sym_cn_label">中 符</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0e68da4..65ce279 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -64,4 +64,6 @@
<string name="toggle_enter_done_label">Done</string>
<string name="toggle_en_label">English</string>
<string name="toggle_cn_label">Chinese</string>
+ <string name="sym_en_label">English Symbol</string>
+ <string name="sym_cn_label">Chinese Symbol</string>
</resources>
diff --git a/res/xml/skb_sym1.xml b/res/xml/skb_sym1.xml
index 918fd33..2f56162 100755
--- a/res/xml/skb_sym1.xml
+++ b/res/xml/skb_sym1.xml
@@ -70,8 +70,8 @@
</row>
<row width="14.696%p" key_type="1">
- <key code="-2" label="中 符" width="20%p" repeat="true">
- <toggle_state state_id="@string/toggle_en_sym1" label="英 符" code="-2"/>
+ <key code="-2" label="@string/sym_cn_label" width="20%p" repeat="true">
+ <toggle_state state_id="@string/toggle_en_sym1" label="@string/sym_en_label" code="-2"/>
</key>
<key code="-3" key_type="3" label="\?123"/>
<key code="62" key_type="5" width="30.608%p"/>
diff --git a/res/xml/skb_sym2.xml b/res/xml/skb_sym2.xml
index a55f91e..e074320 100755
--- a/res/xml/skb_sym2.xml
+++ b/res/xml/skb_sym2.xml
@@ -54,8 +54,8 @@
</row>
<row width="14.696%p" key_type="1">
- <key code="-2" label="中 符" width="20%p" repeat="true">
- <toggle_state state_id="@string/toggle_en_sym2" label="英 符" code="-2"/>
+ <key code="-2" label="@string/sym_en_label" width="20%p" repeat="true">
+ <toggle_state state_id="@string/toggle_en_sym2" label="@string/sym_cn_label" code="-2"/>
</key>
<key code="-3" key_type="3" label="\?123"/>
<key code="62" key_type="5" width="30.608%p"/>
diff --git a/src/com/amlogic/inputmethod/remote/RemoteIME.java b/src/com/amlogic/inputmethod/remote/RemoteIME.java
index afaad7e..4253619 100755
--- a/src/com/amlogic/inputmethod/remote/RemoteIME.java
+++ b/src/com/amlogic/inputmethod/remote/RemoteIME.java
@@ -1106,7 +1106,7 @@ public class RemoteIME extends InputMethodService {
if (sKey.isUserDefKey()) {
updateIcon(mInputModeSwitcher.switchModeForUserKey(keyCode));
resetToIdleState(false);
- mSkbContainer.updateInputMode();
+ mSkbContainer.updateInputMode(true);
} else {
if (sKey.isKeyCodeKey()) {
KeyEvent eDown = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
@@ -1254,7 +1254,7 @@ public class RemoteIME extends InputMethodService {
}
updateIcon(mInputModeSwitcher.requestInputWithSkb(editorInfo));
resetToIdleState(false);
- mSkbContainer.updateInputMode();
+ mSkbContainer.updateInputMode(true);
setCandidatesViewShown(false);
mSkbContainer.requestFocus();
mSkbContainer.clearKeyFocus();
diff --git a/src/com/amlogic/inputmethod/remote/SkbContainer.java b/src/com/amlogic/inputmethod/remote/SkbContainer.java
index f0a8adf..d4b4b0c 100755
--- a/src/com/amlogic/inputmethod/remote/SkbContainer.java
+++ b/src/com/amlogic/inputmethod/remote/SkbContainer.java
@@ -265,11 +265,16 @@ public class SkbContainer extends RelativeLayout implements OnTouchListener {
mMajorView.invalidate();
}
- public void updateInputMode() {
+ public void updateInputMode(){
+ updateInputMode(false);
+ }
+
+ /*@hide*/
+ public void updateInputMode(boolean force) {
int skbLayout = mInputModeSwitcher.getSkbLayout();
- if (mSkbLayout != skbLayout) {
+ if (mSkbLayout != skbLayout||force) {
mSkbLayout = skbLayout;
- updateSkbLayout();
+ updateSkbLayout(force);
}
mLastCandidatesShowing = false;
@@ -283,7 +288,7 @@ public class SkbContainer extends RelativeLayout implements OnTouchListener {
return;
}
- private void updateSkbLayout() {
+ private void updateSkbLayout(boolean force) {
int screenWidth = mEnvironment.getScreenWidth();
int keyHeight = mEnvironment.getKeyHeight();
int skbHeight = mEnvironment.getSkbHeight();
@@ -300,27 +305,27 @@ public class SkbContainer extends RelativeLayout implements OnTouchListener {
switch (mSkbLayout) {
case R.xml.skb_qwerty:
majorSkb = skbPool.getSoftKeyboard(R.xml.skb_qwerty,
- R.xml.skb_qwerty, screenWidth, skbHeight, mContext);
+ R.xml.skb_qwerty, screenWidth, skbHeight, mContext, force);
break;
case R.xml.skb_sym1:
majorSkb = skbPool.getSoftKeyboard(R.xml.skb_sym1, R.xml.skb_sym1,
- screenWidth, skbHeight, mContext);
+ screenWidth, skbHeight, mContext, force);
break;
case R.xml.skb_sym2:
majorSkb = skbPool.getSoftKeyboard(R.xml.skb_sym2, R.xml.skb_sym2,
- screenWidth, skbHeight, mContext);
+ screenWidth, skbHeight, mContext, force);
break;
case R.xml.skb_smiley:
majorSkb = skbPool.getSoftKeyboard(R.xml.skb_smiley,
- R.xml.skb_smiley, screenWidth, skbHeight, mContext);
+ R.xml.skb_smiley, screenWidth, skbHeight, mContext, force);
break;
case R.xml.skb_phone:
majorSkb = skbPool.getSoftKeyboard(R.xml.skb_phone,
- R.xml.skb_phone, screenWidth, skbHeight, mContext);
+ R.xml.skb_phone, screenWidth, skbHeight, mContext, force);
break;
default:
}
diff --git a/src/com/amlogic/inputmethod/remote/SkbPool.java b/src/com/amlogic/inputmethod/remote/SkbPool.java
index 6631521..95cea6e 100755
--- a/src/com/amlogic/inputmethod/remote/SkbPool.java
+++ b/src/com/amlogic/inputmethod/remote/SkbPool.java
@@ -41,15 +41,14 @@ public class SkbPool {
mSoftKeyboards.clear();
}
- public SkbTemplate getSkbTemplate(int skbTemplateId, Context context) {
- for (int i = 0; i < mSkbTemplates.size(); i++) {
+ public SkbTemplate getSkbTemplate(int skbTemplateId, Context context, boolean force) {
+ for (int i = 0; i < mSkbTemplates.size()&&(!force); i++) {
SkbTemplate t = mSkbTemplates.elementAt(i);
- if (t.getSkbTemplateId() == skbTemplateId) {
+ if (t.getSkbTemplateId() == skbTemplateId) {
return t;
}
}
-
- if (null != context) {
+ if (null != context||(force && (null != context))) {
XmlKeyboardLoader xkbl = new XmlKeyboardLoader(context);
SkbTemplate t = xkbl.loadSkbTemplate(skbTemplateId);
if (null != t) {
@@ -60,11 +59,16 @@ public class SkbPool {
return null;
}
+ public SoftKeyboard getSoftKeyboard(int skbCacheId, int skbXmlId,
+ int skbWidth, int skbHeight, Context context) {
+ return getSoftKeyboard( skbCacheId, skbXmlId, skbWidth, skbHeight, context, false);
+ }
+ /*@hide*/
// Try to find the keyboard in the pool with the cache id. If there is no
// keyboard found, try to load it with the given xml id.
public SoftKeyboard getSoftKeyboard(int skbCacheId, int skbXmlId,
- int skbWidth, int skbHeight, Context context) {
- for (int i = 0; i < mSoftKeyboards.size(); i++) {
+ int skbWidth, int skbHeight, Context context,boolean force) {
+ for (int i = 0; i < mSoftKeyboards.size()&&(!force); i++) {
SoftKeyboard skb = mSoftKeyboards.elementAt(i);
if (skb.getCacheId() == skbCacheId && skb.getSkbXmlId() == skbXmlId) {
skb.setSkbCoreSize(skbWidth, skbHeight);
@@ -72,9 +76,9 @@ public class SkbPool {
return skb;
}
}
- if (null != context) {
+ if (null != context ||((null != context) && force)) {
XmlKeyboardLoader xkbl = new XmlKeyboardLoader(context);
- SoftKeyboard skb = xkbl.loadKeyboard(skbXmlId, skbWidth, skbHeight);
+ SoftKeyboard skb = xkbl.loadKeyboard(skbXmlId, skbWidth, skbHeight, force);
if (skb != null) {
if (skb.getCacheFlag()) {
skb.setCacheId(skbCacheId);
diff --git a/src/com/amlogic/inputmethod/remote/XmlKeyboardLoader.java b/src/com/amlogic/inputmethod/remote/XmlKeyboardLoader.java
index c59f5a7..ab89efe 100755
--- a/src/com/amlogic/inputmethod/remote/XmlKeyboardLoader.java
+++ b/src/com/amlogic/inputmethod/remote/XmlKeyboardLoader.java
@@ -426,7 +426,7 @@ public class XmlKeyboardLoader {
return null;
}
- public SoftKeyboard loadKeyboard(int resourceId, int skbWidth, int skbHeight) {
+ public SoftKeyboard loadKeyboard(int resourceId, int skbWidth, int skbHeight, boolean force) {
if (null == mContext) return null;
Resources r = mResources;
SkbPool skbPool = SkbPool.getInstance();
@@ -466,7 +466,7 @@ public class XmlKeyboardLoader {
// 1.2 Try to get the template from pool. If it is not
// in, the pool will try to load it.
mSkbTemplate = skbPool.getSkbTemplate(skbTemplateId,
- mContext);
+ mContext, force);
if (null == mSkbTemplate
|| !attrSkb.getAttributes(attrDef)) {