diff options
| author | Daniel Sandler <dsandler@google.com> | 2010-12-08 10:51:03 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-12-08 10:51:03 -0800 |
| commit | c5a2545284354e54f58ba373eafe6e0f8a58ae42 (patch) | |
| tree | 84d10555b304081cfee4e52b136226e0c01f6916 | |
| parent | ba82088b13aae4cdf1217e499eb9fb0eb6977da4 (diff) | |
| parent | 10163c689a713a35f69aad420c35372946b8b32a (diff) | |
| download | frameworks_base-c5a2545284354e54f58ba373eafe6e0f8a58ae42.zip frameworks_base-c5a2545284354e54f58ba373eafe6e0f8a58ae42.tar.gz frameworks_base-c5a2545284354e54f58ba373eafe6e0f8a58ae42.tar.bz2 | |
Merge "Experimental: Tapping on the status bar sends a space key."
| -rw-r--r-- | packages/SystemUI/res/layout-xlarge/status_bar.xml | 12 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java | 28 |
2 files changed, 40 insertions, 0 deletions
diff --git a/packages/SystemUI/res/layout-xlarge/status_bar.xml b/packages/SystemUI/res/layout-xlarge/status_bar.xml index f074e98..4ca8084 100644 --- a/packages/SystemUI/res/layout-xlarge/status_bar.xml +++ b/packages/SystemUI/res/layout-xlarge/status_bar.xml @@ -264,5 +264,17 @@ android:visibility="gone" /> </RelativeLayout> + + <!-- fake space bar zone --> + <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/fake_space_bar" + android:layout_height="match_parent" + android:layout_width="match_parent" + android:paddingLeft="8dip" + android:paddingRight="8dip" + android:layout_toRightOf="@+id/navigationArea" + android:layout_toLeftOf="@+id/notificationArea" + android:visibility="gone" + systemui:keyCode="62" + /> </RelativeLayout> </com.android.systemui.statusbar.tablet.TabletStatusBarView> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index f561d04..90cf3dc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -40,11 +40,14 @@ import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; +import android.os.ServiceManager; import android.text.TextUtils; import android.util.Slog; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.Gravity; +import android.view.IWindowManager; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.VelocityTracker; @@ -84,6 +87,9 @@ public class TabletStatusBar extends StatusBar { public static final int MSG_SHOW_SHADOWS = 1031; public static final int MSG_RESTORE_SHADOWS = 1032; + // Fitts' Law assistance for LatinIME; TODO: replace with a more general approach + private static final boolean FAKE_SPACE_BAR = true; + private static final int MAX_IMAGE_LEVEL = 10000; private static final boolean USE_2D_RECENTS = true; @@ -93,6 +99,8 @@ public class TabletStatusBar extends StatusBar { H mHandler = new H(); + IWindowManager mWindowManager; + // tracking all current notifications private NotificationData mNotns = new NotificationData(); @@ -134,6 +142,9 @@ public class TabletStatusBar extends StatusBar { TabletTicker mTicker; + View mFakeSpaceBar; + KeyEvent mSpaceBarKeyEvent = null; + // for disabling the status bar int mDisabled = 0; @@ -252,6 +263,9 @@ public class TabletStatusBar extends StatusBar { protected View makeStatusBarView() { final Context context = mContext; final Resources res = context.getResources(); + + mWindowManager = IWindowManager.Stub.asInterface( + ServiceManager.getService(Context.WINDOW_SERVICE)); mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size); @@ -304,6 +318,9 @@ public class TabletStatusBar extends StatusBar { // The bar contents buttons mInputMethodSwitchButton = (InputMethodButton) sb.findViewById(R.id.imeSwitchButton); + // for redirecting errant bar taps to the IME + mFakeSpaceBar = sb.findViewById(R.id.fake_space_bar); + // "shadows" of the status bar features, for lights-out mode mBackShadow = sb.findViewById(R.id.back_shadow); mHomeShadow = sb.findViewById(R.id.home_shadow); @@ -698,6 +715,9 @@ public class TabletStatusBar extends StatusBar { mInputMethodSwitchButton.setIMEButtonVisible(token, visible); mBackButton.setImageResource( visible ? R.drawable.ic_sysbar_back_ime : R.drawable.ic_sysbar_back); + if (FAKE_SPACE_BAR) { + mFakeSpaceBar.setVisibility(visible ? View.VISIBLE : View.GONE); + } } private boolean isImmersive() { @@ -739,6 +759,14 @@ public class TabletStatusBar extends StatusBar { } } + private void sendKey(KeyEvent key) { + try { + if (DEBUG) Slog.d(TAG, "injecting key event: " + key); + mWindowManager.injectInputEventNoWait(key); + } catch (RemoteException ex) { + } + } + private View.OnClickListener mOnClickListener = new View.OnClickListener() { public void onClick(View v) { if (v == mNotificationTrigger) { |
