Make the view mode that the user sets (either grid or list) in the bookmarks/most visited page sticky.
Change-Id: I67db0ef2997a5948491223a5ae17fd4aa0356e94
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 5fb67d0..a7fa19c 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -51,7 +51,7 @@
private BrowserBookmarksPage mBookmarksPage;
private ContentResolver mContentResolver;
private boolean mDataValid;
- private boolean mGridMode;
+ private BookmarkViewMode mViewMode;
private boolean mMostVisited;
private boolean mNeedsOffset;
private int mExtraOffset;
@@ -82,7 +82,7 @@
+ curPage;
mCurrentTitle = curTitle;
mContentResolver = b.getContentResolver();
- mGridMode = false;
+ mViewMode = BookmarkViewMode.LIST;
String whereClause;
// FIXME: Should have a default sort order that the user selects.
@@ -377,8 +377,8 @@
return position;
}
- /* package */ void switchViewMode(boolean toGrid) {
- mGridMode = toGrid;
+ /* package */ void switchViewMode(BookmarkViewMode viewMode) {
+ mViewMode = viewMode;
}
/* package */ void populateBookmarkItem(BookmarkItem b, int position) {
@@ -406,7 +406,7 @@
throw new AssertionError(
"BrowserBookmarksAdapter tried to get a view out of range");
}
- if (mGridMode) {
+ if (mViewMode == BookmarkViewMode.GRID) {
if (convertView == null || convertView instanceof AddNewBookmark
|| convertView instanceof BookmarkItem) {
LayoutInflater factory = LayoutInflater.from(mBookmarksPage);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 7e72ae9..c981d7a 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -20,6 +20,8 @@
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
@@ -53,13 +55,14 @@
import android.widget.ListView;
import android.widget.Toast;
+/*package*/ enum BookmarkViewMode { NONE, GRID, LIST }
/**
* View showing the user's bookmarks in the browser.
*/
public class BrowserBookmarksPage extends Activity implements
View.OnCreateContextMenuListener {
- private boolean mGridMode;
+ private BookmarkViewMode mViewMode = BookmarkViewMode.NONE;
private GridView mGridPage;
private View mVerticalList;
private BrowserBookmarksAdapter mBookmarksAdapter;
@@ -77,7 +80,8 @@
"com.android.launcher.action.INSTALL_SHORTCUT";
private final static String LOGTAG = "browser";
-
+ private final static String PREF_BOOKMARK_VIEW_MODE = "pref_bookmark_view_mode";
+ private final static String PREF_MOST_VISITED_VIEW_MODE = "pref_most_visited_view_mode";
@Override
public boolean onContextItemSelected(MenuItem item) {
@@ -137,7 +141,7 @@
boolean isBookmark;
String name;
String url;
- if (mGridMode) {
+ if (mViewMode == BookmarkViewMode.GRID) {
isBookmark = mBookmarksAdapter.getIsBookmark(i.position);
name = mBookmarksAdapter.getTitle(i.position);
url = mBookmarksAdapter.getUrl(i.position);
@@ -187,7 +191,8 @@
return;
}
if (mMostVisited) {
- if ((!mGridMode && ((HistoryItem) i.targetView).isBookmark())
+ if ((mViewMode == BookmarkViewMode.LIST
+ && ((HistoryItem) i.targetView).isBookmark())
|| mBookmarksAdapter.getIsBookmark(i.position)) {
MenuItem item = menu.findItem(
R.id.save_to_bookmarks_menu_id);
@@ -207,7 +212,7 @@
((ViewGroup) mContextHeader.getParent()).
removeView(mContextHeader);
}
- if (mGridMode) {
+ if (mViewMode == BookmarkViewMode.GRID) {
mBookmarksAdapter.populateBookmarkItem(mContextHeader,
i.position);
} else {
@@ -243,17 +248,44 @@
mEmptyView = findViewById(R.id.empty_view);
mEmptyView.setVisibility(View.GONE);
- switchViewMode(true);
+ SharedPreferences p = getPreferences(MODE_PRIVATE);
+
+ // See if the user has set a preference for the view mode of their
+ // bookmarks. Otherwise default to grid mode.
+ BookmarkViewMode preference = BookmarkViewMode.NONE;
+ if (mMostVisited) {
+ preference = BookmarkViewMode.values()[p.getInt(
+ PREF_MOST_VISITED_VIEW_MODE,
+ BookmarkViewMode.GRID.ordinal())];
+ } else {
+ preference = BookmarkViewMode.values()[p.getInt(
+ PREF_BOOKMARK_VIEW_MODE, BookmarkViewMode.GRID.ordinal())];
+ }
+ switchViewMode(preference);
}
/**
* Set the ContentView to be either the grid of thumbnails or the vertical
- * list. Pass true to set it to the grid.
+ * list.
*/
- private void switchViewMode(boolean gridMode) {
- mGridMode = gridMode;
+ private void switchViewMode(BookmarkViewMode gridMode) {
+ if (mViewMode == gridMode) {
+ return;
+ }
+
+ mViewMode = gridMode;
+
+ // Update the preferences to make the new view mode sticky.
+ Editor ed = getPreferences(MODE_PRIVATE).edit();
+ if (mMostVisited) {
+ ed.putInt(PREF_MOST_VISITED_VIEW_MODE, mViewMode.ordinal());
+ } else {
+ ed.putInt(PREF_BOOKMARK_VIEW_MODE, mViewMode.ordinal());
+ }
+ ed.commit();
+
mBookmarksAdapter.switchViewMode(gridMode);
- if (mGridMode) {
+ if (mViewMode == BookmarkViewMode.GRID) {
if (mGridPage == null) {
mGridPage = new GridView(this);
mGridPage.setAdapter(mBookmarksAdapter);
@@ -457,7 +489,7 @@
return result;
}
menu.findItem(R.id.switch_mode_menu_id).setTitle(
- mGridMode ? R.string.switch_to_list
+ mViewMode == BookmarkViewMode.GRID ? R.string.switch_to_list
: R.string.switch_to_thumbnails);
return true;
}
@@ -470,7 +502,11 @@
break;
case R.id.switch_mode_menu_id:
- switchViewMode(!mGridMode);
+ if (mViewMode == BookmarkViewMode.GRID) {
+ switchViewMode(BookmarkViewMode.LIST);
+ } else {
+ switchViewMode(BookmarkViewMode.GRID);
+ }
break;
default: