package Ġli ou . ray y uan . ebook search ta iw an . book stor ere order Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . Blend Mode Color Filter Compat Ċ import Ġandroidx . core . graphics . Blend Mode Compat Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ray li u . common main . data . Default Store Names Ċ import Ġli ou . ray y uan . ebook search ta iw an . Base Activity Ċ import Ġli ou . ray y uan . ebook search ta iw an . R Ċ import Ġkotlinx . coroutines . launch Ċ import Ġli ou . ray y uan . ebook search ta iw an . arch . I View Ċ import Ġli ou . ray y uan . ebook search ta iw an . utils . bind View Ċ import Ġli ou . ray y uan . ebook search ta iw an . view . ListItem Touch Callback Ċ import Ġli ou . ray y uan . ebook search ta iw an . view . On Book Store Item Changed Listener Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠBook Store Re order Activity Ġ: ĠBase Activity ( R . layout . activity _ reorder _ stores ), ĊĠĠĠ ĠOn Book Store Item Changed Listener , ĊĠĠĠ ĠI View < Book Store Re order ViewState > Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠBook Store Re order ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġprivate Ġval Ġtoolbar : ĠToolbar Ġby Ġbind View ( R . id . activity _ reorder _ layout _ toolbar ) ĊĠĠĠ Ġprivate Ġval Ġre cyclerView : ĠRecyclerView Ġby Ġbind View ( R . id . activity _ reorder _ recyclerview ) ĊĠĠĠ Ġprivate Ġval Ġadapter : ĠBook store Name Adapter Ġ= ĠBook store Name Adapter ( this ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem Touch Helper : ĠItem Touch Helper ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcheck Marker Option : ĠMenuItem ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Toolbar () ĊĠĠĠĠĠĠĠ Ġwith ( re cyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ( this @ Book Store Re order Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager . VERTICAL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġthis @ Book Store Re order Activity . adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Item Touch Callback Ġ= ĠListItem Touch Callback ( adapter ) ĊĠĠĠĠĠĠĠ Ġitem Touch Helper Ġ= ĠItem Touch Helper ( list Item Touch Callback ) ĊĠĠĠĠĠĠĠ Ġitem Touch Helper . attach To RecyclerView ( re cyclerView ) ĊĠĠĠĠĠĠĠ ĠviewModel . view State . observe ( this , Ġ{ Ġstate Ġ-> Ġrender ( state ) Ġ}) ĊĠĠĠĠĠĠĠ Ġsend User Intent ( Book Store Re order User Intent . Get Previous Saved Sort ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home Button Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . release () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . reorder _ page , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġval Ġcheck Marker Option Ġ= Ġmenu . find Item ( R . id . reorder _ page _ menu _ action _ check ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Dark Theme ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Marker Option . icon . color Filter Ġ= ĠBlend Mode Color Filter Compat . create Blend Mode Color Filter Compat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( this , ĠR . color . dark er _ gray _ 3 B ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlend Mode Compat . SRC _ AT OP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . check Marker Option Ġ= Ġcheck Marker Option ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . reorder _ page _ menu _ action _ check Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġadapter . get Store Names () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Tracker . log Top Selected Store Name ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend User Intent ( Book Store Re order User Intent . Update Sort ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠOn Book Store Item Changed Listener ĊĠĠĠ Ġoverride Ġfun ĠonStart Drag ( view Holder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this :: item Touch Helper . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Touch Helper . start Drag ( view Holder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshow Save Setting Icon () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Store Visibility Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Save Setting Icon () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Save Setting Icon () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this :: check Marker Option . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Marker Option . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĠĠĠ Ġoverride Ġfun Ġrender ( view State : ĠBook Store Re order ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBook Store Re order ViewState . Back To Previous Page Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBook Store Re order ViewState . Prepare Book Sort Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set Store Names ( view State . book Sort ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend User Intent ( user Intent : ĠBook Store Re order User Intent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . user Intent s . send ( user Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }