/* Ċ Ġ* ĠL yn ket Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠA run k umar Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ Ċ package Ġar un . com . chrom er . per app Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġar un . com . chrom er . R Ċ import Ġar un . com . chrom er . data . common . App Ċ import Ġar un . com . chrom er . di . scopes . Per Activity Ċ import Ġar un . com . chrom er . util . glide . app icon . Application Icon Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġcom . bump tech . glide . Request Manager Ċ import Ġcom . mike pen z . community _ material _ type face _ library . Community Material Ċ import Ġcom . mike pen z . icon ics . Icon ics Drawable Ċ import Ġrx . subjects . Publish Subject Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA run Ġon Ġ 2 4 / 0 1 / 2 0 1 6 . Ċ Ġ*/ Ċ @ Per Activity Ċ class ĠPer App ListAdapter Ġ@ Inject Ċ internal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġg lide Requests : ĠRequest Manager Ċ ) Ġ: ĠRecyclerView . Adapter < Per App ListAdapter . Black ListItem ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġapps Ġ= ĠArrayList < App >() ĊĊĠĠĠ Ġprivate Ġval Ġicon Size Dp Ġ= Ġ 2 4 ĊĊĠĠĠ Ġval Ġin cognito Selections : ĠPublish Subject < Pair < String , ĠBoolean >> Ġ= ĠPublish Subject . create < Pair < String , ĠBoolean >>() ĊĠĠĠ Ġval Ġblacklist Selections : ĠPublish Subject < Pair < String , ĠBoolean >> Ġ= ĠPublish Subject . create < Pair < String , ĠBoolean >>() ĊĊĠĠĠ Ġprivate Ġval Ġblacklist Selected : ĠIcon ics Drawable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ics Drawable ( activity ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ( Community Material . Icon . cmd _ earth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Res ( R . color . accent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Dp ( icon Size Dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġblacklist Un Selected : ĠIcon ics Drawable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ics Drawable ( activity ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ( Community Material . Icon . cmd _ earth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Res ( R . color . material _ dark _ light ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Dp ( icon Size Dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġin cognito Selected : ĠIcon ics Drawable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ics Drawable ( activity ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ( Community Material . Icon . cmd _ in cognito ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Res ( R . color . accent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Dp ( icon Size Dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġin cognito Un Selected : ĠIcon ics Drawable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ics Drawable ( activity ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon ( Community Material . Icon . cmd _ in cognito ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Res ( R . color . material _ dark _ light ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Dp ( icon Size Dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBlack ListItem ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBlack ListItem ViewHolder ( LayoutInflater . from ( parent . context ). inflate ( R . layout . activity _ per _ apps _ list _ item _ template , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBlack ListItem ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( apps [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠBlack ListItem ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ Ġg lide Requests . clear ( holder . app Icon !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapps . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġapps [ position ]. hashCode (). to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Apps ( apps : ĠList < App >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . apps . clear () ĊĠĠĠĠĠĠĠ Ġthis . apps . addAll ( apps ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset App ( index : ĠInt , Ġapp : ĠApp ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . apps [ index ] Ġ= Ġapp ĊĠĠĠĠĠĠĠ Ġnotify Item Changed ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠBlack ListItem ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . app _ list _ icon ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġapp Icon : ĠImageView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . app _ list _ name ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar ĠappName : ĠTextView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . app _ list _ package ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġapp Package : ĠTextView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . in cognito Icon ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġin cognito Icon : ĠImageView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ BindView ( R . id . blacklist Icon ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġvar Ġblacklist Icon : ĠImageView ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB utter Kn ife . bind ( this , Ġview ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( app : ĠApp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠappName !!. text Ġ= Ġapp . appName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Package !!. text Ġ= Ġapp . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg lide Requests . load ( Application Icon . create Uri ( app . packageName )). into ( app Icon !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġblacklist Icon !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( if Ġ( app . black List ed ) Ġblacklist Selected Ġelse Ġblacklist Un Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter Position Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent App Ġ= Ġapps [ adapter Position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent App . black List ed Ġ= Ġ! current App . black List ed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblacklist Selections . onNext ( Pair ( current App . packageName , Ġcurrent App . black List ed )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġin cognito Icon !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( if Ġ( app . in cognito ) Ġin cognito Selected Ġelse Ġin cognito Un Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter Position Ġ!= ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent App Ġ= Ġapps [ adapter Position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent App . in cognito Ġ= Ġ! current App . in cognito ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin cognito Selections . onNext ( Pair ( current App . packageName , Ġcurrent App . in cognito )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }