package Ġme . rank o . aut od ark . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . graphics . drawable . Anim atable 2 Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroid . view . animation . Accel erate Interpolator Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . Request Manager Ċ import Ġcom . bump tech . glide . load . engine . Disk Cache Strategy Ċ import Ġcom . bump tech . glide . load . resource . drawable . Drawable Transition Options Ċ import Ġme . rank o . aut od ark . R Ċ import Ġme . rank o . aut od ark . Utils . Circular Animation Util Ċ import Ġme . rank o . aut od ark . Utils . View Util Ċ import Ġme . rank o . aut od ark . model . User Application Info Ċ Ċ class ĠBlock ListAdapter ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Manager : ĠRequest Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener : ĠApp Select Listener ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Block ListAdapter . Base ViewHolder < Any >>() Ġ{ ĊĊĠĠĠ Ġinterface ĠApp Select Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon App BlockState Changed ( packageName : ĠString ): ĠBoolean ĊĊĠĠĠĠĠĠĠ Ġfun Ġis App Blocked ( packageName : ĠString ): ĠBoolean ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Edit Item Clicked ( packageName : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpackage Manager Ġ= Ġcontext . package Manager ĊĊĠĠĠ Ġprivate Ġvar Ġdata : ĠList < Any > Ġ= Ġempty List () ĊĊĠĠĠ Ġprivate Ġvar Ġis Search Mode Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Refresh ing Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġri pple Anim Duration Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . resources . getInteger ( android . R . integer . config _ short Anim Time ). to Long () ĊĊĠĠĠ Ġprivate Ġval Ġm Request Ġ= Ġrequest Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Drawable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. disk Cache Strategy ( Disk Cache Strategy . NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. transition ( Drawable Transition Options . with Cross Fade ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ attention ) ĊĊĠĠĠ Ġabstract Ġclass ĠBase ViewHolder < T >( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġbind ( data : ĠT , Ġlistener : ĠApp Select Listener ) ĊĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġre cycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMini ViewHolder ( view : ĠView , Ġprivate Ġval Ġm Listener : ĠApp Select Listener ) Ġ: ĠBase ViewHolder < String >( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġid : ĠTextView Ġ= Ġview . findViewById ( R . id . app ID ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( data : ĠString , Ġlistener : ĠApp Select Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Util . set Stri ke FontStyle ( id , Ġlistener . is App Blocked ( data ). not ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid . text Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġm Listener . on Edit Item Clicked ( data ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġre cycle () Ġ= ĠitemView . setOnClickListener ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠApp ViewHolder ( view : ĠView ) Ġ: ĠBase ViewHolder < Application Info >( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġroot R ipple : ĠView Ġ= Ġview . findViewById ( R . id . app Root Bg ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġroot View : ĠRelative Layout Ġ= Ġview . findViewById ( R . id . app Root ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġicon : ĠImageView Ġ= Ġroot View . findViewById ( R . id . icon ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġindicator : ĠImageView Ġ= Ġroot View . findViewById ( R . id . indicator ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠTextView Ġ= Ġroot View . findViewById ( R . id . name ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġid : ĠTextView Ġ= Ġroot View . findViewById ( R . id . app ID ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( data : ĠApplication Info , Ġlistener : ĠApp Select Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Blocked Mark ( listener . is App Blocked ( data . packageName ), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Blocked Ġ= Ġlistener . on App BlockState Changed ( data . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Blocked Mark ( is Blocked , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Request . load ( data ). into ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid . text Ġ= Ġdata . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġif Ġ( data Ġ! is ĠUser Application Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . load Label ( package Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . context . getString ( R . string . app _ bad ged _ label , Ġdata . load Label ( package Manager ), Ġdata . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Search Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Animation Ġ= ĠAnimation Utils . load Animation ( root View . context , ĠR . anim . item _ shift _ vertical ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . start Animation ( m Animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġapply Blocked Mark ( is Blocked : ĠBoolean , Ġanimate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġif Ġ( is Blocked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( indicator . drawable Ġas ĠAnim atable 2 ). start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠCircular Animation Util . build Animator ( root R ipple , Ġroot R ipple , Ġ 2 5 6 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . interpol ator Ġ= ĠAccel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġri pple Anim Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Anim Ġ= ĠAlpha Animation ( 0 . 6 f , Ġ 0 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . duration Ġ= Ġri pple Anim Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Anim . interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot R ipple . start Animation ( alpha Anim ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot R ipple . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġre cycle () Ġ= Ġroot View . setOnClickListener ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase ViewHolder < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( view Type Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp ViewHolder ( LayoutInflater . from ( parent . context ). inflate ( R . layout . item _ block _ list , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMini ViewHolder ( LayoutInflater . from ( parent . context ). inflate ( R . layout . item _ block _ list _ minimum , Ġparent , Ġfalse ), Ġlistener ) ĊĠĠĠĠĠĠĠ Ġ} Ġas ĠBase ViewHolder < Any > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From RecyclerView ( re cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠsetData ( emptyList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( holder : ĠBase ViewHolder < Any >) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase ViewHolder < Any >, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( data [ position ], Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġdata . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ= Ġif Ġ( data [ position ] Ġis ĠApplication Info ) Ġ 0 Ġelse Ġ 1 ĊĊĠĠĠ Ġfun ĠsetData ( data : ĠList < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Search Mode ( is Search Mode : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Search Mode Ġ= Ġis Search Mode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Refresh ing ( is Refresh ing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Refresh ing Ġ= Ġis Refresh ing ĊĠĠĠ Ġ} Ċ }