author | Ting 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) |
commit | a54ab33a9bceabd938ae517e21c396de2ca0ec63 (patch) | |
tree | 57006b4062a9b7aa6c405e9f8dd802e163374c88 | |
parent | 54373d75bbd9ecd0923cd5e37410e692a5e62413 (diff) | |
download | RemoteIME-a54ab33a9bceabd938ae517e21c396de2ca0ec63.zip RemoteIME-a54ab33a9bceabd938ae517e21c396de2ca0ec63.tar.gz RemoteIME-a54ab33a9bceabd938ae517e21c396de2ca0ec63.tar.bz2 |
pd#96334 fix bug of language switch and lable cannot switch
Change-Id: I512afbf5f2643d42fbc1226a0ef3d3e788f51a44
-rwxr-xr-x | res/values-zh-rCN/strings.xml | 2 | ||||
-rwxr-xr-x | res/values/strings.xml | 2 | ||||
-rwxr-xr-x | res/xml/skb_sym1.xml | 4 | ||||
-rwxr-xr-x | res/xml/skb_sym2.xml | 4 | ||||
-rwxr-xr-x | src/com/amlogic/inputmethod/remote/RemoteIME.java | 4 | ||||
-rwxr-xr-x | src/com/amlogic/inputmethod/remote/SkbContainer.java | 23 | ||||
-rwxr-xr-x | src/com/amlogic/inputmethod/remote/SkbPool.java | 22 | ||||
-rwxr-xr-x | src/com/amlogic/inputmethod/remote/XmlKeyboardLoader.java | 4 |
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)) { |