个人资料
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package com.example.defenseapplication.personal
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.databinding.FaceManagementActivityBinding
|
||||
import com.example.defenseapplication.databinding.LoginPasswordActivityBinding
|
||||
import com.example.defenseapplication.login.FaceVerificationActivity
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
//人脸管理页面
|
||||
class FaceManagementActivity : AppCompatActivity() {
|
||||
private lateinit var binding: FaceManagementActivityBinding
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = FaceManagementActivityBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
binding.faceManagement.setOnClickListener {
|
||||
startActivity(Intent(this, FaceVerificationActivity::class.java))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.example.defenseapplication.personal
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.databinding.LoginPasswordActivityBinding
|
||||
import com.example.defenseapplication.databinding.PasswordManagementActivityBinding
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
//登录密码
|
||||
class LoginPasswordActivity : AppCompatActivity() {
|
||||
private lateinit var binding: LoginPasswordActivityBinding
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = LoginPasswordActivityBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.example.defenseapplication.personal
|
||||
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.blankj.utilcode.util.SPUtils
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.databinding.OperationPasswordActivityBinding
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
//操作密码
|
||||
class OperationPasswordActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: OperationPasswordActivityBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = OperationPasswordActivityBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
|
||||
initListener()
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
|
||||
binding.swOperationPassword.setOnCheckedChangeListener { _, isChecked ->
|
||||
when (isChecked) {
|
||||
true -> {
|
||||
binding.etPassword.isEnabled = true
|
||||
binding.etConfirmPassword.isEnabled = true
|
||||
binding.btnConfirmReset.isEnabled = true
|
||||
Toast.makeText(this, getString(R.string.operation_password_enabled), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
false -> {
|
||||
binding.etPassword.isEnabled = false
|
||||
binding.etConfirmPassword.isEnabled = false
|
||||
binding.btnConfirmReset.isEnabled = false
|
||||
SPUtils.getInstance().remove("operation_password")
|
||||
Toast.makeText(this, getString(R.string.operation_password_disabled), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
binding.btnConfirmReset.setOnClickListener {
|
||||
val password = binding.etPassword.text.toString()
|
||||
val confirmPassword = binding.etConfirmPassword.text.toString()
|
||||
|
||||
if (password.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.password_cannot_empty), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (password.length != 6) {
|
||||
Toast.makeText(this, getString(R.string.password_must_be_6_digits), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (confirmPassword.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.please_confirm_password), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (password != confirmPassword) {
|
||||
Toast.makeText(this, getString(R.string.password_mismatch), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
SPUtils.getInstance().put("operation_password", password)
|
||||
Toast.makeText(this, getString(R.string.operation_success), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.example.defenseapplication.personal
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.databinding.PasswordManagementActivityBinding
|
||||
import com.example.defenseapplication.view.PasswordInputDialog
|
||||
import com.blankj.utilcode.util.SPUtils
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
//密码管理
|
||||
class PasswordManagementActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: PasswordManagementActivityBinding
|
||||
private lateinit var passwordDialog: PasswordInputDialog
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = PasswordManagementActivityBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
|
||||
binding.loginPassword.setOnClickListener {
|
||||
startActivity(Intent(this, LoginPasswordActivity::class.java))
|
||||
}
|
||||
|
||||
binding.retrievePassword.setOnClickListener {
|
||||
startActivity(Intent(this, RetrievePasswordActivity::class.java))
|
||||
}
|
||||
|
||||
binding.operationPassword.setOnClickListener {
|
||||
showPasswordDialog()
|
||||
}
|
||||
}
|
||||
|
||||
private fun showPasswordDialog() {
|
||||
passwordDialog = PasswordInputDialog(this).apply {
|
||||
setOnConfirmListener { inputPassword ->
|
||||
val savedPassword = SPUtils.getInstance().getString("operation_password", "111111")
|
||||
if (savedPassword.isEmpty()) {
|
||||
Toast.makeText(this@PasswordManagementActivity, getString(R.string.operation_password_not_set), Toast.LENGTH_SHORT).show()
|
||||
dismiss()
|
||||
return@setOnConfirmListener
|
||||
}
|
||||
if (inputPassword == savedPassword) {
|
||||
startActivity(Intent(this@PasswordManagementActivity, OperationPasswordActivity::class.java))
|
||||
dismiss()
|
||||
} else {
|
||||
showError(getString(R.string.password_error))
|
||||
clearPassword()
|
||||
}
|
||||
}
|
||||
setOnDismissListener {
|
||||
// Dialog dismissed
|
||||
}
|
||||
}
|
||||
passwordDialog.show()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
if (::passwordDialog.isInitialized) {
|
||||
passwordDialog.dismiss()
|
||||
}
|
||||
super.onDestroy()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
package com.example.defenseapplication.personal
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.CountDownTimer
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.databinding.RetrievePasswordActivityBinding
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
|
||||
//找回密码页面
|
||||
class RetrievePasswordActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: RetrievePasswordActivityBinding
|
||||
private var countDownTimer: CountDownTimer? = null
|
||||
private var isCountingDown = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = RetrievePasswordActivityBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.init()
|
||||
|
||||
initListener()
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.ivBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
|
||||
binding.btnGetCode.setOnClickListener {
|
||||
val phoneNumber = binding.etPhoneNumber.text.toString()
|
||||
|
||||
if (phoneNumber.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.enter_phone_number), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (phoneNumber.length != 11) {
|
||||
Toast.makeText(this, getString(R.string.phone_format_invalid), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
startCountdown()
|
||||
Toast.makeText(this, String.format(getString(R.string.code_sent_to), phoneNumber), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
binding.btnConfirmReset.setOnClickListener {
|
||||
val phoneNumber = binding.etPhoneNumber.text.toString()
|
||||
val verificationCode = binding.etVerificationCode.text.toString()
|
||||
val newPassword = binding.etNewPassword.text.toString()
|
||||
val confirmPassword = binding.etConfirmPassword.text.toString()
|
||||
|
||||
if (phoneNumber.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.enter_phone_number), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (phoneNumber.length != 11) {
|
||||
Toast.makeText(this, getString(R.string.phone_format_invalid), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (verificationCode.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.enter_verification_code_pls), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (verificationCode.length != 6) {
|
||||
Toast.makeText(this, getString(R.string.verification_code_error), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (newPassword.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.password_cannot_empty), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (newPassword.length < 6 || newPassword.length > 20) {
|
||||
Toast.makeText(this, getString(R.string.password_requirement), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (confirmPassword.isEmpty()) {
|
||||
Toast.makeText(this, getString(R.string.enter_password_again), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (newPassword != confirmPassword) {
|
||||
Toast.makeText(this, getString(R.string.password_mismatch), Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
Toast.makeText(this, getString(R.string.reset_success), Toast.LENGTH_SHORT).show()
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
private fun startCountdown() {
|
||||
isCountingDown = true
|
||||
binding.btnGetCode.isEnabled = false
|
||||
|
||||
countDownTimer = object : CountDownTimer(60000, 1000) {
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
val seconds = millisUntilFinished / 1000
|
||||
binding.btnGetCode.text = String.format(getString(R.string.countdown_retry), seconds)
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
isCountingDown = false
|
||||
binding.btnGetCode.isEnabled = true
|
||||
binding.btnGetCode.text = getString(R.string.get_verification_code)
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
countDownTimer?.cancel()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user