package Ġde . ps dev . dev drawer . profiles Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . recyclerview . selection . Selection Tracker Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġde . ps dev . dev drawer . R Ċ import Ġde . ps dev . dev drawer . database . Filter Type Ċ import Ġde . ps dev . dev drawer . database . Package Filter Ċ import Ġde . ps dev . dev drawer . databinding . ListItem Package Filter Binding Ċ import Ġde . ps dev . dev drawer . utils . layout Inflater Ċ Ċ class ĠPackage Filter ListAdapter ( ĊĠĠĠ Ġprivate Ġval ĠonDelete ClickListener : ĠPackage Filter ActionListener , ĊĠĠĠ Ġprivate Ġval Ġon Preview Filter ClickListener : ĠPackage Filter ActionListener Ċ ) Ġ: ĠList Adapter < Package Filter , ĠPackage Filter ListAdapter . Package Filter ViewHolder >( Package Filter . DIFF _ CALLBACK ) Ġ{ ĊĊĠĠĠ Ġvar Ġselection Tracker : ĠSelection Tracker < String >? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ================================================================= ================================================ ========= ĊĠĠĠ Ġ// ĠList Adapter ĊĠĠĠ Ġ// Ġ================================================================= ================================================ ========= ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠPackage Filter ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠonClick Listener : ĠPackage Filter ActionListener Ġ= Ġ{ Ġpackage Filter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Tracker ?. select ( package Filter . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠPackage Filter ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= ĠListItem Package Filter Binding . inflate ( parent . layout Inflater , Ġparent , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ= ĠonClick Listener , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete ClickListener Ġ= ĠonDelete ClickListener , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Preview Filter ClickListener Ġ= Ġon Preview Filter ClickListener ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠPackage Filter ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Filter Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġval Ġis Selected Ġ= Ġselection Tracker ?. isSelected ( package Filter . id ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġholder . bind To ( package Filter , Ġis Selected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠPackage Filter Ġ= Ġsuper . getItem ( position ) ĊĊĠĠĠ Ġclass ĠPackage Filter ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠListItem Package Filter Binding , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠonClick Listener : ĠPackage Filter ActionListener , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠonDelete ClickListener : ĠPackage Filter ActionListener , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġon Preview Filter ClickListener : ĠPackage Filter ActionListener ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Item : ĠPackage Filter ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind To ( package Filter : ĠPackage Filter , Ġis Activated : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item Ġ= Ġpackage Filter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . is Activated Ġ= Ġis Activated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener ( package Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Res Ġ= Ġwhen Ġ( package Filter . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Type . PACKAGE _ NAME Ġ-> ĠR . drawable . ic _ regex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Type . SIGNATURE Ġ-> ĠR . drawable . ic _ certificate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Icon . setImage Resource ( icon Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Name . text Ġ= Ġwhen Ġ( package Filter . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Type . PACKAGE _ NAME Ġ-> Ġpackage Filter . filter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Type . SIGNATURE Ġ-> Ġpackage Filter . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( btn Preview ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Preview Filter ClickListener ( package Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( btn Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġpackage Filter . type Ġ== ĠFilter Type . SIGNATURE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġwhen Ġ( package Filter . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Type . PACKAGE _ NAME Ġ-> Ġpackage Filter . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Type . SIGNATURE Ġ-> Ġ" SHA 2 5 6 : Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Filter . filter . uppercase (). chunk ed Sequence ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( item View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . close , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete ClickListener ( package Filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }