@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 protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case BOOKMARKS_SAVE: if (resultCode == RESULT_OK) { Bundle extras; if (data != null && (extras = data.getExtras()) != null) { // If there are extras, then we need to save // the edited bookmark. This is done in updateRow() String title = extras.getString("title"); String url = extras.getString("url"); if (title != null && url != null) { mBookmarksAdapter.updateRow(extras); } } else { // extras == null then a new bookmark was added to // the database. refreshList(); } } break; default: break; } }
@Override public void handleMessage(Message msg) { switch (msg.what) { case SAVE_CURRENT_PAGE: saveCurrentPage(); break; case ADAPTER_CREATED: mBookmarksAdapter = (BrowserBookmarksAdapter) msg.obj; mBookmarksAdapter.switchViewMode(mViewMode); if (mGridPage != null) { mGridPage.setAdapter(mBookmarksAdapter); } if (mVerticalList != null) { mVerticalList.setAdapter(mBookmarksAdapter); } // Add our own listener in case there are favicons that // have yet to be loaded. if (mMostVisited) { IconListener listener = new IconListener() { public void onReceivedIcon(String url, Bitmap icon) { if (mGridPage != null) { mGridPage.setAdapter(mBookmarksAdapter); } if (mVerticalList != null) { mVerticalList.setAdapter(mBookmarksAdapter); } } }; CombinedBookmarkHistoryActivity.getIconListenerSet().addListener(listener); } break; } }
@Override public boolean onPrepareOptionsMenu(Menu menu) { boolean result = super.onPrepareOptionsMenu(menu); if (mCreateShortcut || mMostVisited || mBookmarksAdapter == null || mBookmarksAdapter.getCount() == 0) { // No need to show the menu if there are no items. return result; } MenuItem switchItem = menu.findItem(R.id.switch_mode_menu_id); int titleResId; int iconResId; if (mViewMode == BookmarkViewMode.GRID) { titleResId = R.string.switch_to_list; iconResId = R.drawable.ic_menu_list; } else { titleResId = R.string.switch_to_thumbnails; iconResId = R.drawable.ic_menu_thumbnail; } switchItem.setTitle(titleResId); switchItem.setIcon(iconResId); return true; }
@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; }
/** Delete the currently highlighted row. */ public void deleteBookmark(int position) { if (mBookmarksAdapter == null) return; mBookmarksAdapter.deleteRow(position); }
public String getBookmarkTitle(int position) { return mBookmarksAdapter == null ? null : mBookmarksAdapter.getTitle(position); }
private Bitmap getTouchIcon(int position) { return mBookmarksAdapter == null ? null : mBookmarksAdapter.getTouchIcon(position); }
/** Return the favicon of the currently highlighted row. */ public Bitmap getFavicon(int position) { return mBookmarksAdapter == null ? null : mBookmarksAdapter.getFavicon(position); }
/** Return the url of the currently highlighted row. */ public String getUrl(int position) { return mBookmarksAdapter == null ? null : mBookmarksAdapter.getUrl(position); }
/** Return a hashmap representing the currently highlighted row. */ public Bundle getRow(int position) { return mBookmarksAdapter == null ? null : mBookmarksAdapter.getRow(position); }
/** Refresh the shown list after the database has changed. */ private void refreshList() { if (mBookmarksAdapter == null) return; mBookmarksAdapter.refreshList(); }
/** Set the ContentView to be either the grid of thumbnails or the vertical list. */ private void switchViewMode(BookmarkViewMode viewMode) { if (mViewMode == viewMode) { return; } mViewMode = viewMode; // 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.apply(); if (mBookmarksAdapter != null) { mBookmarksAdapter.switchViewMode(viewMode); } if (mViewMode == BookmarkViewMode.GRID) { if (mGridPage == null) { mGridPage = new GridView(this); if (mBookmarksAdapter != null) { mGridPage.setAdapter(mBookmarksAdapter); } mGridPage.setOnItemClickListener(mListener); mGridPage.setNumColumns(GridView.AUTO_FIT); mGridPage.setColumnWidth(BrowserActivity.getDesiredThumbnailWidth(this)); mGridPage.setFocusable(true); mGridPage.setFocusableInTouchMode(true); mGridPage.setSelector(android.R.drawable.gallery_thumb); float density = getResources().getDisplayMetrics().density; mGridPage.setVerticalSpacing((int) (14 * density)); mGridPage.setHorizontalSpacing((int) (8 * density)); mGridPage.setStretchMode(GridView.STRETCH_SPACING); mGridPage.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET); mGridPage.setDrawSelectorOnTop(true); if (mMostVisited) { mGridPage.setEmptyView(mEmptyView); } if (!mCreateShortcut) { mGridPage.setOnCreateContextMenuListener(this); } } addContentView(mGridPage, FULL_SCREEN_PARAMS); if (mVerticalList != null) { ViewGroup parent = (ViewGroup) mVerticalList.getParent(); if (parent != null) { parent.removeView(mVerticalList); } } } else { if (null == mVerticalList) { ListView listView = new ListView(this); if (mBookmarksAdapter != null) { listView.setAdapter(mBookmarksAdapter); } listView.setDrawSelectorOnTop(false); listView.setVerticalScrollBarEnabled(true); listView.setOnItemClickListener(mListener); if (mMostVisited) { listView.setEmptyView(mEmptyView); } if (!mCreateShortcut) { listView.setOnCreateContextMenuListener(this); } mVerticalList = listView; } addContentView(mVerticalList, FULL_SCREEN_PARAMS); if (mGridPage != null) { ViewGroup parent = (ViewGroup) mGridPage.getParent(); if (parent != null) { parent.removeView(mGridPage); } } } }