package Ġcom . simple mobile tools . appl a unch er . adapters Ċ Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . simple mobile tools . appl a unch er . R Ċ import Ġcom . simple mobile tools . appl a unch er . activities . Simple Activity Ċ import Ġcom . simple mobile tools . appl a unch er . dialogs . Edit Dialog Ċ import Ġcom . simple mobile tools . appl a unch er . extensions . config Ċ import Ġcom . simple mobile tools . appl a unch er . extensions . db Helper Ċ import Ġcom . simple mobile tools . appl a unch er . models . App Launcher Ċ import Ġcom . simple mobile tools . commons . adapters . My RecyclerView Adapter Ċ import Ġcom . simple mobile tools . commons . dialogs . Confirmation Dialog Ċ import Ġcom . simple mobile tools . commons . extensions . apply Color Filter Ċ import Ġcom . simple mobile tools . commons . extensions . be In visible If Ċ import Ġcom . simple mobile tools . commons . interfaces . Refresh RecyclerView Listener Ċ import Ġcom . simple mobile tools . commons . views . Fast Scroller Ċ import Ġcom . simple mobile tools . commons . views . My RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . item _ app _ launcher . view .* Ċ Ċ class ĠLaunch ers Adapter ( activity : ĠSimple Activity , Ġval Ġlaunch ers : ĠMutable List < App Launcher >, Ġval Ġlistener : ĠRefresh RecyclerView Listener ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠMy RecyclerView , Ġfast Scroller : ĠFast Scroller , Ġitem Click : Ġ( Any ) Ġ-> ĠUnit ) Ġ: ĊĠĠĠĠĠĠĠ ĠMy RecyclerView Adapter ( activity , Ġre cyclerView , Ġfast Scroller , Ġitem Click ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Drag Listener ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Action Menu Id () Ġ= ĠR . menu . cab ĊĊĠĠĠ Ġoverride Ġfun Ġprepare Action Mode ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . cab _ edit ). isVisible Ġ= Ġis One ItemSelected () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaction Item Pressed ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Keys . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cab _ edit Ġ-> Ġshow Edit Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cab _ remove Ġ-> Ġtry Remove Launcher () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= Ġcreate ViewHolder ( R . layout . item _ app _ launcher , Ġparent ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy RecyclerView Adapter . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlauncher Ġ= Ġlaunch ers [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind View ( launcher , Ġtrue , Ġtrue ) Ġ{ ĠitemView , Ġadapter Position Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup View ( item View , Ġlauncher , Ġselected Keys . contains ( launcher . packageName . hashCode ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbind ViewHolder ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġlaunch ers . size ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem With Key ( key : ĠInt ): ĠApp Launcher ? Ġ= Ġlaunch ers . first OrNull Ġ{ Ġit . packageName . hashCode () Ġ== Ġkey Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Selectable ItemCount () Ġ= Ġlaunch ers . size ĊĊĠĠĠ Ġoverride Ġfun Ġget Is Item Selectable ( position : ĠInt ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Selection Key ( position : ĠInt ) Ġ= Ġlaunch ers . get OrNull ( position )?. packageName ?. hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Key Position ( key : ĠInt ) Ġ= Ġlaunch ers . indexOf First Ġ{ Ġit . packageName . hashCode () Ġ== Ġkey Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Edit Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠEdit Dialog ( activity , ĠgetItem With Key ( selected Keys . first ()) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Act Mode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. refresh Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtry Remove Launcher () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity . config . was Remove Info Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Items () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġask Confirm Remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġask Confirm Remove () Ġ{ ĊĠĠĠĠĠĠĠ ĠConfirm ation Dialog ( activity , Ġ"", ĠR . string . remove _ explanation , ĠR . string . ok , ĠR . string . cancel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . config . was Remove Info Shown Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremove Ids Ġ= ĠArrayList < String >( selected Keys . size ) ĊĠĠĠĠĠĠĠ Ġval Ġremove Launch ers Ġ= ĠArrayList < App Launcher >( selected Keys . size ) ĊĠĠĠĠĠĠĠ Ġval Ġpositions Ġ= ĠArrayList < Int >( selected Keys . size ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġselected Keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlauncher Ġ= ĠgetItem With Key ( key ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Ids . add ( launcher . id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Launch ers . add ( launcher ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġlaunch ers . indexOf First Ġ{ Ġit . packageName . hashCode () Ġ== Ġkey Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions . add ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlaunch ers . removeAll ( remove Launch ers ) ĊĠĠĠĠĠĠĠ Ġactivity . db Helper . delete Launch ers ( remove Ids ) ĊĠĠĠĠĠĠĠ Ġpositions . sort Descending () ĊĠĠĠĠĠĠĠ Ġremove Selected Items ( positions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup View ( view : ĠView , Ġlauncher : ĠApp Launcher , Ġis Selected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsetup Ġcheck Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher _ check ?. be In visible If (! isSelected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher _ label . text Ġ= Ġlauncher . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher _ label . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher _ icon . setImage Drawable ( launcher . drawable !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher _ check ?. background ?. apply Color Filter ( primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ