public void editSite() { int position = mTopSitesGrid.getSelectedPosition(); View v = mTopSitesGrid.getChildAt(position); TopSitesViewHolder holder = (TopSitesViewHolder) v.getTag(); editSite(holder.getUrl(), position); }
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(); }
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(); }
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(); }
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(); }