package Ġcom . kh me len ko . lab . var is . auth Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . kh me len ko . lab . var is . R Ċ import Ġcom . kh me len ko . lab . var is . common . Constants Ċ import Ġkotlinx . android . synt hetic . main . fragment _ auth . auth _ login _ btn Ċ import Ġkotlinx . android . synt hetic . main . fragment _ auth . auth _ password Ċ import Ġkotlinx . android . synt hetic . main . fragment _ auth . auth _ server _ selector Ċ import Ġkotlinx . android . synt hetic . main . fragment _ auth . auth _ username Ċ Ċ /** Ċ Ġ* ĠAuthentication Ġfragment Ċ Ġ* Ċ Ġ* Ġ@ author ĠD my tro ĠK h me len ko Ċ Ġ*/ Ċ class ĠAuth Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Server : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn Login ActionListener ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ auth , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcurrent Server Ġ= Ġarguments !!. getString ( SERVER _ URL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġprepare Server Selection () ĊĊĠĠĠĠĠĠĠ Ġauth _ login _ btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( are Credentials Valid ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Login ( auth _ username . text . toString (), Ġauth _ password . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrep ares Ġserver Ġselection Ġsection ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġprepare Server Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth _ server _ selector . setOn Checked ChangeListener Ġ{ Ġradio Group , Ġbutton Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġserver Ġ= ĠConstants . OPEN _ SOURCE _ TR AV IS _ URL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( button Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . auth _ server _ opensource Ġ-> Ġserver Ġ= ĠConstants . OPEN _ SOURCE _ TR AV IS _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . auth _ server _ pro Ġ-> Ġserver Ġ= ĠConstants . PRIVATE _ TR AV IS _ URL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. onChange Server ( server ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( current Server ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . OPEN _ SOURCE _ TR AV IS _ URL Ġ-> Ġauth _ server _ selector . check ( R . id . auth _ server _ opensource ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PRIVATE _ TR AV IS _ URL Ġ-> Ġauth _ server _ selector . check ( R . id . auth _ server _ pro ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDoes Ġvalidation Ġof Ġthe Ġinput ted Ġcredentials ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue , Ġif Ġinput ted Ġcredentials Ġare Ġvalid . ĠFalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġare Credentials Valid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalid Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( auth _ username . text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth _ username . error Ġ= ĠgetString ( R . string . auth _ invalid _ username _ msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( auth _ password . text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth _ password . error Ġ= ĠgetString ( R . string . auth _ invalid _ password _ msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( activity : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( activity ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġactivity Ġas ? ĠOn Login ActionListener ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠClass CastException ( activity !!. toString () Ġ+ Ġ" Ġmust Ġimplement ĠOn Login ActionListener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġlistener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInterface Ġfor Ġfragment Ġactions Ġlistener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠOn Login ActionListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġon ĠLogin Ġaction ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠuserName ĠUsername ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpassword ĠPassword ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Login ( userName : ĠString , Ġpassword : ĠString ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġon Ġchanged Ġserver ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnew Server ĠNew Ġserver ĠURL ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠonChange Server ( new Server : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSERVER _ URL Ġ= Ġ" Server Url " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġnew Ġinstance Ġof Ġthe Ġfragment ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠFragment Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( server Url : ĠString ): ĠAuth Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠAuth Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString ( SERVER _ URL , Ġserver Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ