/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠDi ep DT Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . one vn . browser . legacy . history Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . Port er D uff Color Filter Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . text . format . DateFormat Ċ import Ġandroid . util . Sparse Boolean Array Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġca . bar ren ec he a . widget . recyclerview . decoration . Sticky Header Adapter Ċ import Ġca . bar ren ec he a . widget . recyclerview . decoration . Sticky Header Decoration Ċ import Ġcom . one vn . browser . core . utility . utils . Font Utils Ċ import Ġcom . one vn . browser . favicon . Fav icon Manager Ċ import Ġcom . one vn . browser . legacy . R Ċ import Ġcom . one vn . browser . legacy . settings . data . AppData Ċ import Ġcom . one vn . browser . legacy . utils . Theme Utils Ċ import Ġcom . one vn . browser . ui . extensions . decode P un y Code Url Host Ċ import Ġcom . one vn . browser . ui . widget . recycler . On Recycler Listener Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠBrowser History Adapter Ġ@ Suppress Lint (" SimpleDateFormat ") Ċ constructor ( context : ĠContext , Ġprivate Ġval Ġmanager : ĠBrowser History Manager , Ġprivate Ġval Ġpick Mode : ĠBoolean , Ġprivate Ġval Ġlistener : ĠOn History Recycler Listener ) Ġ: ĠRecyclerView . Adapter < Browser History Adapter . History Holder >(), ĠSt icky Header Adapter < Browser History Adapter . Header Holder > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdefault Color Filter Ġ= ĠPort er D uff Color Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Utils . getColor From Theme Res ( context , ĠR . attr . icon Color ), ĠPort er D uff . Mode . SRC _ AT OP ) ĊĊĠĠĠ Ġprivate Ġval ĠdateFormat Ġ= ĠDate Format . getLong DateFormat ( context ) ĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġprivate Ġval Ġtime Format Ġ= ĠSimpleDateFormat (" kk : mm ") ĊĠĠĠ Ġprivate Ġval Ġfav icon Manager Ġ= ĠF av icon Manager . getInstance ( context . application Context ) ĊĠĠĠ Ġprivate Ġvar Ġhist ories : ĠMutable List < Browser History > Ġ= Ġmanager . getList ( 0 , Ġ 1 0 0 ) ĊĠĠĠ Ġprivate Ġvar Ġm Query : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġvar Ġm Decoration : ĠSt icky Header Decoration ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĊĠĠĠ Ġvar Ġis Multi Select Mode : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( multi Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( multi Select Ġ!= Ġis Multi Select Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġmulti Select ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! multi Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Selected . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected ItemCount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġselected ItemCount : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġval Ġitem Selected Ġ= ĠSparse Boolean Array () ĊĠĠĠ Ġprivate Ġval Ġforeground Overlay Ġ= ĠColor Drawable ( Resources Compat . getColor ( context . resources , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . selected _ overlay , Ġcontext . theme )) ĊĊĠĠĠ Ġval Ġselected Items : ĠList < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( item Selected . size () Ġ> Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Selected . value At ( i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( item Selected . key At ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠHistory Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHistory Holder ( in flater . inflate ( R . layout . history _ item , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠHistory Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġhist ories [ holder . adapter Position ] ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġitem . url ?. decode P un y Code Url Host () ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġfav icon Manager [ item . url !! ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( image Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Button . setImage Resource ( R . drawable . ic _ public _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Button . color Filter Ġ= Ġdefault Color Filter ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Button . setImage Bitmap ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Button . color Filter Ġ= Ġfav icon Color Filter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Multi Select Mode Ġ&& Ġis Selected ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . foreground . background Ġ= Ġforeground Overlay ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . foreground . background Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . title TextView . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠ Ġholder . url TextView . text Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġholder . time TextView . text Ġ= Ġtime Format . format ( Date ( item . time )) ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Multi Select Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle ( holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Recycler Item Clicked ( v , Ġholder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOn Long ClickListener Ġ{ Ġv Ġ-> Ġlistener . on Recycler Item Long Clicked ( v , Ġholder . adapter Position ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( pick Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Button . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . overflow Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Button . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Multi Select Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle ( holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Icon Clicked ( v , Ġholder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . overflow Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Multi Select Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle ( holder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Show Menu ( it , Ġholder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhist ories . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem ( position : ĠInt ): ĠBrowser History Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhist ories [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( position : ĠInt ): ĠBrowser History Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhist ories . remove At ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload More () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Query Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhist ories . addAll ( manager . getList ( item Count , Ġ 1 0 0 )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhist ories . addAll ( manager . search ( m Query , Ġitem Count , Ġ 1 0 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Decoration !!. clear Header Cache () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġre Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Query Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġhist ories Ġ= Ġmanager . getList ( 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġm Decoration !!. clear Header Cache () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Query Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġhist ories Ġ= Ġmanager . search ( m Query , Ġ 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġm Decoration !!. clear Header Cache () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Decoration ( header Decoration : ĠSt icky Header Decoration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Decoration Ġ= Ġheader Decoration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Header Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġhist ories [ position ]. time ĊĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġtime ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time In Millis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Header ViewHolder ( parent : ĠViewGroup ): ĠHeader Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHeader Holder ( in flater . inflate ( R . layout . recycler _ view _ header , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind Header ViewHolder ( view Holder : ĠHeader Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . header . text Ġ= ĠdateFormat . format ( Date ( hist ories [ position ]. time )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Select ( position , Ġ! item Selected . get ( position , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Select ( position : ĠInt , Ġis Select : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġitem Selected . get ( position , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġitem Selected . put ( position , Ġis Select ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( old Ġ!= Ġis Select ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Select ) Ġselected ItemCount ++ Ġelse Ġselected ItemCount -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected ItemCount Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Cancel Multi Select Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Selection StateChange ( selected ItemCount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Selected ( position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitem Selected . get ( position , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠHistory Holder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġforeground : ĠView Ġ= ĠitemView . findViewById ( R . id . foreground ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Button : ĠImage Button Ġ= ĠitemView . findViewById ( R . id . image Button ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . title TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġurl TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . url TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġtime TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . time TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġoverflow Button : ĠImage Button Ġ= ĠitemView . findViewById ( R . id . overflow Button ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfontSize Setting Ġ= ĠApp Data . font _ size . history . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fontSize Setting Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnormal Ġ= ĠFont Utils . getText Size ( fontSize Setting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsmall Ġ= ĠFont Utils . get Small er Text Size ( fontSize Setting ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . text Size Ġ= Ġnormal . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl TextView . text Size Ġ= Ġsmall . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime TextView . text Size Ġ= Ġsmall . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠHeader Holder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader : ĠTextView Ġ= ĠitemView Ġas ĠTextView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfontSize Setting Ġ= ĠApp Data . font _ size . history . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fontSize Setting Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . text Size Ġ= ĠFont Utils . getText Size ( fontSize Setting ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn History Recycler Listener Ġ: ĠOn Recycler Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Icon Clicked ( v : ĠView , Ġposition : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Show Menu ( v : ĠView , Ġposition : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Selection StateChange ( items : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Cancel Multi Select Mode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfav icon Color Filter Ġ= ĠPort er D uff Color Filter ( 0 , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠ Ġ} Ċ } Ċ