package com.dreamspace.uucampus.ui.activity.Market;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.utils.CommonUtils;
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.ShopInfoRes;
import com.dreamspace.uucampus.ui.activity.Login.LoginActivity;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import butterknife.Bind;
import de.hdodenhof.circleimageview.CircleImageView;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/10/10.
*/
public class ShopDetailAct extends AbsActivity {
@Bind(R.id.sale_range_tv)
TextView saleRangeTv;
@Bind(R.id.connect_phone_tv)
TextView connectPhoneTv;
@Bind(R.id.connect_address_tv)
TextView connectAddressTv;
@Bind(R.id.shop_description_et)
EditText descriptionEt;
@Bind(R.id.shop_detail_image_civ)
CircleImageView shopImageCiv;
@Bind(R.id.shop_name_tv)
TextView shopNameTv;
@Bind(R.id.report_seller_btn)
Button reportBtn;
public static final String SHOP_INFO = "shop_info";
public static final String CURRENT_COLLECTION_STATE = "collection_state";
private boolean actDestory = false;
private ShopInfoRes shopInfo;
private String shopId;
@Override
protected int getContentView() {
return R.layout.activity_shop_detail;
}
@Override
protected void prepareDatas() {
shopInfo = getIntent().getExtras().getParcelable(SHOP_INFO);
shopId = getIntent().getExtras().getString(ShopShowGoodsAct.SHOP_ID);
}
@Override
protected void initViews() {
getSupportActionBar().setTitle(shopInfo.getName());
CommonUtils.showImageWithGlideInCiv(this, shopImageCiv, shopInfo.getImage());
shopNameTv.setText(shopInfo.getName());
saleRangeTv.setText(shopInfo.getMain());
connectPhoneTv.setText(shopInfo.getPhone_num());
connectAddressTv.setText(shopInfo.getAddress());
descriptionEt.setText(shopInfo.getDescription());
initListeners();
}
@Override
protected View getLoadingTargetView() {
return null;
}
private void initListeners(){
reportBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!PreferenceUtils.hasKey(ShopDetailAct.this,PreferenceUtils.Key.LOGIN) ||
!PreferenceUtils.getBoolean(ShopDetailAct.this,PreferenceUtils.Key.LOGIN)){
//未登录
readyGo(LoginActivity.class);
}else{
//进入举报商家页面,并传入shopid
Bundle bundle = new Bundle();
bundle.putString(ReportShopAct.SHOP_ID,shopId);
readyGo(ReportShopAct.class,bundle);
}
}
});
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(shopInfo != null){
if(shopInfo.getIs_collected() == 1){
menu.findItem(R.id.action_collect).setIcon(R.drawable.xiangqing_btn_shoucang_n);
}else{
menu.findItem(R.id.action_collect).setIcon(R.drawable.xiangqing_btn_shoucang_p);
}
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.action_collect && shopInfo != null){
if(!PreferenceUtils.hasKey(this,PreferenceUtils.Key.LOGIN) ||
!PreferenceUtils.getBoolean(this,PreferenceUtils.Key.LOGIN)){
//未登录
readyGo(LoginActivity.class);
}else{
if(shopInfo.getIs_collected() == 1){
cancelShopCollection(item);
}else{
addShopCollection(item);
}
}
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_shop_detail, menu);
return super.onCreateOptionsMenu(menu);
}
//店铺收藏添加
private void addShopCollection(final MenuItem item){
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));
item.setIcon(getResources().getDrawable(R.drawable.xiangqing_btn_shoucang_n));
shopInfo.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));
item.setIcon(getResources().getDrawable(R.drawable.xiangqing_btn_shoucang_n));
shopInfo.setIs_collected(1);//使本地数据与服务器同步
}else{
showInnerError(error);
}
}
});
}
//取消商铺收藏
private void cancelShopCollection(final MenuItem item){
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));
item.setIcon(getResources().getDrawable(R.drawable.xiangqing_btn_shoucang_p));
shopInfo.setIs_collected(0);
}
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
}
@Override
protected void onDestroy() {
actDestory = true;
super.onDestroy();
}
@Override
public void onBackPressed() {
//返回用户当前对此店铺的收藏状态,使得商铺界面的收藏图标与此同步
Intent data = new Intent();
data.putExtra(CURRENT_COLLECTION_STATE,shopInfo.getIs_collected());
setResult(RESULT_OK, data);
super.onBackPressed();
}
}