From 06487a58be22b100daf3f950b9a1d25c3ea42aa2 Mon Sep 17 00:00:00 2001 From: satok Date: Fri, 29 Oct 2010 11:37:18 +0900 Subject: Add a functionarity for showing / hiding IME button on the system bar Bug: 3077030 - IME communicates with status bar directly. Change-Id: Ic5b6b5b7a2b8ea62372dcc9b9c36d81b9f2db651 --- core/java/android/inputmethodservice/InputMethodService.java | 12 +++++++----- core/java/android/view/inputmethod/InputMethodManager.java | 9 +++++++++ core/java/com/android/internal/statusbar/IStatusBar.aidl | 1 + .../com/android/internal/statusbar/IStatusBarService.aidl | 1 + core/java/com/android/internal/view/IInputMethodManager.aidl | 1 + 5 files changed, 19 insertions(+), 5 deletions(-) (limited to 'core') 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); -- cgit v1.1