package cn.scau.scautreasure.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import cn.scau.scautreasure.R;
import cn.scau.scautreasure.model.BusSiteModel;
import cn.scau.scautreasure.model.BusStateModel;
import org.androidannotations.annotations.EView;
import org.androidannotations.annotations.EViewGroup;
import org.androidannotations.annotations.RootContext;
import java.util.ArrayList;
import java.util.List;
/**
* 校巴报站的控件
*
* User: special
* Date: 13-8-23
* Time: 下午7:53
* Mail: specialcyci@gmail.com
*/
@EViewGroup
public class BusWidget extends TableLayout {
Context ctx;
public BusWidget(Context context) {
super(context);
init(context);
}
public BusWidget(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context){
this.ctx = context;
}
/**
* set up data and view;
* @param siteList
* @param stateList
*/
public void initView(List<BusSiteModel> siteList,List<BusStateModel> stateList){
removeAllViews();
for(BusSiteModel site : siteList){
BusStationWidget stationWidget = BusStationWidget_.build(ctx);
stationWidget.setStationAndIndex(site.getSite(),site.getId());
addView(stationWidget);
if (stateList != null)
for (BusStateModel state : stateList){
// if the bus near the stop, add view after the station;
if(isMatchStop(site,state) && isMatchDirection(site,state)){
BusStateWidget stateWidget = BusStateWidget_.build(ctx);
stateWidget.setBusAndTime(state.getVno(),state.getTime());
addView(stateWidget);
}
}
}
}
/**
* if is the site and state match the stop;
* @param site
* @param state
* @return
*/
private boolean isMatchStop(BusSiteModel site,BusStateModel state){
if( state.getNearestBusStop().equals(site.getSite())){
return true;
}else{
return false;
}
}
/**
* if is the site and state match the direction;
* @param site
* @param state
* @return
*/
private boolean isMatchDirection(BusSiteModel site,BusStateModel state){
final String BOTH_DIRECTION = "BOTH_DIRECT";
final String UP_DIRECTION = "UP_DIRECT";
final String DOWN_DIRECTION = "DOWN_DIRECT";
if(site.getDirection().equals(BOTH_DIRECTION)){
return true;
}else if(state.getDirection().equals("up") && site.getDirection().equals(UP_DIRECTION)){
return true;
}else if(state.getDirection().equals("down") && site.getDirection().equals(DOWN_DIRECTION)){
return true;
}
return false;
}
}