From 3ca12750f9b6231b00a1856dcb25c2d2e07e8784 Mon Sep 17 00:00:00 2001 From: Michael Kolb Date: Wed, 20 Jul 2011 13:52:25 -0700 Subject: use system menu On phones with hardware menu key, use the framework's menu Also fixes: Bug: 5051899 remove overflow button from bar if menu key is present Nav options are not visible on tab switcher Change-Id: I5b55934a392a76f9d9ef16e3bf5c71f27b88d69a --- src/com/android/browser/BaseUi.java | 6 +++++ src/com/android/browser/Controller.java | 8 +++---- src/com/android/browser/NavScreen.java | 6 +++++ src/com/android/browser/NavigationBarPhone.java | 31 ------------------------- src/com/android/browser/PhoneUi.java | 25 ++++++++++++-------- src/com/android/browser/UI.java | 3 +++ 6 files changed, 34 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index d1445d8fb..b270dea7c 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -35,6 +35,7 @@ import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; @@ -652,6 +653,11 @@ public abstract class BaseUi implements UI, OnTouchListener { public void onExtendedMenuOpened() { } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + return false; + } + @Override public void onOptionsMenuClosed(boolean inLoad) { } diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index 9b8187062..8a4433e31 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -1512,6 +1512,10 @@ public class Controller // won't get onKeyUp for MENU. So it is important to reset it here. mMenuIsDown = false; } + if (mUi.onOptionsItemSelected(item)) { + // ui callback handled it + return true; + } switch (item.getItemId()) { // -- Main menu case R.id.new_tab_menu_id: @@ -2462,10 +2466,6 @@ public class Controller boolean noModifiers = event.hasNoModifiers(); // Even if MENU is already held down, we need to call to super to open // the IME on long press. - if (KeyEvent.KEYCODE_MENU == keyCode) { - event.startTracking(); - return true; - } if (!noModifiers && ((KeyEvent.KEYCODE_MENU == keyCode) || (KeyEvent.KEYCODE_CTRL_LEFT == keyCode) diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java index 23317b584..ee2053507 100644 --- a/src/com/android/browser/NavScreen.java +++ b/src/com/android/browser/NavScreen.java @@ -23,6 +23,7 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewConfiguration; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.webkit.WebView; @@ -59,6 +60,7 @@ public class NavScreen extends RelativeLayout NavTabGallery mScroller; TabAdapter mAdapter; int mOrientation; + boolean mNeedsMenu; public NavScreen(Activity activity, UiController ctl, PhoneUi ui) { super(activity); @@ -122,6 +124,10 @@ public class NavScreen extends RelativeLayout ? LinearLayout.HORIZONTAL : LinearLayout.VERTICAL); // update state for active tab mScroller.setSelection(mUiController.getTabControl().getTabPosition(mUi.getActiveTab())); + mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey(); + if (!mNeedsMenu) { + mMore.setVisibility(View.GONE); + } } @Override diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java index 2030169af..400b6955a 100644 --- a/src/com/android/browser/NavigationBarPhone.java +++ b/src/com/android/browser/NavigationBarPhone.java @@ -167,30 +167,6 @@ public class NavigationBarPhone extends NavigationBarBase implements return mMenuShowing; } - void showMenu() { - // called from menu key, use tab switcher as anchor - mMenuShowing = true; - if (isEditingUrl()) { - stopEditingUrl(); - post(new Runnable() { - @Override - public void run() { - showMenu(); - } - }); - } else { - mBaseUi.getTitleBar().setSkipTitleBarAnimations(true); - mBaseUi.showTitleBar(); - mBaseUi.getTitleBar().setSkipTitleBarAnimations(false); - post(new Runnable() { - @Override - public void run() { - showMenu(mTabSwitcher); - } - }); - } - } - void showMenu(View anchor) { mMenuShowing = true; mPopupMenu = new PopupMenu(mContext, anchor); @@ -202,13 +178,6 @@ public class NavigationBarPhone extends NavigationBarBase implements mPopupMenu.show(); } - void dismissMenu() { - if (mPopupMenu != null) { - mPopupMenu.dismiss(); - mBaseUi.suggestHideTitleBar(); - } - } - @Override public void onDismiss(PopupMenu menu) { onMenuHidden(); diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index 9e3310b28..28db6f0f4 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -23,6 +23,7 @@ import android.view.ActionMode; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.webkit.WebView; import android.widget.FrameLayout; @@ -77,16 +78,6 @@ public class PhoneUi extends BaseUi { return super.onBackKey(); } - @Override - public boolean onMenuKey() { - if (mNavigationBar.isMenuShowing()) { - mNavigationBar.dismissMenu(); - } else { - mNavigationBar.showMenu(); - } - return true; - } - @Override public boolean dispatchKey(int code, KeyEvent event) { return false; @@ -168,6 +159,20 @@ public class PhoneUi extends BaseUi { // menu handling callbacks + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null)); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (mNavScreen != null) { + hideNavScreen(false); + } + return false; + } + @Override public void onContextMenuCreated(Menu menu) { hideTitleBar(); diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java index 4b58872f9..23897f704 100644 --- a/src/com/android/browser/UI.java +++ b/src/com/android/browser/UI.java @@ -22,6 +22,7 @@ import android.os.Bundle; import android.view.ActionMode; import android.view.KeyEvent; import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; @@ -102,6 +103,8 @@ public interface UI { public void onExtendedMenuOpened(); + public boolean onOptionsItemSelected(MenuItem item); + public void onOptionsMenuClosed(boolean inLoad); public void onExtendedMenuClosed(boolean inLoad); -- cgit v1.2.3