Bug 1301466 - Make Activity Stream highlights clickable. r=ahunt

MozReview-Commit-ID: 1kVxu8aCdiC

--HG--
extra : rebase_source : cc27dc064df354d2095e764f7ced9954fbabcd97
This commit is contained in:
Sebastian Kaspari 2016-10-05 20:19:29 +02:00
parent 249bd223a6
commit 5f32403b2b
2 changed files with 28 additions and 1 deletions

View File

@ -12,6 +12,8 @@ import android.support.v4.content.Loader;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import org.mozilla.gecko.GeckoProfile;
@ -20,6 +22,7 @@ import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.home.HomePager;
import org.mozilla.gecko.home.SimpleCursorLoader;
import org.mozilla.gecko.home.activitystream.topsites.TopSitesPagerAdapter;
import org.mozilla.gecko.widget.RecyclerViewClickSupport;
public class ActivityStream extends FrameLayout {
private final StreamRecyclerAdapter adapter;
@ -39,6 +42,9 @@ public class ActivityStream extends FrameLayout {
rv.setAdapter(adapter);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
rv.setHasFixedSize(true);
RecyclerViewClickSupport.addTo(rv)
.setOnItemClickListener(adapter);
}
void setOnUrlOpenListener(HomePager.OnUrlOpenListener listener) {

View File

@ -7,14 +7,19 @@ package org.mozilla.gecko.home.activitystream;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.mozilla.gecko.db.BrowserContract;
import org.mozilla.gecko.home.HomePager;
import org.mozilla.gecko.home.activitystream.StreamItem.BottomPanel;
import org.mozilla.gecko.home.activitystream.StreamItem.HighlightItem;
import org.mozilla.gecko.home.activitystream.StreamItem.TopPanel;
import org.mozilla.gecko.widget.RecyclerViewClickSupport;
public class StreamRecyclerAdapter extends RecyclerView.Adapter<StreamItem> {
import java.util.EnumSet;
public class StreamRecyclerAdapter extends RecyclerView.Adapter<StreamItem> implements RecyclerViewClickSupport.OnItemClickListener {
private Cursor highlightsCursor;
private Cursor topSitesCursor;
@ -74,6 +79,22 @@ public class StreamRecyclerAdapter extends RecyclerView.Adapter<StreamItem> {
}
}
@Override
public void onItemClicked(RecyclerView recyclerView, int position, View v) {
if (position < 1) {
// The header contains top sites and has its own click handling.
return;
}
highlightsCursor.moveToPosition(
translatePositionToCursor(position));
final String url = highlightsCursor.getString(
highlightsCursor.getColumnIndexOrThrow(BrowserContract.Combined.URL));
onUrlOpenListener.onUrlOpen(url, EnumSet.of(HomePager.OnUrlOpenListener.Flags.ALLOW_SWITCH_TO_TAB));
}
@Override
public int getItemCount() {
final int highlightsCount;