package com.cheikh.lazywaimai.ui.fragment;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import butterknife.Bind;
import butterknife.OnClick;
import butterknife.OnTextChanged;
import com.cheikh.lazywaimai.R;
import com.cheikh.lazywaimai.base.BaseController;
import com.cheikh.lazywaimai.base.BaseFragment;
import com.cheikh.lazywaimai.context.AppContext;
import com.cheikh.lazywaimai.controller.UserController;
import com.cheikh.lazywaimai.model.bean.ResponseError;
import com.cheikh.lazywaimai.util.ContentView;
import com.cheikh.lazywaimai.ui.Display;
import com.cheikh.lazywaimai.util.RegisterStep;
import com.cheikh.lazywaimai.util.StringUtil;
import com.cheikh.lazywaimai.util.SystemUtil;
import com.cheikh.lazywaimai.util.ToastUtil;
import com.cheikh.lazywaimai.widget.CountDownTimerView;
/**
* author:cheikh on 16/5/14 20:45
* email:wanghonghi@126.com
*/
@ContentView(R.layout.fragment_register_second_step)
public class RegisterSecondStepFragment extends BaseFragment<UserController.UserUiCallbacks>
implements UserController.RegisterSecondStepUi {
@Bind(R.id.txt_title)
TextView mTitleTxt;
@Bind(R.id.edit_code)
EditText mCodeEdit;
@Bind(R.id.btn_clear_code)
ImageView mClearCodeBtn;
@Bind(R.id.btn_send_code)
CountDownTimerView mSendCodeBtn;
@Bind(R.id.btn_submit)
Button mSubmitCodeBtn;
private String mMobile;
public static RegisterSecondStepFragment create(String mobile) {
RegisterSecondStepFragment fragment = new RegisterSecondStepFragment();
if (!TextUtils.isEmpty(mobile)) {
Bundle bundle = new Bundle();
bundle.putString(Display.PARAM_OBJ, mobile);
fragment.setArguments(bundle);
}
return fragment;
}
@Override
protected BaseController getController() {
return AppContext.getContext().getMainController().getUserController();
}
@Override
protected void handleArguments(Bundle arguments) {
if (arguments != null) {
mMobile = arguments.getString(Display.PARAM_OBJ);
}
}
@Override
protected void initializeViews(Bundle savedInstanceState) {
mTitleTxt.setText(getString(R.string.label_send_code_title, mMobile));
mSendCodeBtn.setOnCountDownListener(new CountDownTimerView.OnCountDownListener() {
@Override
public boolean onCountDownFinishState() {
return mCodeEdit != null && !TextUtils.isEmpty(mCodeEdit.getText().toString());
}
});
mSendCodeBtn.countDown(30000);
ToastUtil.showToast(R.string.toast_success_send_sms_code);
}
@Override
public void sendCodeFinish() {
// 开始倒计时
mSendCodeBtn.countDown(30000);
cancelLoading();
ToastUtil.showToast(R.string.toast_success_send_sms_code);
}
@Override
public void verifyMobileFinish() {
cancelLoading();
mSubmitCodeBtn.setEnabled(true);
Display display = getDisplay();
if (display != null) {
display.showRegisterStep(RegisterStep.STEP_THIRD, mMobile);
}
}
@Override
public void onResponseError(ResponseError error) {
cancelLoading();
mSubmitCodeBtn.setEnabled(true);
ToastUtil.showToast(error.getMessage());
}
@OnTextChanged(R.id.edit_code)
public void onCodeTextChange(CharSequence s) {
int visible = StringUtil.isEmpty(s.toString()) ? View.GONE : View.VISIBLE;
mClearCodeBtn.setVisibility(visible);
}
@OnClick({R.id.btn_clear_code, R.id.btn_send_code, R.id.btn_submit})
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_clear_code:
mCodeEdit.setText("");
break;
case R.id.btn_send_code:
sendSmsCode();
break;
case R.id.btn_submit:
submitCode();
break;
}
}
/**
* 执行发送验证码的操作
*/
private void sendSmsCode() {
showLoading(R.string.label_being_something);
// 发起发送验证码的API请求
getCallbacks().sendCode(mMobile);
}
/**
* 执行发送验证码的操作
*/
private void submitCode() {
// 隐藏软键盘
SystemUtil.hideKeyBoard(getContext());
// 验证验证码是否为空
final String code = mCodeEdit.getText().toString().trim();
if (TextUtils.isEmpty(code)) {
ToastUtil.showToast(R.string.toast_error_empty_code);
return;
}
showLoading(R.string.label_being_something);
// 避免重复点击
mSubmitCodeBtn.setEnabled(false);
// 发起发送验证码的API请求
getCallbacks().checkCode(mMobile, code);
}
}