Adds a list view option for viewing bookmarks
Bug: 3166319
This adds a popup menu option to the combined view that allows a
user to switch between viewing their bookmarks as a grid of thumbnails
or as a list of bookmarks with favicons.
Change-Id: I6729d477f574a46847dff4b69c1b32d9f63fb37f
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index c7392cc..2b8c535 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -31,6 +31,7 @@
import android.content.Intent;
import android.content.Loader;
import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -53,6 +54,7 @@
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.GridView;
+import android.widget.ListView;
import android.widget.Toast;
/**
@@ -77,15 +79,20 @@
public static final String PREF_ACCOUNT_NAME = "acct_name";
static final String DEFAULT_ACCOUNT = "local";
+ static final int VIEW_THUMBNAILS = 1;
+ static final int VIEW_LIST = 2;
+ static final String PREF_SELECTED_VIEW = "bookmarks_view";
BookmarksHistoryCallbacks mCallbacks;
GridView mGrid;
+ ListView mList;
BrowserBookmarksAdapter mAdapter;
boolean mDisableNewWindow;
BookmarkItem mContextHeader;
boolean mCanceled = false;
boolean mCreateShortcut;
View mEmptyView;
+ int mCurrentView;
BreadCrumbView mCrumbs;
@@ -134,9 +141,10 @@
if (cursor == null || cursor.getCount() == 0) {
mEmptyView.setVisibility(View.VISIBLE);
mGrid.setVisibility(View.GONE);
+ mList.setVisibility(View.GONE);
} else {
mEmptyView.setVisibility(View.GONE);
- mGrid.setVisibility(View.VISIBLE);
+ setupBookmarkView();
}
// Give the new data to the adapter
@@ -372,13 +380,19 @@
if (!mCreateShortcut) {
mGrid.setOnCreateContextMenuListener(this);
}
-
- mAdapter = new BrowserBookmarksAdapter(getActivity());
- mGrid.setAdapter(mAdapter);
+ mList = (ListView) root.findViewById(R.id.list);
+ mList.setOnItemClickListener(this);
+ if (!mCreateShortcut) {
+ mList.setOnCreateContextMenuListener(this);
+ registerForContextMenu(mList);
+ }
// Start the loaders
LoaderManager lm = getLoaderManager();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ mCurrentView =
+ prefs.getInt(PREF_SELECTED_VIEW, BrowserBookmarksPage.VIEW_THUMBNAILS);
+ mAdapter = new BrowserBookmarksAdapter(getActivity(), mCurrentView);
String accountType = prefs.getString(PREF_ACCOUNT_TYPE, DEFAULT_ACCOUNT);
String accountName = prefs.getString(PREF_ACCOUNT_NAME, DEFAULT_ACCOUNT);
if (!TextUtils.isEmpty(accountType) && !TextUtils.isEmpty(accountName)) {
@@ -609,4 +623,36 @@
cm.setPrimaryClip(ClipData.newRawUri(null, null, Uri.parse(text.toString())));
}
+ void selectView(int view) {
+ if (view == mCurrentView) {
+ return;
+ }
+ mCurrentView = view;
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
+ Editor edit = prefs.edit();
+ edit.putInt(PREF_SELECTED_VIEW, mCurrentView);
+ edit.apply();
+ if (mEmptyView.getVisibility() == View.VISIBLE) {
+ return;
+ }
+ setupBookmarkView();
+ }
+
+ private void setupBookmarkView() {
+ mAdapter.selectView(mCurrentView);
+ switch (mCurrentView) {
+ case VIEW_THUMBNAILS:
+ mList.setAdapter(null);
+ mGrid.setAdapter(mAdapter);
+ mGrid.setVisibility(View.VISIBLE);
+ mList.setVisibility(View.GONE);
+ break;
+ case VIEW_LIST:
+ mGrid.setAdapter(null);
+ mList.setAdapter(mAdapter);
+ mGrid.setVisibility(View.GONE);
+ mList.setVisibility(View.VISIBLE);
+ break;
+ }
+ }
}