/*
* Licensed Materials - Property of IBM
* © Copyright IBM Corporation 2015. All Rights Reserved.
*/
package com.ibm.mil.readyapps.telco.mytext;
import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import com.ibm.mil.readyapps.telco.cycles.Cycle;
import com.ibm.mil.readyapps.telco.cycles.CycleBinder;
import com.ibm.mil.readyapps.telco.offers.Offer;
import com.ibm.mil.readyapps.telco.offers.AcceptedOfferBinder;
import com.ibm.mil.readyapps.telco.usage.IncomingOutgoingBinder;
import com.ibm.mil.readyapps.telco.usage.Usage;
import com.ibm.mil.readyapps.telco.utils.RecyclerDivider;
import com.ibm.mil.readyapps.telco.utils.RecyclerDividerBinder;
import com.yqritc.recyclerviewmultipleviewtypesadapter.ListBindAdapter;
import java.util.List;
/**
* Adapter for Text tab RecyclerView. Extends class from
* RecyclerView-MultipleViewTypesAdapter GitHub library.
*/
class TextRecyclerAdapter extends ListBindAdapter {
private static final int TYPE_CURRENT_CYCLE = 0;
private static final int TYPE_USAGE = 1;
private static final int TYPE_DATA_HEADER = 2;
private static final int TYPE_CARDS = 3;
private static CycleBinder cycleBinder;
private final AcceptedOfferBinder offerBinder;
/**
* Constructor for setting up the Talk adapter
*
* @param layout the coordinator layout needs to be passed down to binder
* to support moving FAB button on click listeners from binder
* @param context needs to be passed down to binders to support loading resources
* like strings in binders
*/
public TextRecyclerAdapter(CoordinatorLayout layout, Context context) {
cycleBinder = new CycleBinder(this, layout, context);
IncomingOutgoingBinder dataUsageBinder = new IncomingOutgoingBinder(this, context);
RecyclerDividerBinder recyclerDividerBinder = new RecyclerDividerBinder(this);
offerBinder = new AcceptedOfferBinder(this, layout, context);
addAllBinder(cycleBinder, dataUsageBinder, recyclerDividerBinder, offerBinder);
}
/**
* Set cycle information in CycleBinder for the text cycle
*
* @param cycle instance to set
*/
public void setCycle(Cycle cycle) {
((CycleBinder) getDataBinder(TYPE_CURRENT_CYCLE)).add(cycle);
}
/**
* Set incoming/outgoing usage information in IncomingOutgoingBinder
*
* @param usage instance to set
*/
public void setIncomingOutgoing(Usage usage) {
((IncomingOutgoingBinder) getDataBinder(TYPE_USAGE)).add(usage);
}
/**
* Set the header for the binder
* pass RecyclerDivider instance to the RecyclerDividerBinder to update the view
*
* @param header instance to set
*/
public void setDividerHeader(RecyclerDivider header) {
((RecyclerDividerBinder) getDataBinder(TYPE_DATA_HEADER)).add(header);
}
/**
* Set all the available text offers to the AcceptedOfferBinder
*
* @param offers list of available offers
*/
public void setCardOffers(List<Offer> offers) {
((AcceptedOfferBinder) getDataBinder(TYPE_CARDS)).addAll(offers);
}
/**
* Set the offer to be removed from the AcceptedOfferBinder
*
* @param offer to be removed
*/
public void removeCardOffer(Offer offer) {
((AcceptedOfferBinder) getDataBinder(TYPE_CARDS)).remove(offer);
}
/**
* Add a new offer card in the binder.
*
* @param offer the offer to add
*/
public void setCardOffer(Offer offer) {
((AcceptedOfferBinder) getDataBinder(TYPE_CARDS)).addNewCard(offer);
}
/**
* @return the AcceptedOfferBinder instance
*/
public AcceptedOfferBinder getOfferBinder() {
return offerBinder;
}
/**
* @return the cycleBinder instance
*/
public CycleBinder getCycleBinder() {
return cycleBinder;
}
}