summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorsatok <satok@google.com>2010-10-29 11:37:18 +0900
committersatok <satok@google.com>2010-10-30 03:17:40 +0900
commit06487a58be22b100daf3f950b9a1d25c3ea42aa2 (patch)
tree51f435300301f0be1256da96ce25abc77112e2ee /core
parente12774d4a81b3658de65e9d2848a7757d8612e0f (diff)
downloadframeworks_base-06487a58be22b100daf3f950b9a1d25c3ea42aa2.zip
frameworks_base-06487a58be22b100daf3f950b9a1d25c3ea42aa2.tar.gz
frameworks_base-06487a58be22b100daf3f950b9a1d25c3ea42aa2.tar.bz2
Add a functionarity for showing / hiding IME button on the system bar
Bug: 3077030 - IME communicates with status bar directly. Change-Id: Ic5b6b5b7a2b8ea62372dcc9b9c36d81b9f2db651
Diffstat (limited to 'core')
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java12
-rw-r--r--core/java/android/view/inputmethod/InputMethodManager.java9
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBar.aidl1
-rw-r--r--core/java/com/android/internal/statusbar/IStatusBarService.aidl1
-rw-r--r--core/java/com/android/internal/view/IInputMethodManager.aidl1
5 files changed, 19 insertions, 5 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 6089013..c0743cf 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -1296,7 +1296,7 @@ public class InputMethodService extends AbstractInputMethodService {
mInShowWindow = false;
}
}
-
+
void showWindowInner(boolean showInput) {
boolean doShowInput = false;
boolean wasVisible = mWindowVisible;
@@ -1311,7 +1311,7 @@ public class InputMethodService extends AbstractInputMethodService {
} else {
showInput = true;
}
-
+
if (DEBUG) Log.v(TAG, "showWindow: updating UI");
initialize();
updateFullscreenMode();
@@ -1343,14 +1343,15 @@ public class InputMethodService extends AbstractInputMethodService {
if (doShowInput) {
startExtractingText(false);
}
-
+
if (!wasVisible) {
if (DEBUG) Log.v(TAG, "showWindow: showing!");
+ mImm.setIMEButtonVisible(mToken, true);
onWindowShown();
mWindow.show();
}
}
-
+
public void hideWindow() {
if (mInputViewStarted) {
if (DEBUG) Log.v(TAG, "CALL: onFinishInputView");
@@ -1364,11 +1365,12 @@ public class InputMethodService extends AbstractInputMethodService {
if (mWindowVisible) {
mWindow.hide();
mWindowVisible = false;
+ mImm.setIMEButtonVisible(mToken, false);
onWindowHidden();
mWindowWasVisible = false;
}
}
-
+
/**
* Called when the input method window has been shown to the user, after
* previously not being visible. This is done after all of the UI setup
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 7cb6291..033ee7c 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -519,6 +519,15 @@ public final class InputMethodManager {
}
/** @hide */
+ public void setIMEButtonVisible(IBinder imeToken, boolean visible) {
+ try {
+ mService.setIMEButtonVisible(imeToken, visible);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /** @hide */
public void setFullscreenMode(boolean fullScreen) {
mFullscreenMode = fullScreen;
}
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 34a5b11..f87ca3e 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -32,5 +32,6 @@ oneway interface IStatusBar
void animateCollapse();
void setLightsOn(boolean on);
void setMenuKeyVisible(boolean visible);
+ void setIMEButtonVisible(boolean visible);
}
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 90f4d48..d5ae1f0 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -32,6 +32,7 @@ interface IStatusBarService
void removeIcon(String slot);
void setActiveWindowIsFullscreen(boolean fullscreen);
void setMenuKeyVisible(boolean visible);
+ void setIMEButtonVisible(boolean visible);
// ---- Methods below are for use by the status bar policy services ----
// You need the STATUS_BAR_SERVICE permission
diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl
index 49ae2bc..ca1cd59 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -55,6 +55,7 @@ interface IInputMethodManager {
void hideMySoftInput(in IBinder token, int flags);
void showMySoftInput(in IBinder token, int flags);
void updateStatusIcon(in IBinder token, String packageName, int iconId);
+ void setIMEButtonVisible(in IBinder token, boolean visible);
InputMethodSubtype getCurrentInputMethodSubtype();
boolean setInputMethodEnabled(String id, boolean enabled);