package Ġcom . simple mobile tools . commons . dialogs Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . support . design . widget . Tab Layout Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . view . LayoutInflater Ċ import Ġcom . simple mobile tools . commons . R Ċ import Ġcom . simple mobile tools . commons . adapters . Password Types Adapter Ċ import Ġcom . simple mobile tools . commons . extensions .* Ċ import Ġcom . simple mobile tools . commons . helpers . PRO TE CTION _ F ING ER PRINT Ċ import Ġcom . simple mobile tools . commons . helpers . PRO TE CTION _ PATTERN Ċ import Ġcom . simple mobile tools . commons . helpers . PRO TE CTION _ PIN Ċ import Ġcom . simple mobile tools . commons . helpers . SHOW _ ALL _ TAB S Ċ import Ġcom . simple mobile tools . commons . interfaces . Hash Listener Ċ import Ġcom . simple mobile tools . commons . views . My Dialog ViewPager Ċ import Ġkotlinx . android . synt hetic . main . dialog _ security . view .* Ċ Ċ class ĠSecurity Dialog ( val Ġactivity : ĠActivity , Ġval Ġrequired Hash : ĠString , Ġval Ġshow TabIndex : ĠInt , Ġval Ġcallback : Ġ( hash : ĠString , Ġtype : ĠInt , Ġsuccess : ĠBoolean ) Ġ-> ĠUnit ) ĊĠĠĠ Ġ: ĠHash Listener Ġ{ ĊĠĠĠ Ġvar Ġdialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( activity ). inflate ( R . layout . dialog _ security , Ġnull ) ĊĠĠĠ Ġlateinit Ġvar Ġtabs Adapter : ĠPassword Types Adapter ĊĠĠĠ Ġlateinit Ġvar Ġview Pager : ĠMy Dialog ViewPager ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager Ġ= ĠfindViewById ( R . id . dialog _ tab _ view _ pager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . off screen Page Limit Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Adapter Ġ= ĠPassword Types Adapter ( context , Ġrequired Hash , Ġthis @ Security Dialog , Ġdialog _ scroll view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġtabs Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . add On Page ChangeListener ( object Ġ: ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog _ tab _ layout . get Tab At ( position ) !!. select () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . on Global Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Tab Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show TabIndex Ġ== ĠSHOW _ ALL _ TAB S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġcontext . base Config . textColor ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! activity . is F inger Print Sensor Available ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog _ tab _ layout . remove Tab At ( PRO TE CTION _ F ING ER PRINT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog _ tab _ layout . set Tab Text Colors ( textColor , ĠtextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog _ tab _ layout . setSelected Tab Indicator Color ( context . base Config . primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog _ tab _ layout . add On Tab Selected Listener ( object Ġ: ĠTab Layout . On Tab Selected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠTab Layout . Tab ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text . toString (). equals ( resources . getString ( R . string . pattern ), Ġtrue ) Ġ-> Ġview Pager . currentItem Ġ= ĠPRO TE CTION _ PATTERN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text . toString (). equals ( resources . getString ( R . string . pin ), Ġtrue ) Ġ-> Ġview Pager . currentItem Ġ= ĠPRO TE CTION _ PIN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġview Pager . currentItem Ġ= ĠPRO TE CTION _ F ING ER PRINT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Tab Visibility () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog _ tab _ layout . be G one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġshow TabIndex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . allow Sw ip ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog Ġ= ĠAlertDialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Cancel Listener Ġ{ Ġon Cancel Fail () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . cancel ) Ġ{ Ġdialog , Ġwhich Ġ-> Ġon Cancel Fail () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . setup Dialog Stuff ( view , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Cancel Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback ("", Ġ 0 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdialog !!. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreceived Hash ( hash : ĠString , Ġtype : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback ( hash , Ġtype , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġdialog !!. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Tab Visibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Adapter . is Tab Visible ( i , Ġview Pager . currentItem Ġ== Ġi ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ