package com.dreamspace.uucampus.ui.activity.Personal;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ScrollView;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.ImageCaptureManager;
import com.dreamspace.uucampus.common.UploadImage;
import com.dreamspace.uucampus.common.utils.CommonUtils;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.model.CategoryItem;
import com.dreamspace.uucampus.model.api.AllCategoryRes;
import com.dreamspace.uucampus.model.api.CommonStatusRes;
import com.dreamspace.uucampus.model.api.GetIdleInfoRes;
import com.dreamspace.uucampus.model.api.QnRes;
import com.dreamspace.uucampus.model.api.UpdateIdleReq;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.ui.dialog.MsgDialog;
import com.dreamspace.uucampus.ui.dialog.ProgressDialog;
import com.dreamspace.uucampus.ui.dialog.SelectPhotoDialog;
import com.dreamspace.uucampus.ui.dialog.WheelDialog;
import com.qiniu.android.http.ResponseInfo;
import com.qiniu.android.storage.UpCompletionHandler;
import org.json.JSONObject;
import java.util.ArrayList;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/11/21.
*/
public class IdleEditAct extends AbsActivity{
@Bind(R.id.confirm_btn)
Button confirmBtn;
@Bind(R.id.good_image_iv)
ImageView imageIv;
@Bind(R.id.free_goods_name_et)
EditText nameEt;
@Bind(R.id.free_goods_price_et)
EditText priceEt;
@Bind(R.id.free_goods_classify_et)
EditText categoryEt;
@Bind(R.id.free_goods_detail_et)
EditText detailEt;
@Bind(R.id.scrollView)
ScrollView scrollView;
private ArrayList<CategoryItem> categorys;
private MsgDialog msgDialog;
private WheelDialog wheelDialog;
private ProgressDialog progressDialog;
private String idleId;
private String imagePath;
private boolean actDestory = false;
private int is_active;
private SelectPhotoDialog selectPhotoDialog;
private ImageCaptureManager captureManager;
public static final int SELECT_AVATER = 1;
public static final int TAKE_AVATER = 2;
public static final String IDLE_ID = "IDLE_ID";
public static final String IS_ACTIVE = "IS_ACTIVE";
@Override
protected int getContentView() {
return R.layout.activity_idle_edit;
}
@Override
protected void prepareDatas() {
idleId = getIntent().getExtras().getString(IDLE_ID);
is_active = getIntent().getExtras().getInt(IS_ACTIVE);
captureManager = new ImageCaptureManager(this);
getIdleDetail();
}
@Override
protected void initViews() {
getSupportActionBar().setTitle(getString(R.string.idle_edit));
initListeners();
}
private void initListeners(){
categoryEt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(categorys == null){
initMsgDialog();
msgDialog.show();
}else{
initWheelDialog();
wheelDialog.show();
}
}
});
confirmBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(checkValid()){
initProgressDialog();
progressDialog.show();
if(imagePath != null){
upLoadImage();
}else{
updateIdleInfo(null);
}
}
}
});
imageIv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initSelectPhotoDialog();
selectPhotoDialog.show();
}
});
priceEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.toString().contains(".")) {
if (charSequence.length() - 1 - charSequence.toString().indexOf(".") > 2) {
charSequence = charSequence.toString().subSequence(0,
charSequence.toString().indexOf(".") + 3);
priceEt.setText(charSequence);
priceEt.setSelection(charSequence.length());
}
}
if (charSequence.toString().trim().substring(0).equals(".")) {
charSequence = "0" + charSequence;
priceEt.setText(charSequence);
priceEt.setSelection(2);
}
if (charSequence.toString().startsWith("0")
&& charSequence.toString().trim().length() > 1) {
if (!charSequence.toString().substring(1, 2).equals(".")) {
priceEt.setText(charSequence.subSequence(0, 1));
priceEt.setSelection(1);
return;
}
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
@Override
protected View getLoadingTargetView() {
return scrollView;
}
private boolean checkValid(){
if(nameEt.getText().toString().length() < 1 || nameEt.getText().toString().length() > 10){
showToast(getString(R.string.good_name_valid));
return false;
}else if(Float.parseFloat(priceEt.getText().toString()) > 99999){
showToast(getString(R.string.good_price_to_large));
return false;
}else if(CommonUtils.isEmpty(categoryEt.getText().toString())){
showToast(getString(R.string.good_category_cant_be_null));
return false;
}else if(detailEt.getText().toString().length() < 10 || detailEt.getText().toString().length() > 150){
showToast(getString(R.string.good_description_valid));
return false;
}
return true;
}
private void getIdleCategory(){
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
return;
}
ApiManager.getService(this).getAllIdleCategory(new Callback<AllCategoryRes>() {
@Override
public void success(AllCategoryRes allCategoryRes, Response response) {
if (allCategoryRes != null) {
categorys = allCategoryRes.getCategory();
}
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
}
});
}
private void getIdleDetail(){
toggleShowLoading(true,null);
if(!NetUtils.isNetworkConnected(this)){
toggleNetworkError(true, getIdleInfoClickListener);
return;
}
ApiManager.getService(this).getIdleInfo(idleId, new Callback<GetIdleInfoRes>() {
@Override
public void success(GetIdleInfoRes getIdleInfoRes, Response response) {
if (getIdleInfoRes != null && !actDestory) {
getIdleCategory();
toggleRestore();
priceEt.setText(getIdleInfoRes.getPrice() / 100 + "");
nameEt.setText(getIdleInfoRes.getName());
categoryEt.setText(getIdleInfoRes.getCategory());
detailEt.setText(getIdleInfoRes.getDescription());
CommonUtils.showImageWithGlide(IdleEditAct.this, imageIv, getIdleInfoRes.getImage());
}
}
@Override
public void failure(RetrofitError error) {
toggleShowEmpty(true, null, getIdleInfoClickListener);
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
captureManager.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
captureManager.onRestoreInstanceState(savedInstanceState);
}
private void updateIdleInfo(String image){
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
progressDialog.dismiss();
return;
}
UpdateIdleReq idleReq = new UpdateIdleReq();
idleReq.setName(nameEt.getText().toString());
idleReq.setPrice((int)(Float.parseFloat(priceEt.getText().toString()) * 100) + "");
idleReq.setCategory(categoryEt.getText().toString());
idleReq.setDescription(detailEt.getText().toString());
idleReq.setImage(image);
idleReq.setIs_active(is_active);
ApiManager.getService(this).updateIdleInfo(idleId, idleReq, new Callback<CommonStatusRes>() {
@Override
public void success(CommonStatusRes commonStatusRes, Response response) {
if (commonStatusRes != null && !actDestory) {
progressDialog.dismiss();
showToast(getString(R.string.modify_success));
setResult(RESULT_OK);
IdleEditAct.this.finish();
}
}
@Override
public void failure(RetrofitError error) {
progressDialog.dismiss();
showInnerError(error);
}
});
}
private void upLoadImage(){
if(!NetUtils.isNetworkConnected(this)){
progressDialog.dismiss();
showNetWorkError();
return;
}
ApiManager.getService(this).createQiNiuToken(new Callback<QnRes>() {
@Override
public void success(QnRes qnRes, Response response) {
if (qnRes != null && !actDestory) {
UploadImage.upLoadImage(imagePath, qnRes.getKey(), qnRes.getToken(), new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject response) {
if (info.isOK()) {
//图片上传成功,接着更新商品信息
updateIdleInfo(key);
}
}
}, null);
}
}
@Override
public void failure(RetrofitError error) {
progressDialog.dismiss();
showInnerError(error);
}
});
}
private void initWheelDialog(){
if(wheelDialog != null){
return;
}
wheelDialog = new WheelDialog(this);
if(categorys != null){
ArrayList<String> category = new ArrayList<>();
for(CategoryItem item:categorys){
category.add(item.getName());
}
wheelDialog.setData(category);
}
wheelDialog.setTitle(getString(R.string.catalog_list));
wheelDialog.setNegativeButton(new View.OnClickListener() {
@Override
public void onClick(View view) {
wheelDialog.dismiss();
}
});
wheelDialog.setPositiveButton(new View.OnClickListener() {
@Override
public void onClick(View view) {
wheelDialog.dismiss();
categoryEt.setText(wheelDialog.getSelectedText());
}
});
}
private void initMsgDialog(){
if(msgDialog != null){
return;
}
msgDialog = new MsgDialog(this);
msgDialog.setContent(getString(R.string.not_get_idle_category));
msgDialog.setNegativeButton(new View.OnClickListener() {
@Override
public void onClick(View view) {
msgDialog.dismiss();
}
});
msgDialog.setPositiveButton(new View.OnClickListener() {
@Override
public void onClick(View view) {
getIdleCategory();
msgDialog.dismiss();
}
});
}
private void initProgressDialog(){
if(progressDialog != null){
return;
}
progressDialog = new ProgressDialog(this);
progressDialog.setContent(getString(R.string.modifing));
}
private void initSelectPhotoDialog(){
if(selectPhotoDialog != null){
return;
}
selectPhotoDialog = new SelectPhotoDialog(this,captureManager,SELECT_AVATER,TAKE_AVATER);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(selectPhotoDialog != null){
selectPhotoDialog.dismiss();
}
if(requestCode == SELECT_AVATER && resultCode == RESULT_OK){
Uri uri = data.getData();
imagePath = CommonUtils.getRealPathFromURI(this,uri);
CommonUtils.showImageWithGlide(this, imageIv, imagePath);
}else if(requestCode == TAKE_AVATER && resultCode == RESULT_OK){
if(captureManager.getCurrentPhotoPath() != null){
imagePath = captureManager.getCurrentPhotoPath();
CommonUtils.showImageWithGlide(this,imageIv,imagePath);
}
}
}
@Override
protected void onDestroy() {
actDestory = true;
super.onDestroy();
}
private View.OnClickListener getIdleInfoClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
getIdleDetail();
}
};
}