package cn.scau.scautreasure.ui;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.widget.ListView;
import com.devspark.appmsg.AppMsg;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.tjerkw.slideexpandable.library.SlideExpandableListAdapter;
import org.androidannotations.annotations.AfterInject;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.rest.RestService;
import org.springframework.web.client.HttpStatusCodeException;
import java.util.ArrayList;
import java.util.List;
import cn.scau.scautreasure.AppContext;
import cn.scau.scautreasure.R;
import cn.scau.scautreasure.adapter.CardRecordAdapter;
import cn.scau.scautreasure.api.CardApi;
import cn.scau.scautreasure.helper.UIHelper;
import cn.scau.scautreasure.model.CardRecordModel;
import static cn.scau.scautreasure.helper.UIHelper.LISTVIEW_EFFECT_MODE.EXPANDABLE_SWING;
/**
* User: special
* Date: 13-9-21
* Time: 下午3:55
* Mail: specialcyci@gmail.com
*/
@EFragment( R.layout.card )
public class Card extends CommonFragment {
@RestService CardApi api;
@ViewById( R.id.listView )
PullToRefreshListView pullListView;
private CardRecordAdapter cardadapter;
private SlideExpandableListAdapter exadapter;
private int page;
private int count;
private ArrayList<String> startAndEndDate;
private ActionBarActivity ctx;
@AfterInject
void init(){
ctx = getSherlockActivity();
setTitle(R.string.title_card);
tips_empty = R.string.tips_card_null;
}
@AfterViews
void initView(){
getSherlockActivity().getSupportActionBar().show();
pullListView.setOnRefreshListener(onRefreshListener);
startAndEndDate = getArguments().getStringArrayList("startAndEndDate");
UIHelper.getDialog(R.string.loading_default).show();
loadData(startAndEndDate);
}
/**
* listView下拉刷新;
*/
private PullToRefreshBase.OnRefreshListener onRefreshListener = new PullToRefreshBase.OnRefreshListener() {
@Override
public void onRefresh(PullToRefreshBase refreshView) {
if(page < Math.ceil(count/10)){
page++;
loadData(startAndEndDate);
}else{
AppMsg.makeText(getSherlockActivity(), R.string.tips_default_last, AppMsg.STYLE_CONFIRM).show();
refreshView.setRefreshing(false);
}
}
};
@UiThread
void showSuccessResult(CardRecordModel.RecordList l){
// new search
if(cardadapter == null){
count = l.getCount();
setListViewAdapter(l.getRecords());
String tips = getString(R.string.tips_card_record_count) + count;
AppMsg.makeText(getSherlockActivity(),tips,AppMsg.STYLE_INFO).show();
UIHelper.getDialog().dismiss();
}else{
// next page;
cardadapter.addAll(l.getRecords());
pullListView.onRefreshComplete();
cardadapter.notifyDataSetChanged();
adapter.notifyDataSetChanged();
pullListView.setRefreshing(false);
}
ActionBar actionBar = getSherlockActivity().getSupportActionBar();
actionBar.setSubtitle(getString(R.string.title_sub_card) + l.getAmount());
}
@Background( id = UIHelper.CANCEL_FLAG )
void loadData(Object... params) {
try{
ArrayList<String> param = (ArrayList<String>)params[0];
CardRecordModel.RecordList records;
if( param == null){
records = api.getToday(AppContext.userName, app.getEncodeCardPassword());
}else{
records = api.getHistory(AppContext.userName, app.getEncodeCardPassword(), param.get(0), param.get(1), page);
}
showSuccessResult(records);
}catch (HttpStatusCodeException e){
showErrorResult(ctx, e.getStatusCode().value());
}
}
private void setListViewAdapter(List<CardRecordModel> cards){
cardadapter = new CardRecordAdapter(getSherlockActivity(), R.layout.card_listitem,cards);
ListView lv = pullListView.getRefreshableView();
adapter = UIHelper.buildEffectAdapter(cardadapter, lv, EXPANDABLE_SWING);
pullListView.setAdapter(adapter);
}
}