Bug 1319274 - Part 2: Display a pin icon besides the Top Site title r=ahunt
MozReview-Commit-ID: BGpgJOeuRQn
--- 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));