Bug 1319274 - Part 2: Display a pin icon besides the Top Site title r=ahunt draft
authorGrisha Kruglov <gkruglov@mozilla.com>
Thu, 01 Dec 2016 19:35:02 -0800
changeset 449766 e4a2f46f91c85bb4a7071361ba9da7d69f4d93da
parent 449765 763633fca5f9f606a8f6cfd1f4a4332273c34dee
child 449767 a86893a235ee7c6c7d2215b9c8a3b56f986480a9
push id38649
push userbmo:gkruglov@mozilla.com
push dateThu, 15 Dec 2016 00:24:34 +0000
reviewersahunt
bugs1319274
milestone53.0a1
Bug 1319274 - Part 2: Display a pin icon besides the Top Site title r=ahunt MozReview-Commit-ID: BGpgJOeuRQn
mobile/android/base/java/org/mozilla/gecko/home/activitystream/topsites/TopSitesCard.java
mobile/android/base/java/org/mozilla/gecko/home/activitystream/topsites/TopSitesPageAdapter.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/topsites/TopSitesCard.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/topsites/TopSitesCard.java
@@ -1,25 +1,27 @@
 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 package org.mozilla.gecko.home.activitystream.topsites;
 
 import android.graphics.Color;
+import android.support.v4.widget.TextViewCompat;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.activitystream.ActivityStream;
+import org.mozilla.gecko.db.BrowserContract;
 import org.mozilla.gecko.home.HomePager;
 import org.mozilla.gecko.home.activitystream.menu.ActivityStreamContextMenu;
 import org.mozilla.gecko.icons.IconCallback;
 import org.mozilla.gecko.icons.IconResponse;
 import org.mozilla.gecko.icons.Icons;
 import org.mozilla.gecko.util.DrawableUtil;
 import org.mozilla.gecko.util.ViewUtil;
 import org.mozilla.gecko.util.TouchTargetUtil;
@@ -74,16 +76,20 @@ class TopSitesCard extends RecyclerView.
             ongoingIconLoad.cancel(true);
         }
 
         ongoingIconLoad = Icons.with(itemView.getContext())
                 .pageUrl(topSite.url)
                 .skipNetwork()
                 .build()
                 .execute(this);
+
+        final int pinResourceId = (topSite.type == BrowserContract.TopSites.TYPE_PINNED ?
+                R.drawable.pin : 0);
+        TextViewCompat.setCompoundDrawablesRelativeWithIntrinsicBounds(title, pinResourceId, 0, 0, 0);
     }
 
     @Override
     public void onIconResponse(IconResponse response) {
         faviconView.updateImage(response);
 
         final int tintColor = !response.hasColor() || response.getColor() == Color.WHITE ? Color.LTGRAY : Color.WHITE;
 
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/topsites/TopSitesPageAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/topsites/TopSitesPageAdapter.java
@@ -20,21 +20,23 @@ import org.mozilla.gecko.home.HomePager;
 import java.util.ArrayList;
 import java.util.List;
 
 public class TopSitesPageAdapter extends RecyclerView.Adapter<TopSitesCard> {
     static final class TopSite {
         public final long id;
         public final String url;
         public final String title;
+        public final int type;
 
-        TopSite(long id, String url, String title) {
+        TopSite(long id, String url, String title, int type) {
             this.id = id;
             this.url = url;
             this.title = title;
+            this.type = type;
         }
     }
 
     private List<TopSite> topSites;
     private int tiles;
     private int tilesWidth;
     private int tilesHeight;
     private int textHeight;
@@ -72,18 +74,19 @@ public class TopSitesPageAdapter extends
         for (int i = 0; i < tiles && startIndex + i < cursor.getCount(); i++) {
             cursor.moveToPosition(startIndex + i);
 
             // The Combined View only contains pages that have been visited at least once, i.e. any
             // page in the TopSites query will contain a HISTORY_ID. _ID however will be 0 for all rows.
             final long id = cursor.getLong(cursor.getColumnIndexOrThrow(BrowserContract.Combined.HISTORY_ID));
             final String url = cursor.getString(cursor.getColumnIndexOrThrow(BrowserContract.Combined.URL));
             final String title = cursor.getString(cursor.getColumnIndexOrThrow(BrowserContract.Combined.TITLE));
+            final int type = cursor.getInt(cursor.getColumnIndexOrThrow(BrowserContract.TopSites.TYPE));
 
-            topSites.add(new TopSite(id, url, title));
+            topSites.add(new TopSite(id, url, title, type));
         }
 
         notifyDataSetChanged();
     }
 
     @Override
     public void onBindViewHolder(TopSitesCard holder, int position) {
         holder.bind(topSites.get(position));