Re-enable list view mode
Bug: 4645489
Change-Id: Id6eab53a6cb73083781c96a41bfeffec6eae0498
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 16bcda5..b3f8d98 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -124,6 +124,10 @@
mCurrentView = view;
}
+ public int getViewMode() {
+ return mCurrentView;
+ }
+
@Override
public Cursor getItem(int position) {
return (Cursor) super.getItem(position);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index f2f7de3..b6a50da 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -49,19 +49,17 @@
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.webkit.WebIconDatabase.IconListener;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.ListView;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.Toast;
import com.android.browser.BookmarkDragHandler.BookmarkDragController;
import com.android.browser.BookmarkDragHandler.BookmarkDragState;
-import com.android.browser.view.BookmarkExpandableGridView;
-import com.android.browser.view.BookmarkExpandableGridView.BookmarkContextMenuInfo;
+import com.android.browser.view.BookmarkExpandableView;
+import com.android.browser.view.BookmarkExpandableView.BookmarkContextMenuInfo;
import java.util.HashMap;
@@ -76,8 +74,8 @@
* View showing the user's bookmarks in the browser.
*/
public class BrowserBookmarksPage extends Fragment implements View.OnCreateContextMenuListener,
- LoaderManager.LoaderCallbacks<Cursor>, IconListener,
- BreadCrumbView.Controller, OnMenuItemClickListener, OnChildClickListener {
+ LoaderManager.LoaderCallbacks<Cursor>, BreadCrumbView.Controller,
+ OnMenuItemClickListener, OnChildClickListener {
public static class ExtraDragState {
public int childPosition;
@@ -94,14 +92,13 @@
static final String ACCOUNT_TYPE = "account_type";
static final String ACCOUNT_NAME = "account_name";
- static final int VIEW_THUMBNAILS = 1;
- static final int VIEW_LIST = 2;
+ public static final int VIEW_THUMBNAILS = 1;
+ public static final int VIEW_LIST = 2;
static final String PREF_SELECTED_VIEW = "bookmarks_view";
BookmarksPageCallbacks mCallbacks;
View mRoot;
- BookmarkExpandableGridView mGrid;
- ListView mList;
+ BookmarkExpandableView mGrid;
boolean mDisableNewWindow;
boolean mEnableContextMenu = true;
View mEmptyView;
@@ -167,7 +164,6 @@
@Override
public void onLoaderReset(Loader<Cursor> loader) {
- // TODO: Figure out what to do here (if anything?)
}
@Override
@@ -326,8 +322,6 @@
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getActivity());
mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView());
- // TODO: Support list view
- mCurrentView = VIEW_THUMBNAILS;
Bundle args = getArguments();
mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false);
@@ -341,12 +335,10 @@
mRoot = inflater.inflate(R.layout.bookmarks, container, false);
mEmptyView = mRoot.findViewById(android.R.id.empty);
- mGrid = (BookmarkExpandableGridView) mRoot.findViewById(R.id.grid);
+ mGrid = (BookmarkExpandableView) mRoot.findViewById(R.id.grid);
mGrid.setOnChildClickListener(this);
mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail);
mGrid.setBreadcrumbController(this);
- mList = (ListView) mRoot.findViewById(R.id.list);
- // TODO: mList.setOnItemClickListener(this);
setEnableContextMenu(mEnableContextMenu);
mDragHandler = new BookmarkDragHandler(getActivity(), mDragController,
mGrid.getDragAdapter());
@@ -355,9 +347,6 @@
LoaderManager lm = getLoaderManager();
lm.restartLoader(LOADER_ACCOUNTS, null, this);
- // Add our own listener in case there are favicons that have yet to be loaded.
- CombinedBookmarkHistoryView.getIconListenerSet().addListener(this);
-
return mRoot;
}
@@ -378,34 +367,14 @@
lm.destroyLoader(id);
}
mBookmarkAdapters.clear();
-
- CombinedBookmarkHistoryView.getIconListenerSet().removeListener(this);
- }
-
- @Override
- public void onReceivedIcon(String url, Bitmap icon) {
- // A new favicon has been loaded, so let anything attached to the adapter know about it
- // so new icons will be loaded.
- // TODO: Notify all of data set changed
- // TODO: Wait, is this even needed? Won't this trigger a DB change anyway?
}
private BrowserBookmarksAdapter getChildAdapter(int groupPosition) {
- if (mCurrentView == VIEW_THUMBNAILS) {
- return mGrid.getChildAdapter(groupPosition);
- } else {
- // TODO: Support expandable list
- return null;
- }
+ return mGrid.getChildAdapter(groupPosition);
}
private BreadCrumbView getBreadCrumbs(int groupPosition) {
- if (mCurrentView == VIEW_THUMBNAILS) {
- return mGrid.getBreadCrumbs(groupPosition);
- } else {
- // TODO: Support expandable list
- return null;
- }
+ return mGrid.getBreadCrumbs(groupPosition);
}
@Override
@@ -566,11 +535,10 @@
}
void selectView(int view) {
- // TODO: Support list view
- view = mCurrentView;
if (view == mCurrentView) {
return;
}
+ mCurrentView = view;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
Editor edit = prefs.edit();
edit.putInt(PREF_SELECTED_VIEW, mCurrentView);
@@ -578,31 +546,7 @@
if (mEmptyView.getVisibility() == View.VISIBLE) {
return;
}
- setupBookmarkView();
- }
-
- private void setupBookmarkView() {
- // TODO: Support list view
-// mAdapter.selectView(mCurrentView);
-// switch (mCurrentView) {
-// case VIEW_THUMBNAILS:
-// mList.setAdapter(null);
-// SharedPreferences prefs = PreferenceManager
-// .getDefaultSharedPreferences(getActivity());
-// String accountName = prefs.getString(PREF_ACCOUNT_NAME, null);
-// mGrid.addAccount(accountName, mAdapter);
-// mGrid.setVisibility(View.VISIBLE);
-// mList.setVisibility(View.GONE);
-// break;
-// case VIEW_LIST:
-// mGrid.clearAccounts();
-// if (mList.getAdapter() != mAdapter) {
-// mList.setAdapter(mAdapter);
-// }
-// mGrid.setVisibility(View.GONE);
-// mList.setVisibility(View.VISIBLE);
-// break;
-// }
+ mGrid.selectView(mCurrentView);
}
/**
@@ -662,14 +606,6 @@
mGrid.setLongClickable(false);
}
}
- if (mList != null) {
- if (mEnableContextMenu) {
- registerForContextMenu(mList);
- } else {
- unregisterForContextMenu(mList);
- mList.setLongClickable(false);
- }
- }
}
private BookmarkDragController mDragController = new BookmarkDragController() {
@@ -702,11 +638,7 @@
@Override
public void actionItemClicked(View v, BookmarkDragState state) {
if (v.getId() == R.id.info) {
- if (mCurrentView == VIEW_THUMBNAILS) {
- mGrid.showContextMenuForState(state);
- } else {
- // TODO: Support expandable list
- }
+ mGrid.showContextMenuForState(state);
} else {
ExtraDragState extraState = (ExtraDragState) state.extraState;
handleContextItem(v.getId(), extraState.groupPosition,
diff --git a/src/com/android/browser/view/BookmarkExpandableGridView.java b/src/com/android/browser/view/BookmarkExpandableView.java
similarity index 89%
rename from src/com/android/browser/view/BookmarkExpandableGridView.java
rename to src/com/android/browser/view/BookmarkExpandableView.java
index c8811d1..6f5fdaa 100644
--- a/src/com/android/browser/view/BookmarkExpandableGridView.java
+++ b/src/com/android/browser/view/BookmarkExpandableView.java
@@ -38,6 +38,7 @@
import com.android.browser.BookmarkDragHandler.BookmarkDragState;
import com.android.browser.BreadCrumbView;
import com.android.browser.BrowserBookmarksAdapter;
+import com.android.browser.BrowserBookmarksPage;
import com.android.browser.BrowserBookmarksPage.ExtraDragState;
import com.android.browser.R;
import com.android.internal.view.menu.MenuBuilder;
@@ -45,7 +46,7 @@
import java.util.ArrayList;
import java.util.HashMap;
-public class BookmarkExpandableGridView extends ExpandableListView
+public class BookmarkExpandableView extends ExpandableListView
implements BreadCrumbView.Controller {
private BookmarkAccountAdapter mAdapter;
@@ -58,18 +59,19 @@
private BreadCrumbView.Controller mBreadcrumbController;
private BookmarkDragHandler mDragHandler;
private int mMaxColumnCount;
+ private int mCurrentView = -1;
- public BookmarkExpandableGridView(Context context) {
+ public BookmarkExpandableView(Context context) {
super(context);
init(context);
}
- public BookmarkExpandableGridView(Context context, AttributeSet attrs) {
+ public BookmarkExpandableView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
- public BookmarkExpandableGridView(
+ public BookmarkExpandableView(
Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
@@ -131,6 +133,9 @@
adapter.registerDataSetObserver(mAdapter.mObserver);
}
} else {
+ if (mCurrentView >= 0) {
+ adapter.selectView(mCurrentView);
+ }
mAdapter.mGroups.add(accountName);
mAdapter.mChildren.add(adapter);
adapter.registerDataSetObserver(mAdapter.mObserver);
@@ -224,7 +229,7 @@
extraState.childPosition,
extraState.groupPosition);
if (getParent() != null) {
- getParent().showContextMenuForChild(BookmarkExpandableGridView.this);
+ getParent().showContextMenuForChild(BookmarkExpandableView.this);
}
}
@@ -252,7 +257,7 @@
int childPosition = (Integer) v.getTag(R.id.child_position);
long id = (Long) v.getTag(R.id.child_id);
if (mOnChildClickListener != null) {
- mOnChildClickListener.onChildClick(BookmarkExpandableGridView.this,
+ mOnChildClickListener.onChildClick(BookmarkExpandableView.this,
v, groupPosition, childPosition, id);
}
}
@@ -289,6 +294,14 @@
return mAdapter.getBreadCrumbView(groupPosition);
}
+ public void selectView(int view) {
+ mCurrentView = view;
+ for (BrowserBookmarksAdapter adapter : mAdapter.mChildren) {
+ adapter.selectView(mCurrentView);
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+
class BookmarkAccountAdapter extends BaseExpandableListAdapter {
ArrayList<BrowserBookmarksAdapter> mChildren;
ArrayList<String> mGroups;
@@ -339,17 +352,21 @@
if (convertView == null) {
convertView = mInflater.inflate(R.layout.bookmark_grid_row, parent, false);
}
- LinearLayout row = (LinearLayout) convertView;
- if (row.getChildCount() > mRowCount) {
- row.removeViews(mRowCount, row.getChildCount() - mRowCount);
+ BrowserBookmarksAdapter childAdapter = mChildren.get(groupPosition);
+ int rowCount = mRowCount;
+ if (childAdapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
+ rowCount = 1;
}
- for (int i = 0; i < mRowCount; i++) {
+ LinearLayout row = (LinearLayout) convertView;
+ if (row.getChildCount() > rowCount) {
+ row.removeViews(rowCount, row.getChildCount() - rowCount);
+ }
+ for (int i = 0; i < rowCount; i++) {
View cv = null;
if (row.getChildCount() > i) {
cv = row.getChildAt(i);
}
- int realChildPosition = (childPosition * mRowCount) + i;
- BrowserBookmarksAdapter childAdapter = mChildren.get(groupPosition);
+ int realChildPosition = (childPosition * rowCount) + i;
if (realChildPosition < childAdapter.getCount()) {
View v = childAdapter.getView(realChildPosition, cv, row);
v.setTag(R.id.group_position, groupPosition);
@@ -378,8 +395,11 @@
@Override
public int getChildrenCount(int groupPosition) {
- return (int) Math.ceil(
- mChildren.get(groupPosition).getCount() / (float)mRowCount);
+ BrowserBookmarksAdapter adapter = mChildren.get(groupPosition);
+ if (adapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
+ return adapter.getCount();
+ }
+ return (int) Math.ceil(adapter.getCount() / (float)mRowCount);
}
@Override
@@ -443,7 +463,7 @@
if (crumbs == null) {
crumbs = (BreadCrumbView)
mInflater.inflate(R.layout.bookmarks_header, null);
- crumbs.setController(BookmarkExpandableGridView.this);
+ crumbs.setController(BookmarkExpandableView.this);
crumbs.setUseBackButton(true);
crumbs.setMaxVisible(2);
String bookmarks = mContext.getString(R.string.bookmarks);
@@ -464,6 +484,20 @@
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
+
+ @Override
+ public int getChildTypeCount() {
+ return 2;
+ }
+
+ @Override
+ public int getChildType(int groupPosition, int childPosition) {
+ BrowserBookmarksAdapter adapter = mChildren.get(groupPosition);
+ if (adapter.getViewMode() == BrowserBookmarksPage.VIEW_LIST) {
+ return 1;
+ }
+ return 0;
+ }
}
public static class BookmarkContextMenuInfo implements ContextMenuInfo {