public void editSite() {
    int position = mTopSitesGrid.getSelectedPosition();
    View v = mTopSitesGrid.getChildAt(position);

    TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
    editSite(holder.getUrl(), position);
  }
Esempio n. 2
0
  public void pinSite() {
    final int position = mTopSitesGrid.getSelectedPosition();
    View v = mTopSitesGrid.getChildAt(position);

    TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
    final String url = holder.url;
    final String title = holder.titleView.getText().toString();
    holder.setPinned(true);

    // update the database on a background thread
    (new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) {
          @Override
          public Void doInBackground(Void... params) {
            final ContentResolver resolver = mActivity.getContentResolver();
            BrowserDB.pinSite(
                resolver, url, (title == null || TextUtils.isEmpty(title) ? url : title), position);
            return null;
          }

          @Override
          public void onPostExecute(Void v) {
            update(EnumSet.of(UpdateFlags.TOP_SITES));
          }
        })
        .execute();
  }
Esempio n. 3
0
  public void unpinAllSites() {
    final ContentResolver resolver = mActivity.getContentResolver();

    // Clear the view quickly to make things appear responsive
    for (int i = 0; i < mTopSitesGrid.getChildCount(); i++) {
      View v = mTopSitesGrid.getChildAt(i);
      TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
      clearThumbnail(holder);
    }

    (new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) {
          @Override
          public Void doInBackground(Void... params) {
            ContentResolver resolver = mActivity.getContentResolver();
            BrowserDB.unpinAllSites(resolver);
            return null;
          }

          @Override
          public void onPostExecute(Void v) {
            update(EnumSet.of(UpdateFlags.TOP_SITES));
          }
        })
        .execute();
  }
  private void updateTopSitesThumbnails(Map<String, Bitmap> thumbnails) {
    for (int i = 0; i < mTopSitesAdapter.getCount(); i++) {
      final View view = mTopSitesGrid.getChildAt(i);

      // The grid view might get temporarily out of sync with the
      // adapter refreshes (e.g. on device rotation)
      if (view == null) continue;

      Cursor c = (Cursor) mTopSitesAdapter.getItem(i);
      final String url = c.getString(c.getColumnIndex(URLColumns.URL));

      displayThumbnail(view, thumbnails.get(url));
    }

    mTopSitesGrid.invalidate();
  }
  /** Reinflates and updates all components of this view. */
  public void refresh() {
    if (mTopSitesAdapter != null) mTopSitesAdapter.notifyDataSetChanged();

    removeAllViews(); // We must remove the currently inflated view to allow for reinflation.
    inflate();
    mTopSitesGrid.setAdapter(
        mTopSitesAdapter); // mTopSitesGrid is a new instance (from loadTopSites()).
    update(AboutHomeContent.UpdateFlags.ALL); // Refresh all elements.
  }
  public void pinSite() {
    final int position = mTopSitesGrid.getSelectedPosition();
    View v = mTopSitesGrid.getChildAt(position);

    final TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
    holder.setPinned(true);

    // update the database on a background thread
    (new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) {
          @Override
          public Void doInBackground(Void... params) {
            final ContentResolver resolver = mActivity.getContentResolver();
            BrowserDB.pinSite(resolver, holder.getUrl(), holder.getTitle(), position);
            return null;
          }
        })
        .execute();
  }
  private void clearThumbnailsWithUrl(final String url) {
    for (int i = 0; i < mTopSitesAdapter.getCount(); i++) {
      final View view = mTopSitesGrid.getChildAt(i);
      final TopSitesViewHolder holder = (TopSitesViewHolder) view.getTag();

      if (holder.getUrl().equals(url)) {
        clearThumbnail(holder);
      }
    }
  }
 public void unpinSite(final UnpinFlags flags) {
   final int position = mTopSitesGrid.getSelectedPosition();
   final View v = mTopSitesGrid.getChildAt(position);
   final TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
   final String url = holder.getUrl();
   // Quickly update the view so that there isn't as much lag between the request and response
   clearThumbnail(holder);
   (new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) {
         @Override
         public Void doInBackground(Void... params) {
           final ContentResolver resolver = mActivity.getContentResolver();
           BrowserDB.unpinSite(resolver, position);
           if (flags == UnpinFlags.REMOVE_HISTORY) {
             BrowserDB.removeHistoryEntry(resolver, url);
           }
           return null;
         }
       })
       .execute();
 }
  private void updateTopSitesThumbnails(Map<String, Bitmap> thumbnails) {
    for (int i = 0; i < mTopSitesAdapter.getCount(); i++) {
      final View view = mTopSitesGrid.getChildAt(i);

      // The grid view might get temporarily out of sync with the
      // adapter refreshes (e.g. on device rotation)
      if (view == null) continue;

      TopSitesViewHolder holder = (TopSitesViewHolder) view.getTag();
      final String url = holder.getUrl();
      if (TextUtils.isEmpty(url)) {
        holder.thumbnailView.setImageResource(R.drawable.abouthome_thumbnail_add);
        holder.thumbnailView.setScaleType(ImageView.ScaleType.FIT_CENTER);
      } else {
        displayThumbnail(view, thumbnails.get(url));
      }
    }

    mTopSitesGrid.invalidate();
  }
Esempio n. 10
0
  public void unpinSite() {
    final int position = mTopSitesGrid.getSelectedPosition();
    View v = mTopSitesGrid.getChildAt(position);
    TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();

    // Quickly update the view so that there isn't as much lag between the request and response
    clearThumbnail(holder);
    (new GeckoAsyncTask<Void, Void, Void>(GeckoApp.mAppContext, GeckoAppShell.getHandler()) {
          @Override
          public Void doInBackground(Void... params) {
            ContentResolver resolver = mActivity.getContentResolver();
            BrowserDB.unpinSite(resolver, position);
            return null;
          }

          @Override
          public void onPostExecute(Void v) {
            update(EnumSet.of(UpdateFlags.TOP_SITES));
          }
        })
        .execute();
  }
  private void inflate() {
    mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mInflater.inflate(R.layout.abouthome_content, this);

    mTopSitesGrid = (TopSitesGridView) findViewById(R.id.top_sites_grid);
    mTopSitesGrid.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Cursor c = (Cursor) parent.getItemAtPosition(position);

            String spec = c.getString(c.getColumnIndex(URLColumns.URL));
            Log.i(LOGTAG, "clicked: " + spec);

            if (mUriLoadCallback != null) mUriLoadCallback.callback(spec);
          }
        });

    mPromoBox = (AboutHomePromoBox) findViewById(R.id.promo_box);
    mAddons = (AboutHomeSection) findViewById(R.id.recommended_addons);
    mLastTabs = (AboutHomeSection) findViewById(R.id.last_tabs);
    mRemoteTabs = (AboutHomeSection) findViewById(R.id.remote_tabs);

    mAddons.setOnMoreTextClickListener(
        new View.OnClickListener() {
          public void onClick(View v) {
            if (mUriLoadCallback != null)
              mUriLoadCallback.callback("https://addons.mozilla.org/android");
          }
        });

    mRemoteTabs.setOnMoreTextClickListener(
        new View.OnClickListener() {
          public void onClick(View v) {
            mActivity.showRemoteTabs();
          }
        });

    setTopSitesConstants();
  }
  private void inflate() {
    mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mInflater.inflate(R.layout.abouthome_content, this);

    mTopSitesGrid = (TopSitesGridView) findViewById(R.id.top_sites_grid);
    mTopSitesGrid.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
            String spec = holder.getUrl();

            // If we don't have a url, this must be an empty row. Show the edit dialog box
            if (TextUtils.isEmpty(spec)) {
              editSite(spec, position);
              return;
            }

            if (mUriLoadCallback != null) mUriLoadCallback.callback(spec);
          }
        });

    mTopSitesGrid.setOnCreateContextMenuListener(
        new View.OnCreateContextMenuListener() {
          public void onCreateContextMenu(
              ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
            mTopSitesGrid.setSelectedPosition(info.position);

            MenuInflater inflater = mActivity.getMenuInflater();
            inflater.inflate(R.menu.abouthome_topsites_contextmenu, menu);

            // If nothing is pinned at all, hide both clear items
            // We can assume that the adapter count and view count are the same in this case because
            // our grid view
            // force all items to be visible all the time
            View view = mTopSitesGrid.getChildAt(info.position);
            TopSitesViewHolder holder = (TopSitesViewHolder) view.getTag();
            if (TextUtils.isEmpty(holder.getUrl())) {
              menu.findItem(R.id.abouthome_topsites_pin).setVisible(false);
              menu.findItem(R.id.abouthome_topsites_unpin).setVisible(false);
              menu.findItem(R.id.abouthome_topsites_remove).setVisible(false);
            } else if (holder.isPinned()) {
              menu.findItem(R.id.abouthome_topsites_pin).setVisible(false);
            } else {
              menu.findItem(R.id.abouthome_topsites_unpin).setVisible(false);
            }
          }
        });

    mPromoBox = (AboutHomePromoBox) findViewById(R.id.promo_box);
    mAddons = (AboutHomeSection) findViewById(R.id.recommended_addons);
    mLastTabs = (AboutHomeSection) findViewById(R.id.last_tabs);
    mRemoteTabs = (AboutHomeSection) findViewById(R.id.remote_tabs);

    mAddons.setOnMoreTextClickListener(
        new View.OnClickListener() {
          public void onClick(View v) {
            if (mUriLoadCallback != null)
              mUriLoadCallback.callback("https://addons.mozilla.org/android");
          }
        });

    mRemoteTabs.setOnMoreTextClickListener(
        new View.OnClickListener() {
          public void onClick(View v) {
            mActivity.showRemoteTabs();
          }
        });

    setTopSitesConstants();
  }
Esempio n. 13
0
  private void inflate() {
    mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mInflater.inflate(R.layout.abouthome_content, this);

    mTopSitesGrid = (TopSitesGridView) findViewById(R.id.top_sites_grid);
    mTopSitesGrid.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag();
            String spec = holder.url;

            // If we don't have a url, this must be an empty row. Show the edit dialog box
            if (TextUtils.isEmpty(spec)) {
              editSite(spec, position);
              return;
            }

            if (mUriLoadCallback != null) mUriLoadCallback.callback(spec);
          }
        });

    mTopSitesGrid.setOnCreateContextMenuListener(
        new View.OnCreateContextMenuListener() {
          public void onCreateContextMenu(
              ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
            mTopSitesGrid.setSelectedPosition(info.position);

            MenuInflater inflater = mActivity.getMenuInflater();
            inflater.inflate(R.menu.abouthome_topsites_contextmenu, menu);

            // If nothing is pinned at all, hide both clear items
            TopSitesCursorWrapper cursor = (TopSitesCursorWrapper) mTopSitesAdapter.getCursor();
            if (!cursor.hasPinnedSites()) {
              menu.findItem(R.id.abouthome_topsites_unpin).setVisible(false);
            } else {
              PinnedSite site = cursor.getPinnedSite(info.position);
              if (site == null) {
                // If there's nothing pinned here, hide the clear item
                menu.findItem(R.id.abouthome_topsites_unpin).setVisible(false);
              } else {
                menu.findItem(R.id.abouthome_topsites_pin).setVisible(false);
              }
            }
          }
        });

    mPromoBox = (AboutHomePromoBox) findViewById(R.id.promo_box);
    mAddons = (AboutHomeSection) findViewById(R.id.recommended_addons);
    mLastTabs = (AboutHomeSection) findViewById(R.id.last_tabs);
    mRemoteTabs = (AboutHomeSection) findViewById(R.id.remote_tabs);

    mAddons.setOnMoreTextClickListener(
        new View.OnClickListener() {
          public void onClick(View v) {
            if (mUriLoadCallback != null)
              mUriLoadCallback.callback("https://addons.mozilla.org/android");
          }
        });

    mRemoteTabs.setOnMoreTextClickListener(
        new View.OnClickListener() {
          public void onClick(View v) {
            mActivity.showRemoteTabs();
          }
        });

    setTopSitesConstants();
  }