package Ġme . li uq ing wen . android . project image uploader Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġcom . google . gson . Gson Ċ import Ġkotlinx . android . synt hetic . main . layout _ activity _ login .* Ċ import Ġokhttp 3 . Form Body Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġorg . jetbrains . ank o .* Ċ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity (), ĠAn ko Logger Ċ { ĊĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFORM _ USERNAME Ġ= Ġ" username " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFORM _ PASSWORD Ġ= Ġ" password " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPI _ LOGIN _ URL Ġ= Ġ" http :// li uq ing wen . me / test / login _ db . php " ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval ĠhttpClient Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠOk HttpClient () Ġ} ĊĠĠĠ Ġprivate Ġvar Ġcookie : String ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġusername : String ĊĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . text Username . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġpassword : String ĊĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . text Password . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġanimation Show Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠAnimation Utils . load Animation ( this , ĠR . anim . anim _ label _ show ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġanimation Show 2 Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠAnimation Utils . load Animation ( this , ĠR . anim . anim _ label _ show _ 2 ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġanimation Hide Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠAnimation Utils . load Animation ( this , ĠR . anim . anim _ label _ hide ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġanimation Hide 2 Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠAnimation Utils . load Animation ( this , ĠR . anim . anim _ label _ hide _ 2 ) Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . layout _ activity _ login ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . init () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġinit () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set Support ActionBar ( this . toolbar ) ĊĠĠĠĠĠĠĠ Ġthis . support ActionBar ?. hide () ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . button Login . request Focus () ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . button Login . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . username . isBlank () Ġ|| Ġthis . password . isBlank ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . alert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġ" Info " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . message Ġ= Ġ" Ne ither Ġusername Ġor Ġpassword Ġcannot Ġbe Ġempty !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button (" OK ") Ġ{ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . button Login . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġform Body Ġ= ĠForm Body . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Login Activity . FORM _ USERNAME , Ġthis . username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Login Activity . FORM _ PASSWORD , Ġthis . password ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). post ( form Body ). url ( Login Activity . API _ LOGIN _ URL ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . do Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġtry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġthis @ Login Activity . httpClient . new Call ( request ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . cookie Ġ= Ġresponse . header (" Set - Cookie ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġresponse . body ()?. string () Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . alert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġ" Login ĠFailed " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . message Ġ= Ġ" Make Ġsure Ġyour Ġnetwork Ġis Ġonline , Ġand Ġretry Ġagain ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button (" OK ") Ġ{ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . button Login . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠGson (). fromJson < Login Result >( body , ĠLogin Result :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info . result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . button Login . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . startActivity < MainActivity >( MainActivity . COOKIE _ EXTRA Ġto Ġ( this @ Login Activity . cookie Ġ?: Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . alert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġ" Login ĠFailed " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . message Ġ= Ġinfo . info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button (" Cancel ") Ġ{ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Login Activity . button Login . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . text Username . setOn Focus ChangeListener Ġ{ Ġ_, Ġis Focused Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . username . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . label Username . start Animation ( if Ġ( is Focused ) Ġthis . animation Show Ġelse Ġthis . animation Hide ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . text Password . setOn Focus ChangeListener Ġ{ Ġ_, Ġis Focused Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . password . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . label Password . start Animation ( if Ġ( is Focused ) Ġthis . animation Show 2 Ġelse Ġthis . animation Hide 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ