package Ġcom . github . s dt . cy pher . ui . widget . pin lock view Ċ Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . github . s dt . cy pher . R Ċ import Ġcom . github . s dt . cy pher . utils . Const Fun . set V ibrate Ċ import Ġcom . p aw eg io . k android . hide Ċ import Ġcom . p aw eg io . k android . inflate Layout Ċ import Ġcom . p aw eg io . k android . show Ċ import Ġk ot ter knife . bind View Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġl uis Ġr af ael Ġon Ġ 0 1 / 0 5 / 1 9 . Ċ Ġ*/ Ċ class ĠPin Lock Adapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠVIEW _ TYPE _ NUMBER Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠVIEW _ TYPE _ DELETE Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠVIEW _ TYPE _ OK Ġ= Ġ 2 ĊĊĠĠĠ Ġprivate Ġvar Ġm Custom ization Options Bundle : ĠCustom ization Options Bundle ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Pin Button ClickListener : ĠOn Pin Button ClickListener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpin Length : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġval Ġm Key Values : ĠInt Array Ġ= Ġget Adjust Key Values ( int ArrayOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 0 )) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVIEW _ TYPE _ NUMBER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġparent . context . inflate Layout ( R . layout . layout _ number _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNumber ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVIEW _ TYPE _ DELETE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġparent . context . inflate Layout ( R . layout . layout _ delete _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDelete ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġparent . context . inflate Layout ( R . layout . layout _ done _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDone ViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item ViewType Ġ== ĠVIEW _ TYPE _ NUMBER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv h 1 Ġ= Ġholder Ġas ĠNumber ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Number Button Holder ( vh 1 , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item ViewType Ġ== ĠVIEW _ TYPE _ DELETE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv h 2 Ġ= Ġholder Ġas ĠDelete ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Delete Button Holder ( vh 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item ViewType Ġ== ĠVIEW _ TYPE _ OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv h 3 Ġ= Ġholder Ġas ĠDone ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Done Button Holder ( vh 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Number Button Holder ( holder : ĠNumber ViewHolder ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Number Button . text Ġ= Ġm Key Values [ position ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Number Button . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Number Button . tag Ġ= Ġm Key Values [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom ization Options Bundle Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Number Button . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġm Custom ization Options Bundle !!. text Size . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( m Custom ization Options Bundle !!. button Size , Ġm Custom ization Options Bundle !!. button Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Number Button . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Delete Button Holder ( holder : ĠDelete ViewHolder ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom ization Options Bundle Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( m Custom ization Options Bundle !!. delete Button Size , Ġm Custom ization Options Bundle !!. delete Button Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġholder . m Button Image . hide () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Done Button Holder ( holder : ĠDone ViewHolder ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Custom ization Options Bundle Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( m Custom ization Options Bundle !!. delete Button Size , Ġm Custom ization Options Bundle !!. delete Button Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Button Image . alpha Ġ= Ġ 0 . 3 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġ 1 2 ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count Ġ- Ġ 1 Ġ-> ĠVIEW _ TYPE _ OK ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> ĠVIEW _ TYPE _ DELETE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠVIEW _ TYPE _ NUMBER ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Adjust Key Values ( key Values : ĠInt Array ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadjusted Key Values Ġ= ĠInt Array ( key Values . size Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġkey Values . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadjusted Key Values [ i ] Ġ= Ġkey Values [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadjusted Key Values [ i ] Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadjusted Key Values [ i Ġ+ Ġ 1 ] Ġ= Ġkey Values [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġadjusted Key Values ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDone ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Button Image Ġ: ĠImageView Ġby Ġbind View ( R . id . button Image ) ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Length Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Button Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context . set V ibrate ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Pin Button ClickListener Ġ!= Ġnull ) Ġon Pin Button ClickListener !!. on Confirm Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠNumber ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġm Number Button : ĠButton Ġby Ġbind View ( R . id . button ) ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Number Button . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context . set V ibrate ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Pin Button ClickListener Ġ!= Ġnull ) Ġon Pin Button ClickListener !!. on Number Clicked ( v . tag Ġas ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDelete ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Button Image : ĠImageView Ġby Ġbind View ( R . id . button Image ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin Length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Button Image . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context . set V ibrate ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Pin Button ClickListener Ġ!= Ġnull ) Ġon Pin Button ClickListener !!. onDelete Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Button Image . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Pin Button ClickListener Ġ!= Ġnull ) Ġon Pin Button ClickListener !!. onDelete Long Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Custom ization Options ( custom ization Options Bundle : ĠCustom ization Options Bundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Custom ization Options Bundle Ġ= Ġcustomization Options Bundle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Pin Button ClickListener ( on Pin Button ClickListener : ĠOn Pin Button ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Pin Button ClickListener Ġ= Ġon Pin Button ClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Pin Button ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Number Clicked ( key Value : ĠInt ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Confirm Clicked () ĊĠĠĠĠĠĠĠ Ġfun ĠonDelete Clicked () ĊĠĠĠĠĠĠĠ Ġfun ĠonDelete Long Clicked () ĊĠĠĠ Ġ} Ċ Ċ } Ċ