diff options
| author | John Reck <jreck@google.com> | 2010-11-23 10:27:29 -0800 |
|---|---|---|
| committer | John Reck <jreck@google.com> | 2010-11-23 11:26:03 -0800 |
| commit | 8af906474c84854598da1886edacfd5f10cae70f (patch) | |
| tree | 91406ae080d387e91525e4137889d5fa9c2ea532 /src/com/android/browser/BrowserBookmarksAdapter.java | |
| parent | a49b829e91ea1290d9e1cf326417fdbf669f9d3a (diff) | |
| download | packages_apps_Browser-8af906474c84854598da1886edacfd5f10cae70f.tar.gz packages_apps_Browser-8af906474c84854598da1886edacfd5f10cae70f.tar.bz2 packages_apps_Browser-8af906474c84854598da1886edacfd5f10cae70f.zip | |
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
Diffstat (limited to 'src/com/android/browser/BrowserBookmarksAdapter.java')
| -rw-r--r-- | src/com/android/browser/BrowserBookmarksAdapter.java | 75 |
1 files changed, 65 insertions, 10 deletions
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java index a5d51dda1..6478b10c2 100644 --- a/src/com/android/browser/BrowserBookmarksAdapter.java +++ b/src/com/android/browser/BrowserBookmarksAdapter.java @@ -20,42 +20,97 @@ import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.widget.CursorAdapter; import android.widget.ImageView; -import android.widget.ResourceCursorAdapter; import android.widget.TextView; -class BrowserBookmarksAdapter extends ResourceCursorAdapter { +class BrowserBookmarksAdapter extends CursorAdapter { + LayoutInflater mInflater; + int mCurrentView; + /** * Create a new BrowserBookmarksAdapter. */ - public BrowserBookmarksAdapter(Context context) { + public BrowserBookmarksAdapter(Context context, int defaultView) { // Make sure to tell the CursorAdapter to avoid the observer and auto-requery // since the Loader will do that for us. - super(context, R.layout.bookmark_thumbnail, null); + super(context, null); + mInflater = LayoutInflater.from(context); + selectView(defaultView); } @Override public void bindView(View view, Context context, Cursor cursor) { + if (mCurrentView == BrowserBookmarksPage.VIEW_LIST) { + bindListView(view, context, cursor); + } else { + bindGridView(view, context, cursor); + } + } + + void bindGridView(View view, Context context, Cursor cursor) { ImageView thumb = (ImageView) view.findViewById(R.id.thumb); TextView tv = (TextView) view.findViewById(R.id.label); tv.setText(cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE)); - Bitmap thumbnail = null; if (cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0) { // folder thumb.setImageResource(R.drawable.ic_folder); } else { - byte[] data = cursor.getBlob(BookmarksLoader.COLUMN_INDEX_THUMBNAIL); - if (data != null) { - thumbnail = BitmapFactory.decodeByteArray(data, 0, data.length); + byte[] thumbData = cursor.getBlob(BookmarksLoader.COLUMN_INDEX_THUMBNAIL); + Bitmap thumbBitmap = null; + if (thumbData != null) { + thumbBitmap = BitmapFactory.decodeByteArray(thumbData, 0, thumbData.length); } - if (thumbnail == null) { + if (thumbBitmap == null) { thumb.setImageResource(R.drawable.browser_thumbnail); } else { - thumb.setImageBitmap(thumbnail); + thumb.setImageBitmap(thumbBitmap); + } + } + } + + void bindListView(View view, Context context, Cursor cursor) { + ImageView favicon = (ImageView) view.findViewById(R.id.favicon); + TextView tv = (TextView) view.findViewById(R.id.label); + + tv.setText(cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE)); + if (cursor.getInt(BookmarksLoader.COLUMN_INDEX_IS_FOLDER) != 0) { + // folder + favicon.setImageResource(R.drawable.ic_folder); + } else { + byte[] faviconData = cursor.getBlob(BookmarksLoader.COLUMN_INDEX_FAVICON); + Bitmap faviconBitmap = null; + if (faviconData != null) { + faviconBitmap = BitmapFactory.decodeByteArray(faviconData, 0, faviconData.length); + } + + if (faviconBitmap == null) { + favicon.setImageResource(R.drawable.app_web_browser_sm); + } else { + favicon.setImageBitmap(faviconBitmap); } } } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + if (mCurrentView == BrowserBookmarksPage.VIEW_LIST) { + return mInflater.inflate(R.layout.bookmark_list, parent, false); + } else { + return mInflater.inflate(R.layout.bookmark_thumbnail, parent, false); + } + } + + public void selectView(int view) { + if (view != BrowserBookmarksPage.VIEW_LIST + && view != BrowserBookmarksPage.VIEW_THUMBNAILS) { + throw new IllegalArgumentException("Unknown view specified: " + view); + } + mCurrentView = view; + } } |
