package org.wikipedia.feed.becauseyouread;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.view.View;
import org.wikipedia.R;
import org.wikipedia.feed.view.CardHeaderView;
import org.wikipedia.feed.view.CardLargeHeaderView;
import org.wikipedia.feed.view.ListCardItemView;
import org.wikipedia.feed.view.ListCardRecyclerAdapter;
import org.wikipedia.feed.view.ListCardView;
import org.wikipedia.history.HistoryEntry;
import org.wikipedia.views.DefaultViewHolder;
import org.wikipedia.views.ItemTouchHelperSwipeAdapter;
import java.util.List;
public class BecauseYouReadCardView extends ListCardView<BecauseYouReadCard>
implements ItemTouchHelperSwipeAdapter.SwipeableView {
public BecauseYouReadCardView(Context context) {
super(context);
}
@Override public void setCard(@NonNull BecauseYouReadCard card) {
super.setCard(card);
header(card);
set(new RecyclerAdapter(card.items()));
}
private void header(@NonNull final BecauseYouReadCard card) {
int age = (int) card.daysOld();
String subtitle = getSubtitle(age);
CardHeaderView header = new CardHeaderView(getContext())
.setTitle(card.title())
.setSubtitle(subtitle)
.setImage(R.drawable.ic_restore_black_24dp)
.setImageCircleColor(R.color.gray_highlight)
.setCard(card)
.setCallback(getCallback());
header(header);
CardLargeHeaderView largeHeader = new CardLargeHeaderView(getContext())
.setTitle(card.pageTitle())
.setImage(card.image())
.onClickListener(new SelectPageCallbackAdapter(card));
largeHeader(largeHeader);
}
@VisibleForTesting @NonNull String getSubtitle(int age) {
if (age == 0) {
return getResources().getString(R.string.view_continue_reading_card_subtitle_today);
}
return getResources().getQuantityString(R.plurals.view_continue_reading_card_subtitle, age, age);
}
private class SelectPageCallbackAdapter implements OnClickListener {
@NonNull private final BecauseYouReadCard card;
SelectPageCallbackAdapter(@NonNull BecauseYouReadCard card) {
this.card = card;
}
@Override public void onClick(View view) {
if (getCallback() != null) {
getCallback().onSelectPage(card, new HistoryEntry(card.getPageTitle(),
HistoryEntry.SOURCE_FEED_BECAUSE_YOU_READ));
}
}
}
private class RecyclerAdapter extends ListCardRecyclerAdapter<BecauseYouReadItemCard> {
RecyclerAdapter(@NonNull List<BecauseYouReadItemCard> items) {
super(items);
}
@Nullable @Override protected ListCardItemView.Callback callback() {
return getCallback();
}
@Override
public void onBindViewHolder(DefaultViewHolder<ListCardItemView> holder, int i) {
BecauseYouReadItemCard card = item(i);
holder.getView().setCard(card)
.setHistoryEntry(new HistoryEntry(card.pageTitle(),
HistoryEntry.SOURCE_FEED_BECAUSE_YOU_READ));
}
}
}