OSDN Git Service

Deprecate fill_parent and introduce match_parent.
[android-x86/packages-apps-Browser.git] / src / com / android / browser / BrowserBookmarksAdapter.java
index a7fa19c..2601df5 100644 (file)
@@ -46,6 +46,7 @@ class BrowserBookmarksAdapter extends BaseAdapter {
 
     private String                  mCurrentPage;
     private String                  mCurrentTitle;
+    private Bitmap                  mCurrentThumbnail;
     private Cursor                  mCursor;
     private int                     mCount;
     private BrowserBookmarksPage    mBookmarksPage;
@@ -73,7 +74,8 @@ class BrowserBookmarksAdapter extends BaseAdapter {
      *                  appropriately after a search.
      */
     public BrowserBookmarksAdapter(BrowserBookmarksPage b, String curPage,
-            String curTitle, boolean createShortcut, boolean mostVisited) {
+            String curTitle, Bitmap curThumbnail, boolean createShortcut,
+            boolean mostVisited) {
         mNeedsOffset = !(createShortcut || mostVisited);
         mMostVisited = mostVisited;
         mExtraOffset = mNeedsOffset ? 1 : 0;
@@ -81,6 +83,7 @@ class BrowserBookmarksAdapter extends BaseAdapter {
         mCurrentPage = b.getResources().getString(R.string.current_page)
                 + curPage;
         mCurrentTitle = curTitle;
+        mCurrentThumbnail = curThumbnail;
         mContentResolver = b.getContentResolver();
         mViewMode = BookmarkViewMode.LIST;
 
@@ -167,6 +170,10 @@ class BrowserBookmarksAdapter extends BaseAdapter {
                 getString(Browser.HISTORY_PROJECTION_URL_INDEX))) {
             values.put(Browser.BookmarkColumns.URL, url);
         }
+
+        if (map.getBoolean("invalidateThumbnail") == true) {
+            values.put(Browser.BookmarkColumns.THUMBNAIL, new byte[0]);
+        }
         if (values.size() > 0
                 && mContentResolver.update(Browser.BOOKMARKS_URI, values,
                         "_id = " + id, null) != -1) {
@@ -185,7 +192,8 @@ class BrowserBookmarksAdapter extends BaseAdapter {
         }
         mCursor.moveToPosition(position- mExtraOffset);
         String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
-        Bookmarks.removeFromBookmarks(null, mContentResolver, url);
+        String title = mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX);
+        Bookmarks.removeFromBookmarks(null, mContentResolver, url, title);
         refreshList();
     }
     
@@ -255,18 +263,11 @@ class BrowserBookmarksAdapter extends BaseAdapter {
      * Update the bookmark's favicon. This is a convenience method for updating
      * a bookmark favicon for the originalUrl and url of the passed in WebView.
      * @param cr The ContentResolver to use.
-     * @param WebView The WebView containing the url to update.
+     * @param originalUrl The original url before any redirects.
+     * @param url The current url.
      * @param favicon The favicon bitmap to write to the db.
      */
     /* package */ static void updateBookmarkFavicon(ContentResolver cr,
-            WebView view, Bitmap favicon) {
-        if (view != null) {
-            updateBookmarkFavicon(cr, view.getOriginalUrl(), view.getUrl(),
-                    favicon);
-        }
-    }
-
-    private static void updateBookmarkFavicon(ContentResolver cr,
             String originalUrl, String url, Bitmap favicon) {
         final Cursor c = queryBookmarksForUrl(cr, originalUrl, url, true);
         if (c == null) {
@@ -315,8 +316,8 @@ class BrowserBookmarksAdapter extends BaseAdapter {
             originalUrlNoQuery, urlNoQuery, originalUrl, url };
         String where = BookmarkColumns.URL + " == ? OR "
                 + BookmarkColumns.URL + " == ? OR "
-                + BookmarkColumns.URL + " GLOB ? || '*' OR "
-                + BookmarkColumns.URL + " GLOB ? || '*'";
+                + BookmarkColumns.URL + " LIKE ? || '%' OR "
+                + BookmarkColumns.URL + " LIKE ? || '%'";
         if (onlyBookmarks) {
             where = "(" + where + ") AND " + BookmarkColumns.BOOKMARK + " == 1";
         }
@@ -383,11 +384,17 @@ class BrowserBookmarksAdapter extends BaseAdapter {
 
     /* package */ void populateBookmarkItem(BookmarkItem b, int position) {
         mCursor.moveToPosition(position - mExtraOffset);
-        b.setUrl(mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX));
+        String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
+        b.setUrl(url);
         b.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
         byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
-        Bitmap bitmap = (null == data) ? null :
-                BitmapFactory.decodeByteArray(data, 0, data.length);
+        Bitmap bitmap = null;
+        if (data == null) {
+            bitmap = CombinedBookmarkHistoryActivity.getIconListenerSet()
+                    .getFavicon(url);
+        } else {
+            bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
+        }
         b.setFavicon(bitmap);
     }
 
@@ -421,21 +428,24 @@ class BrowserBookmarksAdapter extends BaseAdapter {
                 // This is to create a bookmark for the current page.
                 holder.setVisibility(View.VISIBLE);
                 tv.setText(mCurrentTitle);
-                // FIXME: Want to show the screenshot of the current page
-                thumb.setImageResource(R.drawable.blank);
+
+                if (mCurrentThumbnail != null) {
+                    thumb.setImageBitmap(mCurrentThumbnail);
+                } else {
+                    thumb.setImageResource(
+                            R.drawable.browser_thumbnail);
+                }
                 return convertView;
             }
             holder.setVisibility(View.GONE);
             mCursor.moveToPosition(position - mExtraOffset);
             tv.setText(mCursor.getString(
                     Browser.HISTORY_PROJECTION_TITLE_INDEX));
-            byte[] data = mCursor.getBlob(
-                    Browser.HISTORY_PROJECTION_THUMBNAIL_INDEX);
-            if (data == null) {
-                thumb.setImageResource(R.drawable.ic_launcher_shortcut_browser_bookmark);
+            Bitmap thumbnail = getBitmap(Browser.HISTORY_PROJECTION_THUMBNAIL_INDEX, position);
+            if (thumbnail == null) {
+                thumb.setImageResource(R.drawable.browser_thumbnail);
             } else {
-                thumb.setImageBitmap(
-                        BitmapFactory.decodeByteArray(data, 0, data.length));
+                thumb.setImageBitmap(thumbnail);
             }
 
             return convertView;
@@ -530,21 +540,15 @@ class BrowserBookmarksAdapter extends BaseAdapter {
     private void bind(BookmarkItem b, int position) {
         mCursor.moveToPosition(position- mExtraOffset);
 
-        String title = mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX);
-        if (title.length() > BrowserSettings.MAX_TEXTVIEW_LEN) {
-            title = title.substring(0, BrowserSettings.MAX_TEXTVIEW_LEN);
-        }
-        b.setName(title);
+        b.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
         String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
-        if (url.length() > BrowserSettings.MAX_TEXTVIEW_LEN) {
-            url = url.substring(0, BrowserSettings.MAX_TEXTVIEW_LEN);
-        }
         b.setUrl(url);
         byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
         if (data != null) {
             b.setFavicon(BitmapFactory.decodeByteArray(data, 0, data.length));
         } else {
-            b.setFavicon(null);
+            b.setFavicon(CombinedBookmarkHistoryActivity.getIconListenerSet()
+                    .getFavicon(url));
         }
     }