@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo i = (AdapterView.AdapterContextMenuInfo) menuInfo; MenuInflater inflater = getMenuInflater(); if (mMostVisited) { inflater.inflate(R.menu.historycontext, menu); } else { inflater.inflate(R.menu.bookmarkscontext, menu); } if (0 == i.position && !mMostVisited) { menu.setGroupVisible(R.id.CONTEXT_MENU, false); if (mAddHeader == null) { mAddHeader = new AddNewBookmark(BrowserBookmarksPage.this); } else if (mAddHeader.getParent() != null) { ((ViewGroup) mAddHeader.getParent()).removeView(mAddHeader); } mAddHeader.setUrl(getIntent().getStringExtra("url")); menu.setHeaderView(mAddHeader); return; } if (mMostVisited) { if ((mViewMode == BookmarkViewMode.LIST && ((HistoryItem) i.targetView).isBookmark()) || mBookmarksAdapter.getIsBookmark(i.position)) { MenuItem item = menu.findItem(R.id.save_to_bookmarks_menu_id); item.setTitle(R.string.remove_from_bookmarks); } } else { // The historycontext menu has no ADD_MENU group. menu.setGroupVisible(R.id.ADD_MENU, false); } if (mDisableNewWindow) { menu.findItem(R.id.new_window_context_menu_id).setVisible(false); } if (mContextHeader == null) { mContextHeader = new BookmarkItem(BrowserBookmarksPage.this); } else if (mContextHeader.getParent() != null) { ((ViewGroup) mContextHeader.getParent()).removeView(mContextHeader); } if (mViewMode == BookmarkViewMode.GRID) { mBookmarksAdapter.populateBookmarkItem(mContextHeader, i.position); } else { BookmarkItem b = (BookmarkItem) i.targetView; b.copyTo(mContextHeader); } menu.setHeaderView(mContextHeader); }
@Override public boolean onContextItemSelected(MenuItem item) { // It is possible that the view has been canceled when we get to // this point as back has a higher priority if (mCanceled) { return true; } AdapterView.AdapterContextMenuInfo i = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); // If we have no menu info, we can't tell which item was selected. if (i == null) { return true; } switch (item.getItemId()) { case R.id.new_context_menu_id: saveCurrentPage(); break; case R.id.open_context_menu_id: loadUrl(i.position); break; case R.id.edit_context_menu_id: editBookmark(i.position); break; case R.id.shortcut_context_menu_id: final Intent send = createShortcutIntent(i.position); send.setAction(INSTALL_SHORTCUT); sendBroadcast(send); break; case R.id.delete_context_menu_id: if (mMostVisited) { Browser.deleteFromHistory(getContentResolver(), getUrl(i.position)); refreshList(); } else { displayRemoveBookmarkDialog(i.position); } break; case R.id.new_window_context_menu_id: openInNewWindow(i.position); break; case R.id.share_link_context_menu_id: BrowserActivity.sharePage( BrowserBookmarksPage.this, mBookmarksAdapter.getTitle(i.position), getUrl(i.position), getFavicon(i.position), mBookmarksAdapter.getScreenshot(i.position)); break; case R.id.copy_url_context_menu_id: copy(getUrl(i.position)); break; case R.id.homepage_context_menu_id: BrowserSettings.getInstance().setHomePage(this, getUrl(i.position)); Toast.makeText(this, R.string.homepage_set, Toast.LENGTH_LONG).show(); break; // Only for the Most visited page case R.id.save_to_bookmarks_menu_id: boolean isBookmark; String name; String url; if (mViewMode == BookmarkViewMode.GRID) { isBookmark = mBookmarksAdapter.getIsBookmark(i.position); name = mBookmarksAdapter.getTitle(i.position); url = mBookmarksAdapter.getUrl(i.position); } else { HistoryItem historyItem = ((HistoryItem) i.targetView); isBookmark = historyItem.isBookmark(); name = historyItem.getName(); url = historyItem.getUrl(); } // If the site is bookmarked, the item becomes remove from // bookmarks. if (isBookmark) { Bookmarks.removeFromBookmarks(this, getContentResolver(), url, name); } else { Browser.saveBookmark(this, name, url); } break; default: return super.onContextItemSelected(item); } return true; }