Ejemplo n.º 1
0
 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.browser_view);
   initView();
   initData();
 }
  @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;
  }
  /** 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);
        }
      }
    }
  }