diff options
author | Michael Kolb <kolby@google.com> | 2011-07-20 13:52:25 -0700 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-07-20 13:52:29 -0700 |
commit | 3ca12750f9b6231b00a1856dcb25c2d2e07e8784 (patch) | |
tree | 155cd2b6c7fa60385863427147a1e9a7d6472cb4 /src/com/android/browser | |
parent | 3b02d34b1f3c6c1629f23b9ffcb372fbf2f1d880 (diff) | |
download | packages_apps_Browser-3ca12750f9b6231b00a1856dcb25c2d2e07e8784.zip packages_apps_Browser-3ca12750f9b6231b00a1856dcb25c2d2e07e8784.tar.gz packages_apps_Browser-3ca12750f9b6231b00a1856dcb25c2d2e07e8784.tar.bz2 |
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
Diffstat (limited to 'src/com/android/browser')
-rw-r--r-- | src/com/android/browser/BaseUi.java | 6 | ||||
-rw-r--r-- | src/com/android/browser/Controller.java | 8 | ||||
-rw-r--r-- | src/com/android/browser/NavScreen.java | 6 | ||||
-rw-r--r-- | src/com/android/browser/NavigationBarPhone.java | 31 | ||||
-rw-r--r-- | src/com/android/browser/PhoneUi.java | 25 | ||||
-rw-r--r-- | src/com/android/browser/UI.java | 3 |
6 files changed, 34 insertions, 45 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index d1445d8..b270dea 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; @@ -653,6 +654,11 @@ public abstract class BaseUi implements UI, OnTouchListener { } @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 9b81870..8a4433e 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 23317b5..ee20535 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 2030169..400b695 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 9e3310b..28db6f0 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; @@ -78,16 +79,6 @@ public class PhoneUi extends BaseUi { } @Override - public boolean onMenuKey() { - if (mNavigationBar.isMenuShowing()) { - mNavigationBar.dismissMenu(); - } else { - mNavigationBar.showMenu(); - } - return true; - } - - @Override public boolean dispatchKey(int code, KeyEvent event) { return false; } @@ -169,6 +160,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 4b58872..23897f7 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); |