package com.dreamspace.uucampus.ui.activity.Market;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.common.utils.PreferenceUtils;
import com.dreamspace.uucampus.model.ErrorRes;
import com.dreamspace.uucampus.model.api.AddShopCollectionRes;
import com.dreamspace.uucampus.model.api.CommonStatusRes;
import com.dreamspace.uucampus.model.api.ShopAllGroupRes;
import com.dreamspace.uucampus.model.api.ShopInfoRes;
import com.dreamspace.uucampus.ui.activity.Login.LoginActivity;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.ui.dialog.ConnectSellerDialog;
import com.dreamspace.uucampus.ui.fragment.Market.ShopShowGoodsFragment;
import com.ogaclejapan.smarttablayout.SmartTabLayout;
import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItemAdapter;
import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItems;
import com.ogaclejapan.smarttablayout.utils.v4.FragmentStatePagerItemAdapter;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/10/10.
* 店铺页面,展示的都是相应店铺的商品,进入此页面是需要传入对应shop的id和name
*/
public class ShopShowGoodsAct extends AbsActivity {
@Bind(R.id.shop_show_goods_act_smarttablayout)
SmartTabLayout smartTabLayout;
@Bind(R.id.shop_sg_act_view_pager)
ViewPager viewPager;
@Bind(R.id.shop_collect_ll)
LinearLayout collectLl;
@Bind(R.id.shop_consult_ll)
LinearLayout consultLl;
@Bind(R.id.content_rl)
RelativeLayout contentRl;
@Bind(R.id.collect_iv)
ImageView collectIv;
private boolean actDestory = false;
private String shopId;//当前店铺的shopid
private String shopName;//当前店铺的name
private ConnectSellerDialog consultDialog;
private FragmentPagerItemAdapter adapter;
private ShopAllGroupRes mShopGroup;//当前shop的group
private ShopInfoRes mShopInfo;//当前shop的信息
public static final String SHOP_ID = "SHOP_ID";
public static final String SHOP_NAME = "SHOP_NAME";
public static final String GROUP = "GROUP";
private static final int SHOP_DETAIL = 1;
public static final String SHOP_CURRENT_COLLECT_STATE = "CURRENT_COLLECTION_STATE";
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.shop_show_goods_menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.shop_action_shop_detail){
if(mShopInfo != null){
Bundle bundle = new Bundle();
bundle.putParcelable(ShopDetailAct.SHOP_INFO, mShopInfo);
bundle.putString(SHOP_ID, shopId);
readyGoForResult(ShopDetailAct.class, SHOP_DETAIL, bundle);
}
}
return super.onOptionsItemSelected(item);
}
@Override
protected int getContentView() {
return R.layout.activity_shop_show_goods;
}
@Override
protected void prepareDatas() {
shopId = getIntent().getExtras().getString(SHOP_ID);//获取传递过来的shopid
shopName = getIntent().getExtras().getString(SHOP_NAME);//name
getShopGroup();
}
@Override
protected void initViews() {
getSupportActionBar().setTitle(shopName);//设置shopname为actionbar title
initListeners();
}
@Override
protected View getLoadingTargetView() {
return contentRl;
}
private void initListeners(){
consultLl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ConnectSellerDialog dialog = new ConnectSellerDialog(ShopShowGoodsAct.this,
R.style.UpDialog, mShopInfo.getPhone_num(), mShopInfo.getPhone_num());
Window window = dialog.getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
layoutParams.y = (int) (80 * getResources().getDisplayMetrics().density);
window.setAttributes(layoutParams);
dialog.show();
}
});
collectLl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mShopInfo != null) {
if (!PreferenceUtils.hasKey(ShopShowGoodsAct.this, PreferenceUtils.Key.LOGIN) ||
!PreferenceUtils.getBoolean(ShopShowGoodsAct.this, PreferenceUtils.Key.LOGIN)) {
//未登录
readyGo(LoginActivity.class);
} else {
if (mShopInfo.getIs_collected() == 1) {
cancelShopCollection();
} else {
addShopCollection();
}
}
}
}
});
}
private void loadViews(){
FragmentPagerItems.Creator creator = FragmentPagerItems.with(this);
for(String group:mShopGroup.getGroup()){
//将此店铺的id和各个fragment对应的group传入fragment
Bundle bundle = new Bundle();
bundle.putString(GROUP,group);
bundle.putString(SHOP_ID,shopId);
creator.add(group,ShopShowGoodsFragment.class,bundle);
}
adapter = new FragmentPagerItemAdapter(getSupportFragmentManager(),creator.create());
viewPager.setAdapter(adapter);
smartTabLayout.setViewPager(viewPager);
if(mShopInfo.getIs_collected() == 1){
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p));
}else{
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_n));
}
}
//获取商铺的group
private void getShopGroup(){
toggleShowLoading(true, null);
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
toggleNetworkError(true, getGroupClickListener);
return;
}
ApiManager.getService(this).getShopCategory(shopId, new Callback<ShopAllGroupRes>() {
@Override
public void success(ShopAllGroupRes shopAllGroupRes, Response response) {
if (shopAllGroupRes != null && !actDestory) {
if (shopAllGroupRes.getGroup().size() == 0) {
toggleShowEmpty(true, getString(R.string.shop_with_no_good), null);
return;
}
mShopGroup = shopAllGroupRes;
getShopInfo();//获取到group后紧接着获取商铺信息
}
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
toggleShowEmpty(true, null, getGroupClickListener);
}
});
}
//获取店铺的信息
private void getShopInfo(){
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
toggleNetworkError(true, getGroupClickListener);
return;
}
ApiManager.getService(this).getShopInfo(shopId, new Callback<ShopInfoRes>() {
@Override
public void success(ShopInfoRes shopInfoRes, Response response) {
if (shopInfoRes != null && !actDestory) {
mShopInfo = shopInfoRes;
loadViews();//将获取的结果来展示到界面
toggleRestore();
}
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
toggleShowEmpty(true, null, getGroupClickListener);
}
});
}
//店铺收藏添加
private void addShopCollection(){
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
return;
}
ApiManager.getService(this).addCollection(shopId, new Callback<AddShopCollectionRes>() {
@Override
public void success(AddShopCollectionRes addShopCollectionRes, Response response) {
if (addShopCollectionRes != null && !actDestory) {
showToast(getString(R.string.collect_success));
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p));
mShopInfo.setIs_collected(1);//使本地数据与服务器同步
}
}
@Override
public void failure(RetrofitError error) {
ErrorRes errorRes = (ErrorRes) error.getBodyAs(ErrorRes.class);
//已收藏,不会发生已收藏但图标不变的情况(发生在未登录的情况下在此页面登录)
if(errorRes.getCode() == 406){
showToast(getString(R.string.collect_success));
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p));
mShopInfo.setIs_collected(1);//使本地数据与服务器同步
}else{
showInnerError(error);
}
}
});
}
//取消商铺收藏
private void cancelShopCollection(){
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
return;
}
ApiManager.getService(this).deleteShopCollection(shopId, new Callback<CommonStatusRes>() {
@Override
public void success(CommonStatusRes commonStatusRes, Response response) {
if(commonStatusRes != null && !actDestory){
showToast(getString(R.string.collect_cancel));
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_n));
mShopInfo.setIs_collected(0);
}
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
}
@Override
protected void onDestroy() {
actDestory = true;
super.onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == SHOP_DETAIL && resultCode == RESULT_OK){
int collected = data.getIntExtra(ShopDetailAct.CURRENT_COLLECTION_STATE,-1);
if(collected == 1){
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_p));
mShopInfo.setIs_collected(1);//使本地数据与服务器同步
}else if(collected == 0){
collectIv.setImageDrawable(getResources().getDrawable(R.drawable.xiangqing_tab_bar_collect_n));
mShopInfo.setIs_collected(0);
}
}
}
@Override
public void onBackPressed() {
if(mShopInfo != null){
//为“我的收藏”界面返回当前商铺的收藏状态
Intent data = new Intent();
data.putExtra(SHOP_CURRENT_COLLECT_STATE,mShopInfo.getIs_collected());
setResult(RESULT_OK,data);
}
super.onBackPressed();
}
private View.OnClickListener getGroupClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
getShopGroup();
}
};
}