package net.oschina.gitapp.ui;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import net.oschina.gitapp.AppContext;
import net.oschina.gitapp.AppException;
import net.oschina.gitapp.R;
import net.oschina.gitapp.api.ApiClient;
import net.oschina.gitapp.bean.ShippingAddress;
import net.oschina.gitapp.common.StringUtils;
import net.oschina.gitapp.common.UIHelper;
import net.oschina.gitapp.ui.baseactivity.BaseActionBarActivity;
/**
* 用户收货地址界面
* @created 2014-09-02
* @author 火蚁(http://my.oschina.net/LittleDY)
*
*/
public class ShippingAddressActivity extends BaseActionBarActivity implements View.OnClickListener {
private AppContext mContext;
private ShippingAddress mShippingAddress;
private View mContent;
private ProgressBar mLoading;
private TextView mName;
private TextView mTel;
private TextView mAddress;
private TextView mComment;
private Button mPub;
private TextWatcher mWatcher;
private ProgressDialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shipping_address);
mContext = getGitApplication();
initView();
initData();
}
private void initView() {
mContent = findViewById(R.id.shipping_address_content);
mLoading = (ProgressBar) findViewById(R.id.shipping_address_loading);
mName = (TextView) findViewById(R.id.name);
mTel = (TextView) findViewById(R.id.tell);
mAddress = (TextView) findViewById(R.id.address);
mComment = (TextView) findViewById(R.id.comment);
mPub = (Button) findViewById(R.id.shipping_address_pub);
mWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if(isEmpty()) {
mPub.setEnabled(false);
} else {
mPub.setEnabled(true);
}
}
};
mName.addTextChangedListener(mWatcher);
mTel.addTextChangedListener(mWatcher);
mAddress.addTextChangedListener(mWatcher);
mPub.setOnClickListener(this);
}
private boolean isEmpty() {
boolean res = false;
if (StringUtils.isEmpty(mName.getText().toString())
|| StringUtils.isEmpty(mTel.getText().toString())
|| StringUtils.isEmpty(mAddress.getText().toString())) {
res = true;
}
return res;
}
private void initData() {
loadingShippingAddress();
}
private void loadingShippingAddress() {
new AsyncTask<Void, Void, Message>() {
@Override
protected Message doInBackground(Void... params) {
Message msg = new Message();
try {
msg.obj = ApiClient.getUserShippingAddress(mContext, mContext.getLoginUid() + "");
msg.what = 1;
} catch (AppException e) {
msg.what = -1;
msg.obj = e;
e.printStackTrace();
}
return msg;
}
@Override
protected void onPostExecute(Message msg) {
super.onPostExecute(msg);
mLoading.setVisibility(View.GONE);
mContent.setVisibility(View.VISIBLE);
mPub.setVisibility(View.VISIBLE);
if (msg.what == 1 && msg.obj != null) {
mShippingAddress = (ShippingAddress) msg.obj;
mName.setText(mShippingAddress.getName());
mTel.setText(mShippingAddress.getTel());
mAddress.setText(mShippingAddress.getAddress());
mComment.setText(mShippingAddress.getComment());
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mLoading.setVisibility(View.VISIBLE);
mContent.setVisibility(View.GONE);
mPub.setVisibility(View.GONE);
}
}.execute();
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.shipping_address_pub:
pubShippingAddress();
break;
}
}
private void pubShippingAddress() {
if (mShippingAddress == null) {
mShippingAddress = new ShippingAddress();
}
mShippingAddress.setName(mName.getText().toString());
mShippingAddress.setTel(mTel.getText().toString());
mShippingAddress.setAddress(mAddress.getText().toString());
mShippingAddress.setComment(mComment.getText().toString());
if (mDialog == null) {
mDialog = new ProgressDialog(ShippingAddressActivity.this);
mDialog.setMessage("正在提交保存...");
}
new AsyncTask<Void, Void, Message>() {
@Override
protected Message doInBackground(Void... params) {
Message msg = new Message();
try {
msg.obj = ApiClient.updateUserShippingAddress(mContext, mContext.getLoginUid() + "", mShippingAddress);
msg.what = 1;
} catch (AppException e) {
msg.what = -1;
msg.obj = e;
e.printStackTrace();
}
return msg;
}
@Override
protected void onPostExecute(Message msg) {
super.onPostExecute(msg);
mDialog.dismiss();
if (msg.what == 1 && msg.obj != null) {
finish();
UIHelper.ToastMessage(mContext, "保存成功");
} else {
if (msg.obj instanceof AppException) {
((AppException)msg.obj).makeToast(mContext);
}
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mDialog.show();
}
}.execute();
}
}