Implement ComboView for Bookmarks, History and SavedPages
- Replaces ComboViewActivity for PhoneUi.
- Lives as part of the BrowserActivity's ViewTree.
- Avoids construction of ComboViewActivity everytime the bookmarks screen is opened.
Change-Id: Ic7042de731a4cc2107a297c9f7d4356bc2c30f2e
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 603ce08..ec62a23 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -32,6 +32,7 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewStub;
import android.webkit.WebChromeClient;
import org.codeaurora.swe.WebView;
@@ -53,6 +54,7 @@
private TabBar mTabBar;
private NavigationBarTablet mNavBar;
+ private ComboView mComboView;
private Handler mHandler;
@@ -70,13 +72,60 @@
}
private void setupActionBar() {
+ mActionBar.setHomeButtonEnabled(false);
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
mActionBar.setCustomView(mTabBar);
}
public void showComboView(ComboViews startWith, Bundle extras) {
- super.showComboView(startWith, extras);
+ if (mComboView == null) {
+ ViewStub stub = (ViewStub) mActivity.getWindow().getDecorView().findViewById(R.id.combo_view_stub);
+ mComboView = (ComboView) stub.inflate();
+ mComboView.setVisibility(View.GONE);
+ mComboView.setupViews(mActivity);
+ }
+ mNavBar.setVisibility(View.GONE);
+ if (mActionBar != null)
+ mActionBar.hide();
+ Bundle b = new Bundle();
+ b.putString(ComboViewActivity.EXTRA_INITIAL_VIEW, startWith.name());
+ b.putBundle(ComboViewActivity.EXTRA_COMBO_ARGS, extras);
+ Tab t = getActiveTab();
+ if (t != null) {
+ b.putString(ComboViewActivity.EXTRA_CURRENT_URL, t.getUrl());
+ }
+ mComboView.showViews(mActivity, b);
+ }
+
+ @Override
+ public void hideComboView() {
+ if (showingComboView()) {
+ mComboView.hideViews();
+ mActionBar = mActivity.getActionBar();
+ setupActionBar();
+ if (mActionBar != null)
+ mActionBar.show();
+ mNavBar.setVisibility(View.VISIBLE);
+ }
+ }
+
+ @Override
+ public boolean onBackKey() {
+ if (showingComboView()) {
+ hideComboView();
+ return true;
+ }
+ return super.onBackKey();
+ }
+
+ private boolean showingComboView() {
+ return mComboView != null && mComboView.getVisibility() == View.VISIBLE;
+ }
+
+ @Override
+ public boolean isComboViewShowing() {
+ return showingComboView();
}
private void checkHideActionBar() {