package com.dreamspace.uucampus.ui.fragment.Personal;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import com.baoyz.swipemenulistview.SwipeMenu;
import com.baoyz.swipemenulistview.SwipeMenuCreator;
import com.baoyz.swipemenulistview.SwipeMenuItem;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.adapter.Personal.FreeGoodsPullOffListAdapter;
import com.dreamspace.uucampus.adapter.Personal.FreeGoodsSaleListAdapter;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.model.api.CommonStatusRes;
import com.dreamspace.uucampus.model.api.IdleInfoRes;
import com.dreamspace.uucampus.model.api.MyIdleItem;
import com.dreamspace.uucampus.model.api.UpdateIdleReq;
import com.dreamspace.uucampus.ui.activity.FreeGoods.FreeGoodsDetailActivity;
import com.dreamspace.uucampus.ui.activity.Personal.IdleEditAct;
import com.dreamspace.uucampus.ui.activity.Personal.MyFreeGoodsAct;
import com.dreamspace.uucampus.ui.base.BaseFragment;
import com.dreamspace.uucampus.ui.dialog.ProgressDialog;
import com.dreamspace.uucampus.widget.SwipeMenuLoadMoreListView;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/10/17.
*/
public class MyFreeGoodsFragment extends BaseFragment {
@Bind(R.id.free_good_smlv)
SwipeMenuLoadMoreListView freeGoodsLv;
@Bind(R.id.swipe_refresh_layout)
SwipeRefreshLayout swipeRefreshLayout;
@Bind(R.id.content_ll)
LinearLayout contentLl;
private SwipeMenuCreator creator;
private FreeGoodsSaleListAdapter saleListAdapter;
private FreeGoodsPullOffListAdapter pullOffListAdapter;
private ProgressDialog progressDialog;
private String type;
private boolean firstGetData = true;
private int is_active = -1;
private int page = 1;
private static final int IDLE_EDIT = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取type,从而判断当前fragment为了展示那个界面效果
type = getArguments() == null? "null":getArguments().getString(MyFreeGoodsAct.TYPE);
}
@Override
public int getLayoutId() {
return R.layout.fragment_my_free_goods;
}
@Override
public void initViews(View view) {
swipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color));
}
@Override
public void initDatas() {
if(firstGetData){
if(type.equals(getString(R.string.on_sale))){
is_active = 1;
}else if(type.equals(getString(R.string.already_pull_off))){
is_active = 0;
}
System.out.println(is_active);
getIdleList();
}else if(((MyFreeGoodsAct)getActivity()).isPulloffOrSale()){
//上下架情况有变需要刷新数据
page = 1;
firstGetData = true;
getIdleList();
}else{
//起到一个缓存作用,不需要再次请求数据
if(type.equals(getString(R.string.on_sale))){
freeGoodsLv.setAdapter(saleListAdapter);
}else if(type.equals(getString(R.string.already_pull_off))){
freeGoodsLv.setAdapter(pullOffListAdapter);
}
}
((MyFreeGoodsAct)getActivity()).setPulloffOrSale(false);//将此变量设置为false,只有当上架或下架过才会变成true
initListeners();
}
private void initListeners(){
freeGoodsLv.setOnLoadMoreListener(new SwipeMenuLoadMoreListView.OnLoadMoreListener() {
@Override
public void onLoadMore() {
page++;
getIdleList();
}
});
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
page = 1;
firstGetData = true;
getIdleList();
}
});
//为list item添加swipe menu item
creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu swipeMenu) {
SwipeMenuItem openItem = new SwipeMenuItem(getActivity());
openItem.setBackground(R.color.price_text_color);
openItem.setWidth((int)(90*getResources().getDisplayMetrics().density));
openItem.setTitle(getString(R.string.delete));
openItem.setTitleSize((int)(8*getResources().getDisplayMetrics().density));
openItem.setTitleColor(getResources().getColor(R.color.white));
swipeMenu.addMenuItem(openItem);
}
};
freeGoodsLv.setMenuCreator(creator);
//为menu item添加点击事件
freeGoodsLv.setOnMenuItemClickListener(new SwipeMenuLoadMoreListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int i, SwipeMenu swipeMenu, int i1) {
//i1为menu item的位置,i为listview的位置
if (i1 == 0) {
initProgressDialog();
progressDialog.setContent(getString(R.string.in_delete));
progressDialog.show();
if (type.equals(getString(R.string.on_sale))) {
MyIdleItem idleItem = saleListAdapter.getItem(i);
idleDelete(idleItem.getIdle_id());
} else if (type.equals(getString(R.string.already_pull_off))) {
MyIdleItem idleItem = pullOffListAdapter.getItem(i);
idleDelete(idleItem.getIdle_id());
}
}
return false;
}
});
freeGoodsLv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
if (type.equals(getString(R.string.on_sale))) {
bundle.putString(FreeGoodsDetailActivity.EXTRA_IDLE_ID,saleListAdapter.getItem(position).getIdle_id());
} else if (type.equals(getString(R.string.already_pull_off))) {
bundle.putString(FreeGoodsDetailActivity.EXTRA_IDLE_ID,pullOffListAdapter.getItem(position).getIdle_id());
}
readyGo(FreeGoodsDetailActivity.class,bundle);
}
});
}
@Override
protected View getLoadingTargetView() {
return contentLl;
}
//获取我的闲置商品列表
private void getIdleList(){
if(firstGetData){
toggleShowLoading(true,null);
}
if(!NetUtils.isNetworkConnected(getActivity())){
showNetWorkError();
if(firstGetData){
toggleNetworkError(true,getIdleListClickListener);
}
freeGoodsLv.setLoading(false);
swipeRefreshLayout.setRefreshing(false);
return;
}
ApiManager.getService(getActivity()).getIdleList(page, is_active, new Callback<IdleInfoRes>() {
@Override
public void success(IdleInfoRes idleInfoRes, Response response) {
if (idleInfoRes != null) {
freeGoodsLv.setLoading(false);
swipeRefreshLayout.setRefreshing(false);
if (idleInfoRes.getIdle().size() == 0 && page == 1) {
toggleShowEmpty(true, getString(R.string.no_such_good), null);
return;
}
//没有更多
if (idleInfoRes.getIdle().size() == 0 && page != 1) {
return;
}
//根据上下架状态不一
if (is_active == 1) {
if (firstGetData) {
saleListAdapter = new FreeGoodsSaleListAdapter(getActivity(), idleInfoRes.getIdle(), FreeGoodsSaleListAdapter.ViewHolder.class);
freeGoodsLv.setAdapter(saleListAdapter);
saleListAdapter.setOnGoodPullOffClickListener(new FreeGoodsSaleListAdapter.OnGoodPullOffClickListener() {
@Override
public void OnPullOff(String idle_id, int position) {
initProgressDialog();
progressDialog.setContent(getString(R.string.in_pull_off));
progressDialog.show();
updateIdleInfo(idle_id,0,position);
}
});
saleListAdapter.setOnGoodEditClickListener(new FreeGoodsSaleListAdapter.OnGoodEditClickListener() {
@Override
public void onEditClick(String idle_id) {
Bundle bundle = new Bundle();
bundle.putString(IdleEditAct.IDLE_ID,idle_id);
bundle.putInt(IdleEditAct.IS_ACTIVE,is_active);
readyGoForResult(IdleEditAct.class, IDLE_EDIT, bundle);
}
});
firstGetData = false;
toggleRestore();
} else {
saleListAdapter.addEntities(idleInfoRes.getIdle());
saleListAdapter.notifyDataSetChanged();
}
} else {
if (firstGetData) {
pullOffListAdapter = new FreeGoodsPullOffListAdapter(getActivity(), idleInfoRes.getIdle(), FreeGoodsPullOffListAdapter.ViewHolder.class);
freeGoodsLv.setAdapter(pullOffListAdapter);
pullOffListAdapter.setOnGoodSaleClickListener(new FreeGoodsPullOffListAdapter.OnGoodSaleClickListener() {
@Override
public void onSaleClick(String idle_id, int position) {
initProgressDialog();
progressDialog.setContent(getString(R.string.in_on_sale));
progressDialog.show();
updateIdleInfo(idle_id,1,position);
}
});
pullOffListAdapter.setOnEditClickListener(new FreeGoodsPullOffListAdapter.OnEditClickListener() {
@Override
public void onEditClick(String idle_id) {
Bundle bundle = new Bundle();
bundle.putString(IdleEditAct.IDLE_ID,idle_id);
bundle.putInt(IdleEditAct.IS_ACTIVE, is_active);
readyGoForResult(IdleEditAct.class,IDLE_EDIT,bundle);
}
});
firstGetData = false;
toggleRestore();
} else {
pullOffListAdapter.addEntities(idleInfoRes.getIdle());
pullOffListAdapter.notifyDataSetChanged();
}
}
}
}
@Override
public void failure(RetrofitError error) {
freeGoodsLv.setLoading(false);
swipeRefreshLayout.setRefreshing(false);
if (firstGetData) {
toggleShowEmpty(true, null, getIdleListClickListener);
} else {
showInnerError(error);
}
}
});
}
//闲置删除
private void idleDelete(String idle_id){
if(!NetUtils.isNetworkConnected(getActivity())){
showNetWorkError();
progressDialog.dismiss();
return;
}
ApiManager.getService(getActivity()).deleteIdle(idle_id, new Callback<CommonStatusRes>() {
@Override
public void success(CommonStatusRes commonStatusRes, Response response) {
if (commonStatusRes != null) {
progressDialog.dismiss();
showToast(getString(R.string.delete_success));
//刷新数据
page = 1;
firstGetData = true;
getIdleList();
}
}
@Override
public void failure(RetrofitError error) {
progressDialog.dismiss();
showInnerError(error);
}
});
}
//上下架闲置商品
private void updateIdleInfo(String idle_id,int is_active, final int position){
if(!NetUtils.isNetworkConnected(getActivity())){
progressDialog.dismiss();
showNetWorkError();
return;
}
UpdateIdleReq idleReq = new UpdateIdleReq();
idleReq.setIs_active(is_active);
ApiManager.getService(getActivity()).updateIdleInfo(idle_id, idleReq, new Callback<CommonStatusRes>() {
@Override
public void success(CommonStatusRes commonStatusRes, Response response) {
if(commonStatusRes != null){
progressDialog.dismiss();
//刷新数据
page = 1;
firstGetData = true;
getIdleList();
((MyFreeGoodsAct)getActivity()).setPulloffOrSale(true);
}
}
@Override
public void failure(RetrofitError error) {
progressDialog.dismiss();
showInnerError(error);
}
});
}
private void initProgressDialog(){
if(progressDialog != null){
return;
}
progressDialog = new ProgressDialog(getActivity());
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == IDLE_EDIT && resultCode == getActivity().RESULT_OK){
firstGetData = true;
page = 1;
getIdleList();
}
}
private View.OnClickListener getIdleListClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
getIdleList();
}
};
}