package com.wb.sc.mk.personal;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.InputType;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import com.android.volley.VolleyError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.common.net.volley.VolleyErrorHelper;
import com.common.phone.TelephonyHelper;
import com.common.widget.ToastHelper;
import com.wb.sc.R;
import com.wb.sc.activity.base.BaseHeaderActivity;
import com.wb.sc.bean.VerifyCode;
import com.wb.sc.bean.Register;
import com.wb.sc.config.NetConfig;
import com.wb.sc.config.RespCode;
import com.wb.sc.task.VerifyCodeRequest;
import com.wb.sc.task.RegisterRequest;
import com.wb.sc.util.ParamsUtil;
public class RegisterActivity extends BaseHeaderActivity implements OnClickListener,
Listener<Register>, ErrorListener{
public static final int REFRESH_TIME = 60 * 1000;
private EditText nameEt;
private EditText phoneEt;
private EditText verifyCodeEt;
private EditText pwdEt;
private Button getVerifyCodeBtn;
private Button timeBtn;
private CheckBox showPwdCb;
private CheckBox checkCb;
private View registerBtn;
//获取验证码
private VerifyCodeRequest mGetVerifyCodeRequest;
//注册
private RegisterRequest mRegisterRequest;
private String name;
private String phone;
private String verifyCode;
private String pwd;
private VerifyCodeTimeCount verifyCodeTimeCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
initHeader(R.string.ac_register);
getIntentData();
initView();
verifyCodeTimeCount = new VerifyCodeTimeCount(REFRESH_TIME, 1000);
}
@Override
public void getIntentData() {
}
@Override
public void initView() {
nameEt = (EditText) findViewById(R.id.name);
phoneEt = (EditText) findViewById(R.id.phone);
verifyCodeEt = (EditText) findViewById(R.id.verify_code);
pwdEt = (EditText) findViewById(R.id.password);
showPwdCb = (CheckBox) findViewById(R.id.show_password);
getVerifyCodeBtn = (Button) findViewById(R.id.get_verify_code);
getVerifyCodeBtn.setOnClickListener(this);
timeBtn = (Button) findViewById(R.id.time);
timeBtn.setVisibility(View.GONE);
checkCb = (CheckBox) findViewById(R.id.check);
registerBtn = findViewById(R.id.register);
registerBtn.setOnClickListener(this);
showPwdCb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
pwdEt.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
pwdEt.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
}
@Override
public void onClick(View v) {
super.onClick(v);
switch(v.getId()) {
case R.id.get_verify_code:
phone = phoneEt.getText().toString();
if(TextUtils.isEmpty(phone)) {
ToastHelper.showToastInBottom(this, R.string.phone_empty_toast);
return;
}
showProcess("正在请求发送验证码,请稍候...");
requestGetVerifyCode(getVerifyCodeRequestParams(), new VerifyCodeListener(), this);
break;
case R.id.register:
register();
break;
}
}
private void register() {
name = nameEt.getText().toString();
// phone = phoneEt.getText().toString();
verifyCode = verifyCodeEt.getText().toString();
pwd = pwdEt.getText().toString();
boolean isCheck = checkCb.isChecked();
if(TextUtils.isEmpty(name)) {
ToastHelper.showToastInBottom(this, R.string.username_empty_toast);
return;
}
if(TextUtils.isEmpty(phone)) {
ToastHelper.showToastInBottom(this, R.string.phone_empty_toast);
return;
}
if(TextUtils.isEmpty(verifyCode)) {
ToastHelper.showToastInBottom(this, R.string.verify_empty_toast);
return;
}
if(TextUtils.isEmpty(pwd)) {
ToastHelper.showToastInBottom(this, R.string.password_empty_toast);
return;
}
if(!isCheck) {
ToastHelper.showToastInBottom(this, R.string.protocol_no_check);
return;
}
showProcess("正在注册中,请稍候...");
requestRegister(getRegisterRequestParams(), this, this);
}
/**
* 验证码计时器
* @author liangbx
*
*/
class VerifyCodeTimeCount extends CountDownTimer {
public VerifyCodeTimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture+1000, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
timeBtn.setText(millisUntilFinished / 1000 + "秒");
}
@Override
public void onFinish() {
getVerifyCodeBtn.setVisibility(View.VISIBLE);
timeBtn.setVisibility(View.GONE);
}
}
/**
* 获取请求参数
* @return
*/
private List<String> getRegisterRequestParams() {
List<String> params = new ArrayList<String>();
params.add(ParamsUtil.getReqParam("FG02", 4));
params.add(ParamsUtil.getReqParam("MC_CENTERM", 16));
params.add(ParamsUtil.getReqParam("00001", 20));
params.add(ParamsUtil.getReqParam(verifyCode, 6));
params.add(ParamsUtil.getReqParam(phone, 15));
params.add(ParamsUtil.getReqParam(name, 32));
params.add(ParamsUtil.getReqRsaParam(pwd, 256));
return params;
}
/**
* 执行任务请求
* @param method
* @param url
* @param params
* @param listenre
* @param errorListener
*/
private void requestRegister(List<String> params,
Listener<Register> listenre, ErrorListener errorListener) {
if(mRegisterRequest != null) {
mRegisterRequest.cancel();
}
String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL;
mRegisterRequest = new RegisterRequest(url, params, listenre, errorListener);
startRequest(mRegisterRequest);
}
/**
* 网络请求错误处理
*
*/
@Override
public void onErrorResponse(VolleyError error) {
ToastHelper.showToastInBottom(getApplicationContext(), VolleyErrorHelper.getErrorMessage(this, error));
}
/**
* 请求完成,处理UI更新
*/
@Override
public void onResponse(Register response) {
dismissProcess();
if(response.respCode.equals(RespCode.SUCCESS)) {
ToastHelper.showToastInBottom(this, "注册成功");
finish();
} else {
ToastHelper.showToastInBottom(this, response.respCodeMsg);
}
}
/**
* 获取请求参数
* @return
*/
private List<String> getVerifyCodeRequestParams() {
List<String> params = new ArrayList<String>();
params.add(ParamsUtil.getReqParam("FG01", 4));
params.add(ParamsUtil.getReqParam("MC_CENTERM", 16));
params.add(ParamsUtil.getReqParam("00001", 20));
params.add(ParamsUtil.getReqParam("00", 2));
params.add(ParamsUtil.getReqParam(phone, 15));
String imei = TelephonyHelper.getInstance(this).getDeviceId();
params.add(ParamsUtil.getReqParam(imei, 32));
return params;
}
/**
* 执行任务请求
* @param method
* @param url
* @param params
* @param listenre
* @param errorListener
*/
private void requestGetVerifyCode(List<String> params,
Listener<VerifyCode> listenre, ErrorListener errorListener) {
if(mGetVerifyCodeRequest != null) {
mGetVerifyCodeRequest.cancel();
}
String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL;
mGetVerifyCodeRequest = new VerifyCodeRequest(url, params, listenre, errorListener);
startRequest(mGetVerifyCodeRequest);
}
class VerifyCodeListener implements Listener<VerifyCode> {
/**
* 请求完成,处理UI更新
*/
@Override
public void onResponse(VerifyCode response) {
dismissProcess();
showContent();
if(response.respCode.equals(RespCode.SUCCESS)) {
verifyCodeTimeCount.start();
getVerifyCodeBtn.setVisibility(View.GONE);
timeBtn.setVisibility(View.VISIBLE);
timeBtn.setText("60秒");
ToastHelper.showToastInBottom(RegisterActivity.this, R.string.verify_send_success);
} else {
ToastHelper.showToastInBottom(RegisterActivity.this, response.respCodeMsg);
}
}
}
}