You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
csamsclient/app/src/main/java/com/gyf/csams/account/model/RegisterViewModel.kt

74 lines
2.1 KiB

package com.gyf.csams.account.model
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.orhanobut.logger.Logger
/**
* 注册表单
*/
class RegisterViewModel:ViewModel() {
//学号
private val _studentId=MutableLiveData<String>()
val studentId:LiveData<String> = _studentId
private val _isValidStudentId=MutableLiveData<Boolean>()
val isValidStudentId:LiveData<Boolean> = _isValidStudentId
val studentIdDesc="学号"
val studentIdPlaceholder="学号纯数字"
val studentIdFormat="入学年份(四位)+班级代码(两位)+学生代码(两位)"
//姓名
private val _name=MutableLiveData<String>()
val name:LiveData<String> = _name
val nameDesc="姓名"
val namePlaceholder=nameDesc
private val _isValidName=MutableLiveData<Boolean>()
val isValidName:LiveData<Boolean> = _isValidName
val nameFormat="姓名不能为空"
//注册按钮
private val _isValidForm=MutableLiveData<Boolean>()
val isValidForm:LiveData<Boolean> = _isValidForm
/**
* 更新学号
*
* @param studentId 学号
*/
fun onStudentIdChange(studentId:String){
_studentId.value=studentId
_isValidForm.value = checkStudentId() && _isValidForm.value ?: false
}
/**
* 检查学号格式
*
*/
private fun checkStudentId(): Boolean {
_isValidStudentId.value= _studentId.value?.matches(Regex("\\d{8}"))
return _isValidStudentId.value==true
}
/**
* 更新姓名
*
* @param name 姓名
*/
fun onNameChange(name:String){
_name.value=name
_isValidForm.value = checkName() && _isValidForm.value ?: false
}
private fun checkName():Boolean{
_isValidName.value= _name.value?.isNotEmpty()
return _isValidName.value==true
}
fun register(){
if(_isValidForm.value==true){
Logger.i("开始注册")
}else{
Logger.wtf("表单校验失败,无法注册!!!")
}
}
}