package cn.scau.scautreasure.ui;
import android.content.DialogInterface;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import com.devspark.appmsg.AppMsg;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.App;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.rest.RestService;
import org.androidannotations.api.BackgroundExecutor;
import org.springframework.web.client.HttpStatusCodeException;
import cn.scau.scautreasure.AppContext;
import cn.scau.scautreasure.R;
import cn.scau.scautreasure.adapter.BookDetailAdapter;
import cn.scau.scautreasure.api.LibraryApi;
import cn.scau.scautreasure.helper.UIHelper;
import cn.scau.scautreasure.util.CryptUtil;
import static cn.scau.scautreasure.helper.UIHelper.LISTVIEW_EFFECT_MODE.ALPHA;
/**
* 搜书图书后,获取详细信息;
* User: special
* Date: 13-8-18
* Time: 下午10:42
* Mail: specialcyci@gmail.com
*/
@EActivity( R.layout.bookdetail)
public class BookDetail extends CommonActivity implements DialogInterface.OnCancelListener{
@App AppContext app;
@RestService LibraryApi api;
@Extra String bookName;
@Extra String url;
private BaseAdapter adapter;
@AfterViews
void init(){
getSupportActionBar().setTitle(bookName);
UIHelper.getDialog(R.string.loading_bookdetail).show();
loadData(url);
}
/**
* 展示查询结果;
*/
@UiThread
void showSuccessResult(){
UIHelper.getDialog().dismiss();
((ListView)listView).setAdapter(adapter);
}
/**
* 展示http请求异常结果
* @param requestCode
*/
@UiThread
void showErroResult(int requestCode){
UIHelper.getDialog().dismiss();
if(requestCode == 404){
AppMsg.makeText(this, getString(R.string.tips_bookdetail_null), AppMsg.STYLE_CONFIRM).show();
}else{
app.showError(requestCode,this);
}
}
@Background( id = UIHelper.CANCEL_FLAG )
void loadData(Object... params) {
try{
String url = CryptUtil.base64_url_safe((String) params[0]);
list = api.getBookDetail(url).getDetails();
buildListViewAdapter();
showSuccessResult();
}catch (HttpStatusCodeException e){
showErroResult(e.getStatusCode().value());
}catch (Exception e){
handleNoNetWorkError(getSherlockActivity());
}
}
private void buildListViewAdapter(){
BookDetailAdapter listadapter = new BookDetailAdapter(getSherlockActivity(), R.layout.bookdetail_listitem, list);
adapter = UIHelper.buildEffectAdapter(listadapter,(AbsListView) listView,ALPHA);
}
@Override
public void onCancel(DialogInterface dialogInterface) {
BackgroundExecutor.cancelAll(UIHelper.CANCEL_FLAG, true);
finish();
}
}