package com.hdl.photovoltaic.ui.account;
|
|
|
import android.os.Bundle;
|
import android.os.CountDownTimer;
|
import android.text.Editable;
|
import android.text.InputType;
|
import android.text.TextUtils;
|
import android.text.TextWatcher;
|
import android.text.method.HideReturnsTransformationMethod;
|
import android.text.method.PasswordTransformationMethod;
|
import android.view.View;
|
|
|
import androidx.appcompat.content.res.AppCompatResources;
|
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
|
import com.hdl.linkpm.sdk.user.bean.HDLUserRegionBean;
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.base.CustomBaseActivity;
|
import com.hdl.photovoltaic.config.AppConfigManage;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.databinding.ActivityChangePasswordBinding;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.other.HdlAccountLogic;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
|
import com.hdl.photovoltaic.widget.ConfirmationTipDialog;
|
|
/**
|
* 忘记密码界面
|
*/
|
public class ChangePassword extends CustomBaseActivity {
|
ActivityChangePasswordBinding viewBinding;
|
|
private boolean isPhoneType = true;
|
|
private String mPhoneAccount;
|
private String mPhonePsw;
|
private String mPhoneConfirmPsw;
|
private String mPhoneVerificationCode;
|
|
private String mMailAccount;
|
private String mMailPsw;
|
private String mMailConfirmPsw;
|
private String mMailVerificationCode;
|
|
@Override
|
public Object getContentView() {
|
viewBinding = ActivityChangePasswordBinding.inflate(getLayoutInflater());
|
return viewBinding.getRoot();
|
}
|
|
@Override
|
public void onBindView(Bundle savedInstanceState) {
|
//初始化
|
initView();
|
//初始化界面监听器
|
initEvent();
|
}
|
|
/**
|
* 初始化界面
|
*/
|
private void initView() {
|
switchPhoneOrMailView();
|
}
|
|
/**
|
* 设置监听事件
|
*/
|
private void initEvent() {
|
|
//返回
|
viewBinding.changeBackTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
finish();
|
}
|
});
|
//切换手机号
|
viewBinding.changePhoneIc.underlineCl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
isPhoneType = true;
|
switchPhoneOrMailView();
|
|
}
|
});
|
//切换邮箱号
|
viewBinding.changeMailRl.underlineCl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
isPhoneType = false;
|
switchPhoneOrMailView();
|
|
}
|
});
|
//输入手机号或者邮箱
|
viewBinding.changeAccountEt.addTextChangedListener(accountTextWatcher);
|
//手机号获取验证码
|
viewBinding.changePhoneVerificationTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
sendVerification();
|
|
}
|
});
|
//输入手机验证码
|
viewBinding.changePhoneVerificationEt.addTextChangedListener(phoneVerificationTextWatcher);
|
//邮箱获取验证码
|
viewBinding.changeMailVerificationTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
sendVerification();
|
|
}
|
});
|
//输入邮箱验证码
|
viewBinding.changeMailVerificationEt.addTextChangedListener(MailVerificationTextWatcher);
|
//输入密码
|
viewBinding.changePswEt.addTextChangedListener(changePswTextWatcher);
|
//密码显示或者隐藏
|
viewBinding.changePswHideIv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (v.isSelected()) {
|
v.setSelected(false);
|
viewBinding.changePswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.hide));
|
viewBinding.changePswEt.setTransformationMethod(PasswordTransformationMethod.getInstance());
|
|
} else {
|
v.setSelected(true);
|
viewBinding.changePswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.show));
|
viewBinding.changePswEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
|
}
|
//设置光标位置
|
if (!TextUtils.isEmpty(viewBinding.changePswEt.getText())) {
|
viewBinding.changePswEt.setSelection(viewBinding.changePswEt.length());
|
}
|
}
|
});
|
//输入确认密码
|
viewBinding.changeConfirmPswEt.addTextChangedListener(changeConfirmPswTextWatcher);
|
//确认密码显示或者隐藏
|
viewBinding.changeConfirmPswHideIv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (v.isSelected()) {
|
v.setSelected(false);
|
viewBinding.changeConfirmPswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.hide));
|
viewBinding.changeConfirmPswEt.setTransformationMethod(PasswordTransformationMethod.getInstance());
|
} else {
|
v.setSelected(true);
|
viewBinding.changeConfirmPswHideIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.show));
|
viewBinding.changeConfirmPswEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
|
}
|
//设置光标位置
|
if (!TextUtils.isEmpty(viewBinding.changeConfirmPswEt.getText())) {
|
viewBinding.changeConfirmPswEt.setSelection(viewBinding.changeConfirmPswEt.length());
|
}
|
}
|
});
|
//重置密码
|
viewBinding.confirmTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (!isLocalCheckAccountAndPassword()) {
|
return;
|
}
|
String account = viewBinding.changeAccountEt.getText().toString();
|
String psw = viewBinding.changeConfirmPswEt.getText().toString();
|
String verification_code;
|
if (isPhoneType) {
|
verification_code = viewBinding.changePhoneVerificationEt.getText().toString();
|
} else {
|
verification_code = viewBinding.changeMailVerificationEt.getText().toString();
|
}
|
if (UserConfigManage.getInstance().isBAccount()) {
|
HdlAccountLogic.getInstance().changeBPassword(isPhoneType, account, psw, verification_code, new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
ConfirmationTipDialog dialog = new ConfirmationTipDialog(_mActivity);
|
dialog.show();
|
dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
|
@Override
|
public void Confirm() {
|
finish();
|
}
|
});
|
}
|
}, null, null);
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
|
}
|
});
|
} else {
|
HdlAccountLogic.getInstance().changeCPassword(isPhoneType, account, psw, verification_code, new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
ConfirmationTipDialog dialog = new ConfirmationTipDialog(_mActivity);
|
dialog.show();
|
dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
|
@Override
|
public void Confirm() {
|
finish();
|
}
|
});
|
}
|
}, null, null);
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
|
}
|
});
|
}
|
}
|
});
|
|
}
|
|
/**
|
* 发送验证码指令
|
*/
|
private void sendVerification() {
|
|
String account = viewBinding.changeAccountEt.getText().toString();
|
if (TextUtils.isEmpty(account)) {
|
if (isPhoneType) {
|
viewBinding.textErrorTv.setText(R.string.home_login_phone_null);
|
} else {
|
viewBinding.textErrorTv.setText(R.string.home_login_mail_null);
|
}
|
return;
|
}
|
//获取账号区域信息
|
HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<HDLUserRegionBean>() {
|
//发送消息验证码
|
@Override
|
public void onSuccess(HDLUserRegionBean obj) {
|
//设置账号所在区域协议及地址
|
AppConfigManage.setUserRegionUrl(obj.getRegionUrl());
|
HDLLinkPMUser.getInstance().setUserRegionUrl(AppConfigManage.getUserRegionUrl());
|
HdlAccountLogic.getInstance().sendVerifyCode(isPhoneType, account, "86", 2, new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
if (isPhoneType) {
|
phoneCountDownTimer.start();
|
} else {
|
mailCountDownTimer.start();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
|
}
|
});
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
|
// hideLoading();
|
}
|
});
|
}
|
|
/**
|
* 初始化手机号计时器
|
*/
|
CountDownTimer phoneCountDownTimer = new CountDownTimer(60 * 1000, 1000) {
|
@Override
|
public void onTick(long millisUntilFinished) {
|
long time = (millisUntilFinished / 1000);
|
String str = time + "s" + getString(R.string.home_login_psw_verification_repeater);
|
viewBinding.changePhoneVerificationTv.setText(str);
|
viewBinding.changePhoneVerificationTv.setTextColor(getResources().getColor(R.color.text_25000000));
|
viewBinding.changePhoneVerificationTv.setEnabled(false);
|
|
}
|
|
@Override
|
public void onFinish() {
|
viewBinding.changePhoneVerificationTv.setText(getString(R.string.home_login_verification_regain));
|
viewBinding.changePhoneVerificationTv.setTextColor(getResources().getColor(R.color.text_245EC3));
|
viewBinding.changePhoneVerificationTv.setEnabled(true);
|
|
|
}
|
};
|
/**
|
* 初始化邮箱计时器
|
*/
|
CountDownTimer mailCountDownTimer = new CountDownTimer(60 * 1000, 1000) {
|
@Override
|
public void onTick(long millisUntilFinished) {
|
long time = (millisUntilFinished / 1000);
|
String str = time + "s" + getString(R.string.home_login_psw_verification_repeater);
|
|
viewBinding.changeMailVerificationTv.setText(str);
|
viewBinding.changeMailVerificationTv.setTextColor(getResources().getColor(R.color.text_25000000));
|
viewBinding.changeMailVerificationTv.setEnabled(false);
|
|
}
|
|
@Override
|
public void onFinish() {
|
viewBinding.changeMailVerificationTv.setText(getString(R.string.home_login_verification_regain));
|
viewBinding.changeMailVerificationTv.setTextColor(getResources().getColor(R.color.text_245EC3));
|
viewBinding.changeMailVerificationTv.setEnabled(true);
|
|
}
|
};
|
|
/**
|
* 切换手机号或者邮箱的样式
|
*/
|
private void switchPhoneOrMailView() {
|
if (isPhoneType) {
|
//手机号
|
viewBinding.changePhoneIc.accountTitleTv.setText(R.string.home_login_手机号);
|
viewBinding.changePhoneIc.accountTitleTv.setTextSize(20);
|
viewBinding.changePhoneIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000));
|
viewBinding.changePhoneIc.lineV.setVisibility(View.VISIBLE);
|
|
viewBinding.changeMailRl.accountTitleTv.setText(R.string.home_login_邮箱);
|
viewBinding.changeMailRl.accountTitleTv.setTextSize(16);
|
viewBinding.changeMailRl.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000));
|
viewBinding.changeMailRl.lineV.setVisibility(View.GONE);
|
|
//输入手机号
|
viewBinding.changeAccountEt.setInputType(InputType.TYPE_CLASS_NUMBER);
|
viewBinding.changeAccountEt.setHint(R.string.home_login_请输入手机号);
|
//显示手机号验证码,隐藏邮箱验证码,
|
viewBinding.changePhoneVerificationCodeRl.setVisibility(View.VISIBLE);
|
viewBinding.changeMailVerificationCodeRl.setVisibility(View.GONE);
|
//记录邮箱账号和密码
|
mMailAccount = viewBinding.changeAccountEt.getText().toString();
|
mMailVerificationCode = viewBinding.changePhoneVerificationEt.getText().toString();
|
mMailPsw = viewBinding.changePswEt.getText().toString();
|
mMailConfirmPsw = viewBinding.changeConfirmPswEt.getText().toString();
|
//显示旧数据
|
viewBinding.changeAccountEt.setText(mPhoneAccount);
|
viewBinding.changePhoneVerificationEt.setText(mPhoneVerificationCode);
|
viewBinding.changePswEt.setText(mPhonePsw);
|
viewBinding.changeConfirmPswEt.setText(mPhoneConfirmPsw);
|
|
|
} else {
|
//邮箱
|
viewBinding.changePhoneIc.accountTitleTv.setText(R.string.home_login_手机号);
|
viewBinding.changePhoneIc.accountTitleTv.setTextSize(16);
|
viewBinding.changePhoneIc.accountTitleTv.setTextColor(getResources().getColor(R.color.text_40000000));
|
viewBinding.changePhoneIc.lineV.setVisibility(View.GONE);
|
|
viewBinding.changeMailRl.accountTitleTv.setText(R.string.home_login_邮箱);
|
viewBinding.changeMailRl.accountTitleTv.setTextSize(20);
|
viewBinding.changeMailRl.accountTitleTv.setTextColor(getResources().getColor(R.color.text_90000000));
|
viewBinding.changeMailRl.lineV.setVisibility(View.VISIBLE);
|
//输入邮箱
|
viewBinding.changeAccountEt.setInputType(InputType.TYPE_CLASS_TEXT);
|
viewBinding.changeAccountEt.setHint(R.string.home_login_input_mail);
|
|
//显示箱邮验证码,隐藏手机号验证码,
|
viewBinding.changePhoneVerificationCodeRl.setVisibility(View.GONE);
|
viewBinding.changeMailVerificationCodeRl.setVisibility(View.VISIBLE);
|
|
//记录手机号和密码
|
mPhoneAccount = viewBinding.changeAccountEt.getText().toString();
|
mPhoneVerificationCode = viewBinding.changePhoneVerificationEt.getText().toString();
|
mPhonePsw = viewBinding.changePswEt.getText().toString();
|
mPhoneConfirmPsw = viewBinding.changeConfirmPswEt.getText().toString();
|
//显示旧数据
|
viewBinding.changeAccountEt.setText(mMailAccount);
|
viewBinding.changeMailVerificationEt.setText(mMailVerificationCode);
|
viewBinding.changePswEt.setText(mMailPsw);
|
viewBinding.changeConfirmPswEt.setText(mMailConfirmPsw);
|
|
}
|
isCompleteEnabled();
|
|
}
|
|
/**
|
* 校验按钮是否启用
|
*/
|
private void isCompleteEnabled() {
|
String account = viewBinding.changeAccountEt.getText().toString();
|
String psw1 = viewBinding.changePswEt.getText().toString();
|
String psw2 = viewBinding.changeConfirmPswEt.getText().toString();
|
String verification_code;
|
if (isPhoneType) {
|
verification_code = viewBinding.changePhoneVerificationEt.getText().toString();
|
} else {
|
verification_code = viewBinding.changeMailVerificationEt.getText().toString();
|
}
|
boolean isEnabled = account.length() > 0 && psw1.length() > 0 && psw2.length() > 0 && verification_code.length() > 0;
|
viewBinding.confirmTv.setEnabled(isEnabled);
|
}
|
|
/**
|
* 本地校验输入账号或者密码是否正确
|
*/
|
private boolean isLocalCheckAccountAndPassword() {
|
String psw1 = viewBinding.changePswEt.getText().toString();
|
String psw2 = viewBinding.changeConfirmPswEt.getText().toString();
|
if (!psw1.equals(psw2)) {
|
viewBinding.textErrorTv.setText(R.string.home_login_psw_unlikeliness);
|
return false;
|
}
|
if (psw1.length() < 6 || psw1.length() > 16) {
|
viewBinding.textErrorTv.setText(R.string.home_login_error_6_16_str);
|
return false;
|
}
|
// if (psw2.length() < 6 || psw2.length() > 16) {
|
// viewBinding.textErrorTv.setText(R.string.home_login_error_6_16_str);
|
// return false;
|
// }
|
return true;
|
|
}
|
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
if (phoneCountDownTimer != null) {
|
phoneCountDownTimer.cancel();
|
phoneCountDownTimer = null;
|
}
|
if (mailCountDownTimer != null) {
|
mailCountDownTimer.cancel();
|
mailCountDownTimer = null;
|
}
|
viewBinding.changeAccountEt.removeTextChangedListener(accountTextWatcher);
|
viewBinding.changePhoneVerificationEt.removeTextChangedListener(phoneVerificationTextWatcher);
|
viewBinding.changeMailVerificationEt.removeTextChangedListener(MailVerificationTextWatcher);
|
viewBinding.changePswEt.removeTextChangedListener(changePswTextWatcher);
|
viewBinding.changeConfirmPswEt.removeTextChangedListener(changeConfirmPswTextWatcher);
|
}
|
|
|
/**
|
* 输入手机号或者邮箱
|
*/
|
private final TextWatcher accountTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
isCompleteEnabled();
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
|
}
|
};
|
/**
|
* 输入手机验证码
|
*/
|
private final TextWatcher phoneVerificationTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
isCompleteEnabled();
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
|
}
|
};
|
|
/**
|
* 邮箱获取验证码
|
*/
|
private final TextWatcher MailVerificationTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
isCompleteEnabled();
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
|
}
|
};
|
|
/**
|
* 输入密码
|
*/
|
private final TextWatcher changePswTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
isCompleteEnabled();
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
|
}
|
};
|
/**
|
* 输入确认密码
|
*/
|
private final TextWatcher changeConfirmPswTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
isCompleteEnabled();
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
|
}
|
};
|
}
|