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/ComboViewActivity.java b/src/com/android/browser/ComboViewActivity.java
index 5ce20fc..4e672ca 100644
--- a/src/com/android/browser/ComboViewActivity.java
+++ b/src/com/android/browser/ComboViewActivity.java
@@ -17,21 +17,15 @@
import android.app.ActionBar;
import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentTransaction;
-import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import com.android.browser.UI.ComboViews;
-import java.util.ArrayList;
-
public class ComboViewActivity extends Activity implements CombinedBookmarksCallbacks {
private static final String STATE_SELECTED_TAB = "tab";
@@ -42,7 +36,7 @@
public static final String EXTRA_OPEN_ALL = "open_all";
public static final String EXTRA_CURRENT_URL = "url";
private ViewPager mViewPager;
- private TabsAdapter mTabsAdapter;
+ private ComboTabsAdapter mTabsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -68,7 +62,7 @@
bar.setDisplayOptions(0);
}
- mTabsAdapter = new TabsAdapter(this, mViewPager);
+ mTabsAdapter = new ComboTabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_bookmarks),
BrowserBookmarksPage.class, args);
mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_history),
@@ -148,98 +142,6 @@
return super.onOptionsItemSelected(item);
}
- /**
- * This is a helper class that implements the management of tabs and all
- * details of connecting a ViewPager with associated TabHost. It relies on a
- * trick. Normally a tab host has a simple API for supplying a View or
- * Intent that each tab will show. This is not sufficient for switching
- * between pages. So instead we make the content part of the tab host
- * 0dp high (it is not shown) and the TabsAdapter supplies its own dummy
- * view to show as the tab content. It listens to changes in tabs, and takes
- * care of switch to the correct page in the ViewPager whenever the selected
- * tab changes.
- */
- public static class TabsAdapter extends FragmentPagerAdapter
- implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
- private final Context mContext;
- private final ActionBar mActionBar;
- private final ViewPager mViewPager;
- private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
-
- static final class TabInfo {
- private final Class<?> clss;
- private final Bundle args;
-
- TabInfo(Class<?> _class, Bundle _args) {
- clss = _class;
- args = _args;
- }
- }
-
- public TabsAdapter(Activity activity, ViewPager pager) {
- super(activity.getFragmentManager());
- mContext = activity;
- mActionBar = activity.getActionBar();
- mViewPager = pager;
- mViewPager.setAdapter(this);
- mViewPager.setOnPageChangeListener(this);
- }
-
- public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
- TabInfo info = new TabInfo(clss, args);
- tab.setTag(info);
- tab.setTabListener(this);
- mTabs.add(info);
- mActionBar.addTab(tab);
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- return mTabs.size();
- }
-
- @Override
- public Fragment getItem(int position) {
- TabInfo info = mTabs.get(position);
- return Fragment.instantiate(mContext, info.clss.getName(), info.args);
- }
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- }
-
- @Override
- public void onPageSelected(int position) {
- mActionBar.setSelectedNavigationItem(position);
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- }
-
- @Override
- public void onTabSelected(android.app.ActionBar.Tab tab,
- FragmentTransaction ft) {
- Object tag = tab.getTag();
- for (int i=0; i<mTabs.size(); i++) {
- if (mTabs.get(i) == tag) {
- mViewPager.setCurrentItem(i);
- }
- }
- }
-
- @Override
- public void onTabUnselected(android.app.ActionBar.Tab tab,
- FragmentTransaction ft) {
- }
-
- @Override
- public void onTabReselected(android.app.ActionBar.Tab tab,
- FragmentTransaction ft) {
- }
- }
-
private static String makeFragmentName(int viewId, int index) {
return "android:switcher:" + viewId + ":" + index;
}