package Ġcom . z cp . wan Android . ui . sign . sign Up Ċ Ċ import Ġandroid . text . method . Hide Returns Transformation Method Ċ import Ġandroid . text . method . Password Transformation Method Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . z cp . wan Android . R Ċ import Ġcom . z cp . wan Android . base . Base Fragment Ċ import Ġcom . z cp . wan Android . databinding . Fragment SignUp Binding Ċ import Ġcom . z cp . wan Android . ui . sign . On Sign ClickListener Ċ import Ġcom . z cp . wan Android . ui . sign . SignIn And Up Repository Ċ import Ġcom . z cp . wan Android . ui . sign . sign Up . di . D agger SignUp Component Ċ import Ġcom . z cp . wan Android . ui . sign . sign Up . di . SignUp View Module Ċ import Ġcom . z cp . wan Android . ui . sign . sign Up . viewModel . SignUp ViewModel Ċ import Ġcom . z cp . wan Android . ui . sign . view model . Sign Page Data Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSign Up Fragment Ġ: ĠBase Fragment < Fragment SignUp Binding >() Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġsign Up ViewModel : ĠSign Up ViewModel ĊĊĠĠĠ Ġvar Ġis Show Used Password : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Remember User Password : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġsign In And Up Repository : ĠSign In And Up Repository ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Resource (): ĠInt Ġ= ĠR . layout . fragment _ sign _ up ĊĠĠĠ Ġoverride Ġfun Ġup Data View () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġview Created ( m Root View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . vm Ġ= Ġsign Up ViewModel ĊĠĠĠĠĠĠĠ Ġbinding . bt SignUp . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġset EditText () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pass Word Status ( is Show Used Password ) ĊĠĠĠĠĠĠĠ Ġset Remember Check Out Status ( is Remember User Password ) ĊĠĠĠĠĠĠĠ Ġbinding . bt SignUp . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Up ViewModel . sign Up App ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign In And Up Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et UserName . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Password . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Confirm Password . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Up ViewModel . save User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . cb SignUp Remember . isChecked , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et UserName . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Password . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsign Up ViewModel . sign Up Data . observe ( this , ĠObserver < Sign Page Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on SignUp ClickListener ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Remember Check Out Status ( is Remember Password : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Remember User Password Ġ= Ġis Remember Password ĊĠĠĠĠĠĠĠ Ġbinding . cb SignUp Remember . isChecked Ġ= Ġis Remember Password ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Pass Word Status ( it : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . et User Password . ime Options Ġ= ĠEditor Info . IME _ ACTION _ DONE ĊĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Show Password . setBackground Resource ( R . drawable . ic _ visibility _ off _ select ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Show Confirm Password . setBackground Resource ( R . drawable . ic _ visibility _ off _ select ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Password . transformation Method Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHide Returns Transformation Method . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Confirm Password . transformation Method Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHide Returns Transformation Method . getInstance () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Show Password . setBackground Resource ( R . drawable . ic _ visibility _ select ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Show Confirm Password . setBackground Resource ( R . drawable . ic _ visibility _ select ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Password . transformation Method Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPassword Transformation Method . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Confirm Password . transformation Method Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPassword Transformation Method . getInstance () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . et User Password . text ?. length ?. let Ġ{ Ġlength Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Password . setSelection ( length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . et User Confirm Password . text ?. length ?. let Ġ{ Ġlength Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et User Confirm Password . setSelection ( length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset EditText () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . et UserName . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck SignUp Button Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . et User Password . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Container . isSelected Ġ= Ġhas Focus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Show Password . isSelected Ġ= Ġhas Focus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck SignUp Button Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . et User Confirm Password . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . confirm Input Container . isSelected Ġ= Ġhas Focus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Show Confirm Password . isSelected Ġ= Ġhas Focus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck SignUp Button Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck SignUp Button Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! binding . et User Password . text . isNull OrEmpty () Ġ&& Ġ! binding . et UserName . text . isNull OrEmpty () Ġ&& Ġ! binding . et User Confirm Password . text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bt SignUp . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( binding . et User Password . text . isNull OrEmpty () Ġ&& Ġbinding . et UserName . text . isNull OrEmpty () Ġ&& Ġbinding . et User Confirm Password . text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bt SignUp . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Inject () Ġ{ ĊĠĠĠĠĠĠĠ ĠD agger SignUp Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. application Component ( getApp Component ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sign Up View Module ( SignUp View Module ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġcallback : ĠOn Sign ClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset On SignIn ClickListener ( callback : ĠOn Sign ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . callback Ġ= Ġcallback ĊĠĠĠ Ġ} Ċ }