package Ġcom . example . w yr mp rint . ui . favorite Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . view . Action Mode Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . w yr mp rint . R Ċ import Ġcom . example . w yr mp rint . data . model . to Favorite Thumbnail Ċ import Ġcom . example . w yr mp rint . data . model . to Thumbnail Item View Ċ import Ġcom . example . w yr mp rint . databinding . Frag Favorite Layout Binding Ċ import Ġcom . example . w yr mp rint . injection . injector Ċ import Ġcom . example . w yr mp rint . injection . viewModel Ċ import Ġcom . example . w yr mp rint . ui . browse . view holder . Retry Item View Ċ import Ġcom . example . w yr mp rint . ui . browse . view holder . Thumbnail Item View Ċ import Ġcom . example . w yr mp rint . ui . view models . Favorite ViewModel Ċ import Ġcom . google . android . material . behavior . Hide Bottom View On Scroll Behavior Ċ import Ġcom . mike pen z . fast adapter . Fast Adapter Ċ import Ġcom . mike pen z . fast adapter . I Adapter Ċ import Ġcom . mike pen z . fast adapter . adapters . Item Adapter Ċ import Ġcom . mike pen z . fast adapter . helpers . Action Mode Helper Ċ import Ġcom . mike pen z . fast adapter . helpers . Undo Helper Ċ import Ġcom . mike pen z . fast adapter . select . Select Extension Ċ import Ġcom . mike pen z . fast adapter . select . get Select Extension Ċ import Ġcom . mike pen z . fast adapter . ui . items . Progress Item Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ Ċ class ĠF avorite Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠF rag Favorite Layout Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠF avorite ViewModel Ġby ĠviewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . favorite ViewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠDefault Ġspan Ġcount Ġfor Ġdifferent Ġorient ations . ĊĠĠĠ Ġprivate Ġval ĠSP AN _ COUNT _ POR TRA IT Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠSP AN _ COUNT _ LAND SC APE Ġ= Ġ 4 ĊĊĠĠĠ Ġ// ĠF avorite ĠRe cycler ĠView Ġcomponents ĊĠĠĠ Ġprivate Ġvar Ġfavorite Item Adapter : ĠItem Adapter < Thumbnail Item View >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfast Adapter : ĠFast Adapter < Thumbnail Item View >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġselect Extension : ĠSelect Extension < Thumbnail Item View > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaction Mode Helper : ĠAction Mode Helper < Thumbnail Item View > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġundo Helper : ĠUndo Helper < *> ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠF rag Favorite Layout Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsetup F avorites Browser ( binding . favorites Recycler ) ĊĠĠĠĠĠĠĠ Ġinit Observer s ( viewModel ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġ// ĠRe configure Ġlayout Ġmanager Ġfor Ġthe Ġre cycler Ġview Ġon Ġorientation Ġchange . ĊĠĠĠĠĠĠĠ Ġfast Adapter ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . favorites Recycler . layout Manager Ġ= Ġget Grid LayoutManager ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġappropriate Ġ[ Grid LayoutManager ] Ġfor Ġthe Ġfast Ġadapter Ġpassed Ġin Ġthe Ġfunction . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfast Adapter Ġthe Ġ[ Fast Adapter ] Ġthat Ġwill Ġhelp Ġconfigure Ġthe ĠGrid LayoutManager . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ Grid LayoutManager ] Ġobject Ġconfigured Ġfor Ġthe Ġ[ fast Adapter ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Grid LayoutManager ( fast Adapter : ĠFast Adapter < Thumbnail Item View >): ĠGrid LayoutManager Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Span Count Ġ= Ġwhen Ġ( resources . configuration . orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . OR IENTATION _ LAND SC APE Ġ-> ĠSP AN _ COUNT _ LAND SC APE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSP AN _ COUNT _ POR TRA IT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGrid LayoutManager ( require Context (), Ġcurrent Span Count ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġspan Ġsize Ġfor Ġthe Ġfooter Ġitems . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Size Lookup Ġ= Ġobject Ġ: ĠGrid LayoutManager . Span Size Lookup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Span Size ( position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( fast Adapter . getItem ViewType ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Item (). type Ġ-> Ġcurrent Span Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRetry Item View Ġ{} . type Ġ-> Ġcurrent Span Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġthe Ġfavor ites Ġre cycler Ġview . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfavor ites Recycler Ġthe Ġ[ RecyclerView ] Ġthat 's Ġbeen Ġinfl ated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup F avorites Browser ( favorites Recycler : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfavorite Item Adapter Ġ= ĠItem Adapter () ĊĠĠĠĠĠĠĠ Ġfast Adapter Ġ= ĠFast Adapter . with ( favorite Item Adapter !! ) ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġselection Ġand Ġaction Ġmode Ġhelper Ġfor Ġmulti - selection Ġsetup s . ĊĠĠĠĠĠĠĠ Ġselect Extension Ġ= Ġfast Adapter !!. get Select Extension () ĊĠĠĠĠĠĠĠ Ġaction Mode Helper Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Mode Helper ( fast Adapter !! , ĠR . menu . multi _ selection _ menu , ĠAction Bar CallBack ()) ĊĠĠĠĠĠĠĠ Ġfavor ites Recycler . adapter Ġ= Ġfast Adapter ĊĠĠĠĠĠĠĠ Ġfavor ites Recycler . layout Manager Ġ= Ġget Grid LayoutManager ( fast Adapter !! ) ĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġclick Ġlisteners Ġand Ġmulti - selection . ĊĠĠĠĠĠĠĠ Ġadd Click Listeners ( fast Adapter !! ) ĊĠĠĠĠĠĠĠ Ġsetup Multi Selection Handler ( fast Adapter !! , Ġselect Extension , Ġaction Mode Helper ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġany Ġclick Ġlisteners Ġfor Ġthe Ġ[ Fast Adapter ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfast Adapter Ġthe Ġitem Ġadapter Ġto Ġsetup Ġthe Ġclick Ġlisteners Ġfor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Click Listeners ( fast Adapter : ĠFast Adapter < Thumbnail Item View >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfast Adapter . on ClickListener Ġ= Ġ{ Ġ_, Ġ_, Ġitem , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshould Consume Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġaction Ġmode Ġis Ġactive Ġthen Ġdon 't Ġuse Ġthis Ġclick Ġlistener . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! action Mode Helper . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumbnail Data Ġ= Ġitem . model ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Data . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Reader Action Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF avorite Fragment Directions . action Favorite Fragment To Com ic Pager Activity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ic Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom ic Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( to Reader Action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Consume Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Consume ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġany ĠOb servers Ġfor Ġthe Ġlive Ġdata Ġin Ġthe Ġ[ Favorite ViewModel ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Observer s ( viewModel : ĠF avorite ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . favorite List . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġfavorite List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( favorite List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠF ade Ġin Ġanimation Ġfor Ġthis Ġcontainer . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty F avorites Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . favorites Recycler . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty F avorites Container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . favorites Recycler . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Item Adapter ?. set ( favorite List . to Thumbnail Item View ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġthe Ġmulti Ġselection Ġfor Ġthe Ġfavor ites Ġre cycler Ġview . ĠThe Ġcontext ual Ġaction Ġbar ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġhandled Ġby Ġ[ Action Mode Helper ]' s ĠonClick Ġand Ġon Long Click Ġlisteners . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfast Adapter Ġthe Ġ[ Item Adapter ] Ġfor Ġthe Ġfavorite Ġre cycler Ġview . ĊĠĠĠĠ Ġ* Ġ@ param Ġselection Extension Ġthe Ġ[ Select Extension ] Ġobtained Ġfrom Ġthe Ġ[ Fast Adapter ] ĊĠĠĠĠ Ġ* Ġ@ param Ġaction Mode Helper Ġthe Ġ[ Action Mode Helper ] Ġthat Ġwill Ġhandle Ġthe ĠC AB Ġmenu . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Multi Selection Handler ( ĊĠĠĠĠĠĠĠ Ġfast Adapter : ĠFast Adapter < Thumbnail Item View >, ĊĠĠĠĠĠĠĠ Ġselection Extension : ĠSelect Extension < Thumbnail Item View >, ĊĠĠĠĠĠĠĠ Ġaction Mode Helper : ĠAction Mode Helper < Thumbnail Item View > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġundo Helper Ġ= ĠUndo Helper ( fast Adapter , Ġobject Ġ: ĠUndo Helper . Undo Listener < Thumbnail Item View > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcommit Remove ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions : ĠSet < Int >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremoved : ĠArrayList < Fast Adapter . Relative Info < Thumbnail Item View >> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" Removed : Ġ% s ", Ġremoved . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġselection Extension . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Selectable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Select Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect On Long Click Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġthe Ġadapter Ġto Ġre - route Ġlong Ġclick Ġand Ġclick Ġlisteners Ġto Ġthe ĠAction Mode Helper ĊĠĠĠĠĠĠĠ Ġfast Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Pre ClickListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_: ĠView ?, Ġ_: ĠI Adapter < Thumbnail Item View >, Ġitem : ĠThumb nail Item View , Ġpos : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġaction Mode Helper . onClick ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Pre Long ClickListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_: ĠView ?, Ġ_: ĠI Adapter < Thumbnail Item View >, Ġitem : ĠThumb nail Item View , Ġpos : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Helper . on Long Click ( require Activity () Ġas ĠAppCompatActivity , Ġpos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġaction Ġmode Ġexists Ġthen Ġconsume Ġif Ġnot Ġpass Ġdown Ġthe Ġtree . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Mode Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠC AB Ġcall Ġback s Ġfor Ġthis Ġfragment 's Ġmulti Ġselection . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġinner Ġclass ĠAction Bar CallBack Ġ: ĠAction Mode . Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurrent Bottom Nav Behavior : ĠHide Bottom View On Scroll Behavior < View > ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom Nav Params : ĠCoord inator Layout . LayoutParams ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action Item Clicked ( mode : ĠAction Mode , Ġitem : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . remove _ menu _ item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove F avorites On Multi Select () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . select _ all _ menu _ item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Extension . select () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode . title Ġ= Ġ"${ select Extension . selected Items . size }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġcurrent Ġbottom Ġnavigation Ġscroll Ġbehavior . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Nav Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). main _ navbar _ bottom . layout Params Ġas ĠCoord inator Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Bottom Nav Behavior Ġ= Ġ( bottom Nav Params . behavior Ġas ĠHide Bottom View On Scroll Behavior ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy Action Mode ( mode : ĠAction Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġbottom Ġnavigation Ġview Ġand Ġre - attach Ġits ĠHide Bottom View On Scroll Behavior ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Activity Bottom Navigation () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Prepare Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHide Ġbottom Ġnavigation Ġview Ġand Ġremove Ġits ĠHide Bottom View On Scroll Behavior ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Activity Bottom Navigation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠShow Ġthe Ġbottom Ġnavigation Ġview Ġand Ġset Ġits Ġbehavior Ġto Ġ[ Hide Bottom View On Scroll Behavior ] Ġagain . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġshow Activity Bottom Navigation () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Nav Params . behavior Ġ= Ġcurrent Bottom Nav Behavior ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Bottom Nav Behavior . slide Up ( require Activity (). main _ navbar _ bottom ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHide Ġthe Ġbottom Ġnavigation Ġview Ġfrom Ġthe Ġactivity Ġand Ġremove Ġits Ġ[ Hide Bottom View On Scroll Behavior ] Ġbehavior . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġhide Activity Bottom Navigation () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Bottom Nav Behavior . slide Down ( require Activity (). main _ navbar _ bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Nav Params . behavior Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRemove Ġfavor ites Ġgiven Ġfrom Ġthe Ġ[ select Extension ] Ġitems . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġremove F avorites On Multi Select () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfavorite List Ġ= Ġselect Extension . selected Items . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . model . to Favorite Thumbnail () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . remove F avorites ( favorite List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }