/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGreen ĠM ush room Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġme . gm . clean er . plugin . module . app management Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . android . material . transition . platform . Hold Ċ import Ġme . gm . clean er . plugin . R Ċ import Ġme . gm . clean er . plugin . databinding . App list Item Binding Ċ import Ġme . gm . clean er . plugin . k tx . build Styled Title Ċ import Ġme . gm . clean er . plugin . k tx . medium Anim Time Ċ import Ġme . gm . clean er . plugin . module . Preferences Package Info Ċ Ċ class ĠApp ListAdapter ( private Ġval Ġfragment : ĠApp List Fragment ) Ġ: ĊĠĠĠ ĠList Adapter < Preferences Package Info , ĠApp ListAdapter . ViewHolder >( CALLBACK ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnav Controller Ġby Ġlazy Ġ{ Ġfragment . find Nav Controller () Ġ} ĊĠĠĠ Ġprivate Ġval Ġactivity Ġ= Ġfragment . require Activity () Ġas ĠAppCompatActivity ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠViewHolder ( App list Item Binding . inflate ( LayoutInflater . from ( parent . context ))) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġholder . binding ĊĠĠĠĠĠĠĠ Ġval Ġpi Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ ĠG lide . with ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( pi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . icon ) ĊĠĠĠĠĠĠĠ Ġbinding . title . text Ġ= Ġpi . label ĊĠĠĠĠĠĠĠ Ġbinding . summary . text Ġ= Ġif Ġ( pi . rule Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . build Styled Title ( fragment . getString ( R . string . enabled _ rule _ count , Ġpi . rule Count )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpi . packageName ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . root . transition Name Ġ= Ġpi . packageName ĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nav Controller . current Destination ?. id Ġ!= ĠR . id . app list _ fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . enter PackageName Ġ= Ġpi . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . exit Transition Ġ= ĠHold (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġfragment . require Context (). medium Anim Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠApp List Fragment Directions . action App list To App ( pi , Ġpi . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= ĠFragment Navigator Extras ( it Ġto Ġit . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( direction , Ġextras ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( fragment . enter PackageName Ġ== Ġpi . packageName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . start Post p oned Enter Transition () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( val Ġbinding : ĠApp list Item Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCALL BACK : ĠDiff Util . Item Callback < Preferences Package Info > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠDiff Util . Item Callback < Preferences Package Info >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠPreferences Package Info , Ġnew Item : ĠPreferences Package Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ= Ġold Item . packageName Ġ== Ġnew Item . packageName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠPreferences Package Info , Ġnew Item : ĠPreferences Package Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ= Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ