OSDN Git Service

Deprecate fill_parent and introduce match_parent.
[android-x86/packages-apps-Browser.git] / src / com / android / browser / BrowserHistoryPage.java
index 335d8fe..57ea879 100644 (file)
@@ -25,6 +25,7 @@ import android.database.ContentObserver;
 import android.database.Cursor;
 import android.database.DataSetObserver;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.ServiceManager;
@@ -32,7 +33,6 @@ import android.provider.Browser;
 import android.text.IClipboard;
 import android.util.Log;
 import android.view.ContextMenu;
-import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -44,14 +44,12 @@ import android.view.ContextMenu.ContextMenuInfo;
 import android.view.ViewStub;
 import android.webkit.DateSorter;
 import android.webkit.WebIconDatabase.IconListener;
-import android.widget.AdapterView;
 import android.widget.ExpandableListAdapter;
 import android.widget.ExpandableListView;
 import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import java.util.List;
 import java.util.Vector;
 
 /**
@@ -61,7 +59,7 @@ import java.util.Vector;
 public class BrowserHistoryPage extends ExpandableListActivity {
     private HistoryAdapter          mAdapter;
     private DateSorter              mDateSorter;
-    private boolean                 mMaxTabsOpen;
+    private boolean                 mDisableNewWindow;
     private HistoryItem             mContextHeader;
 
     private final static String LOGTAG = "browser";
@@ -114,8 +112,8 @@ public class BrowserHistoryPage extends ExpandableListActivity {
         final ExpandableListView list = getExpandableListView();
         list.setOnCreateContextMenuListener(this);
         View v = new ViewStub(this, R.layout.empty_history);
-        addContentView(v, new LayoutParams(LayoutParams.FILL_PARENT,
-                LayoutParams.FILL_PARENT));
+        addContentView(v, new LayoutParams(LayoutParams.MATCH_PARENT,
+                LayoutParams.MATCH_PARENT));
         list.setEmptyView(v);
         // Do not post the runnable if there is nothing in the list.
         if (list.getExpandableListAdapter().getGroupCount() > 0) {
@@ -129,8 +127,9 @@ public class BrowserHistoryPage extends ExpandableListActivity {
                 }
             });
         }
-        mMaxTabsOpen = getIntent().getBooleanExtra("maxTabsOpen", false);
-        CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+        mDisableNewWindow = getIntent().getBooleanExtra("disable_new_window",
+                false);
+        CombinedBookmarkHistoryActivity.getIconListenerSet()
                 .addListener(mIconReceiver);
         
         // initialize the result to canceled, so that if the user just presses
@@ -139,6 +138,13 @@ public class BrowserHistoryPage extends ExpandableListActivity {
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        CombinedBookmarkHistoryActivity.getIconListenerSet()
+                .removeListener(mIconReceiver);
+    }
+
+    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
         MenuInflater inflater = getMenuInflater();
@@ -193,9 +199,10 @@ public class BrowserHistoryPage extends ExpandableListActivity {
         historyItem.copyTo(mContextHeader);
         menu.setHeaderView(mContextHeader);
 
-        // Only show open in new tab if we have not maxed out available tabs
-        menu.findItem(R.id.new_window_context_menu_id).setVisible(!mMaxTabsOpen);
-        
+        // Only show open in new tab if it was not explicitly disabled
+        if (mDisableNewWindow) {
+            menu.findItem(R.id.new_window_context_menu_id).setVisible(false);
+        }
         // For a bookmark, provide the option to remove it from bookmarks
         if (historyItem.isBookmark()) {
             MenuItem item = menu.findItem(R.id.save_to_bookmarks_menu_id);
@@ -228,15 +235,16 @@ public class BrowserHistoryPage extends ExpandableListActivity {
             case R.id.save_to_bookmarks_menu_id:
                 if (historyItem.isBookmark()) {
                     Bookmarks.removeFromBookmarks(this, getContentResolver(),
-                            url);
+                            url, title);
                 } else {
                     Browser.saveBookmark(this, title, url);
                 }
                 return true;
             case R.id.share_link_context_menu_id:
-                Browser.sendString(this, url);
+                Browser.sendString(this, url,
+                        getText(R.string.choosertitle_sharevia).toString());
                 return true;
-            case R.id.copy_context_menu_id:
+            case R.id.copy_url_context_menu_id:
                 copy(url);
                 return true;
             case R.id.delete_context_menu_id:
@@ -407,6 +415,8 @@ public class BrowserHistoryPage extends ExpandableListActivity {
             } else {
                 item = (HistoryItem) convertView;
             }
+            // Bail early if the Cursor is closed.
+            if (mCursor.isClosed()) return item;
             int index = childPosition;
             for (int i = 0; i < groupPosition; i++) {
                 index += mItemMap[i];
@@ -415,8 +425,14 @@ public class BrowserHistoryPage extends ExpandableListActivity {
             item.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
             String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
             item.setUrl(url);
-            item.setFavicon(CombinedBookmarkHistoryActivity.getIconListenerSet(
-                    getContentResolver()).getFavicon(url));
+            byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
+            if (data != null) {
+                item.setFavicon(BitmapFactory.decodeByteArray(data, 0,
+                        data.length));
+            } else {
+                item.setFavicon(CombinedBookmarkHistoryActivity
+                        .getIconListenerSet().getFavicon(url));
+            }
             item.setIsBookmark(1 ==
                     mCursor.getInt(Browser.HISTORY_PROJECTION_BOOKMARK_INDEX));
             return item;
@@ -498,7 +514,7 @@ public class BrowserHistoryPage extends ExpandableListActivity {
         }
 
         public boolean isEmpty() {
-            return mCursor.getCount() == 0;
+            return mCursor.isClosed() || mCursor.getCount() == 0;
         }
     }
 }