package com.partynetwork.iparty.login;
import com.partynetwork.dataprovider.DataProvider.IJsonResultListener;
import com.partynetwork.dataprovider.json.NetworkEntity;
import com.partynetwork.dataprovider.json.struct.Login_loginResetAuthcodeRequest;
import com.partynetwork.dataprovider.json.struct.Login_loginResetAuthcodeResponse;
import com.partynetwork.dataprovider.json.struct.Login_registerAuthcodeRequest;
import com.partynetwork.dataprovider.json.struct.Login_registerAuthcodeResponse;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.app.ui.BaseActivity;
import com.partynetwork.iparty.info.RegisterUserInfo;
import com.baidu.mobstat.StatService;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import eu.inmite.android.lib.dialogs.ISimpleDialogListener;
import eu.inmite.android.lib.dialogs.SimpleDialogFragment;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.TextView;
/**
* 注册界面1
*
* @author sys
* @version 1.0
* @since 2013.09.27
*/
public class RegisterTwoActivity extends FragmentActivity implements IJsonResultListener,
ISimpleDialogListener {
// 上一步按钮
@ViewInject(R.id.head_left_tv)
TextView back_tv;
// 下一步按钮
@ViewInject(R.id.head_right_tv)
TextView next_tv;
// 类别内容
@ViewInject(R.id.register_type_content_tv)
TextView type_content_tv;
// 验证码
@ViewInject(R.id.register_type_et)
EditText type_et;
// 倒计时
@ViewInject(R.id.register_two_time)
TextView time_tv;
// 倒计时对象
private MyCount mc;
private boolean isOver;
private RegisterUserInfo user;
private String authcode;//="1234";
// 注册类型
private int registerType;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setTheme(R.style.DefaultLightTheme);
setContentView(R.layout.register_two);
ViewUtils.inject(this);
init();
}
private void init() {
user = getIntent().getParcelableExtra("user");
mc = new MyCount(60000, 1000);
mc.start();
initType();
}
/**
* 初始化注册类型界面
*/
private void initType() {
registerType = getIntent().getIntExtra("registerType", 0);
if (registerType == 0) {
type_et.setHint("输入手机验证码");
type_content_tv.setText("+86 " + user.getUserPhone());
sendRegisterAuthcode();
} else if (registerType == 1) {
type_et.setHint("输入邮箱验证码");
type_content_tv.setText(user.getUserEmail());
sendRegisterAuthcode();
} else if (registerType == 2) {
type_et.setHint("输入手机验证码");
type_content_tv.setText("+86 " + user.getUserPhone());
sendResetAuthcode();
} else if (registerType == 3) {
type_et.setHint("输入邮箱验证码");
type_content_tv.setText(user.getUserEmail());
sendResetAuthcode();
}
}
@OnClick({ R.id.head_left_tv, R.id.head_right_tv, R.id.register_two_time })
public void btnClick(View v) {
switch (v.getId()) {
case R.id.head_left_tv:
finish();
// 界面消失动画
overridePendingTransition(R.anim.animation_enterfromleft,
R.anim.animation_fadefromright);
break;
case R.id.head_right_tv:
toNext();
break;
case R.id.register_two_time:
if (isOver) {
mc.start();
if (registerType == 0 || registerType == 1) {
sendRegisterAuthcode();
} else if (registerType == 2 || registerType == 3) {
sendResetAuthcode();
}
}
break;
default:
break;
}
}
/**
* 跳转到下一界面
*/
private void toNext() {
/* 判断当前验证码是否正确 */
// 获取当前输入验证码
String text = type_et.getText().toString();
// 判断是否相等
if (text.equals(authcode)) {
Intent intent = new Intent(RegisterTwoActivity.this, RegisterThreeActivity.class);
intent.putExtra("user", user);
intent.putExtra("registerType", registerType);
startActivity(intent);
// 设置界面出现动画
overridePendingTransition(R.anim.animation_enterfromright,
R.anim.animation_fadefromleft);
} else {
SimpleDialogFragment.createBuilder(this, getSupportFragmentManager())
.setMessage("对不起,你输入的验证码有误!").setNegativeButtonText("确定").show();
}
}
/** 自定义一个继承CountDownTimer的内部类,用于实现计时器的功能 */
class MyCount extends CountDownTimer {
/**
* MyCount的构造方法
*
* @param millisInFuture 要倒计时的时间
* @param countDownInterval 时间间隔
*/
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
/**
* 在进行倒计时的时候执行的操作
*/
@Override
public void onTick(long millisUntilFinished) {
isOver = false;
long second = millisUntilFinished / 1000;
time_tv.setBackgroundColor(Color.parseColor("#d3d2d5"));
time_tv.setText("重发验证码(" + second + ")");
time_tv.setTextColor(Color.GRAY);
}
/**
* 倒计时结束后要做的事情
*/
@Override
public void onFinish() {
isOver = true;
time_tv.setBackgroundColor(Color.parseColor("#1585d6"));
time_tv.setText("重发验证码");
time_tv.setTextColor(Color.WHITE);
}
}
/**
* 发送注册时的验证码短信
*/
private void sendRegisterAuthcode() {
Login_registerAuthcodeRequest request = new Login_registerAuthcodeRequest();
if (registerType == 0) {
request.setAuthcodeType(0);
request.setAuthcodeContent(user.getUserPhone());
} else if (registerType == 1) {
request.setAuthcodeType(1);
request.setAuthcodeContent(user.getUserEmail());
}
AppContext.getInstance().getmDataProvider().getJsonFromNetwork(request, this);
}
/**
* 发送重置密码时的验证码短信
*/
private void sendResetAuthcode() {
Login_loginResetAuthcodeRequest request = new Login_loginResetAuthcodeRequest();
if (registerType == 2) {
request.setResetType(0);
request.setResetContent(user.getUserPhone());
} else if (registerType == 3) {
request.setResetType(1);
request.setResetContent(user.getUserEmail());
}
AppContext.getInstance().getmDataProvider().getJsonFromNetwork(request, this);
}
public void onNetworkRequest() {
}
public void onResultSuccess(NetworkEntity entity) {
if (entity.getRequest().getAction().equals(new Login_registerAuthcodeRequest().getAction())) {
Login_registerAuthcodeResponse authcode = (Login_registerAuthcodeResponse) entity
.getResponse();
this.authcode = authcode.getDetails().getAuthcode();
}
if (entity.getRequest().getAction()
.equals(new Login_loginResetAuthcodeRequest().getAction())) {
Login_loginResetAuthcodeResponse authcode = (Login_loginResetAuthcodeResponse) entity
.getResponse();
this.authcode = authcode.getDetails().getAuthcode();
}
}
public void onResultFail(String result) {
SimpleDialogFragment.createBuilder(this, getSupportFragmentManager()).setMessage(result)
.setNegativeButtonText("确定").setRequestCode(4).show();
}
/**
* 覆盖方法
*
* @see com.partynetwork.iparty.app.ui.BaseActivity#onNegativeButtonClicked(int)
*/
@Override
public void onNegativeButtonClicked(int requestCode) {
if (requestCode == 4) {
this.finish();
return;
}
}
@Override
protected void onResume() {
StatService.onResume(this);
super.onResume();
}
@Override
public void onPause() {
StatService.onPause(this);
super.onResume();
}
@Override
public void onPositiveButtonClicked(int requestCode) {
// TODO Auto-generated method stub
}
}