package Ġcom . not o . app . library čĊč Ċ import Ġandroid . os . Build č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . view .* č Ċ import Ġandroid . view . animation . Animation Utils č Ċ import Ġandroid . view . animation . Translate Animation č Ċ import Ġandroidx . activity . add Callback č Ċ import Ġandroidx . core . graphics . Color Utils č Ċ import Ġandroidx . core . view . MenuItem Compat č Ċ import Ġandroidx . core . view . forEach č Ċ import Ġandroidx . core . view . isVisible č Ċ import Ġandroidx . fragment . app . Fragment č Ċ import Ġandroidx . lifecycle . lifecycle Scope č Ċ import Ġandroidx . navigation . fragment . nav Args č Ċ import Ġandroidx . recyclerview . widget .* č Ċ import Ġcom . air bnb . e po xy . E po xy Controller č Ċ import Ġcom . air bnb . e po xy . E po xy ViewHolder č Ċ import Ġcom . not o . app . R č Ċ import Ġcom . not o . app . Ui State č Ċ import Ġcom . not o . app . databinding . Library Fragment Binding č Ċ import Ġcom . not o . app . domain . model .* č Ċ import Ġcom . not o . app . label . label ListItem č Ċ import Ġcom . not o . app . map č Ċ import Ġcom . not o . app . util .* č Ċ import Ġkotlinx . coroutines . flow .* č Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel č Ċ import Ġorg . k oin . core . parameter . parameters Of čĊč Ċ class ĠLibrary Fragment Ġ: ĠFragment () Ġ{ čĊčĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Library ViewModel > Ġ{ Ġparameters Of ( args . library Id ) Ġ} čĊčĊĠĠĠ Ġprivate Ġval Ġargs Ġby Ġnav Args < Library Fragment Args >() čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġe po xy Controller : ĠE po xy Controller čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem Touch Helper : ĠItem Touch Helper čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ= čĊĠĠĠĠĠĠĠ ĠLibrary Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ). with Binding Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup State () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Listeners () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup State () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġarchive MenuItem Ġ= Ġb ab . menu . find Item ( R . id . archive ) čĊĠĠĠĠĠĠĠ Ġrv . edge Effect Factory Ġ= ĠBo unce Edge Effect Factory () čĊčĊĠĠĠĠĠĠĠ ĠviewModel . library čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġlibrary Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Library ( library ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġcontext Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġcontext . string Resource ( R . string . archive , Ġlibrary . title ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem Compat . set Tooltip Text ( archive MenuItem , Ġtext ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem Compat . setContent Description ( archive MenuItem , Ġtext ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed By Ġ{ Ġlibrary Ġ-> Ġlibrary . layout Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġlibrary Ġ-> Ġsetup LayoutManager ( library . layout ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( lifecycle Scope ) čĊčĊĠĠĠĠĠĠĠ Ġcombine ( čĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . notes , čĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . labels , čĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . font , čĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . library , čĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Search . text As Flow () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onStart Ġ{ Ġemit ( et Search . text ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter NotNull () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . trim () Ġ}, čĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġnotes , Ġlabels , Ġfont , Ġlibrary , Ġsearch Term Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Notes And Labels ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotes . map Ġ{ Ġit . filter Content ( search Term ). filter Selected Labels ( labels ) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibrary čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Item Touch Helper ( library . layout ) čĊĠĠĠĠĠĠĠ Ġ}. launch In ( lifecycle Scope ) čĊčĊĠĠĠĠĠĠĠ ĠviewModel . is Search Enabled čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġis Search Enabled Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Search Enabled ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Search () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Search () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( lifecycle Scope ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup Listeners () Ġ{ čĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Labels Ids Ġ= ĠviewModel . labels . value čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . value Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . key . id Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Long Array () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate S af ely ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLibrary Fragment Directions . action Library Fragment To Note Fragment ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . library Id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels Ids Ġ= Ġselected Labels Ids čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġtb . set Navigation OnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Search () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate Up () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġb ab . set Navigation OnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate S af ely ( Library Fragment Directions . action Library Fragment To Library Dialog Fragment ( args . library Id )) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġb ab . setOn MenuItem ClickListener Ġ{ Ġmenu Item Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( menuItem . itemId ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . archive Ġ-> Ġsetup Arch ived Notes MenuItem () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . search Ġ-> Ġsetup Search MenuItem () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . enable Search () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrv Animation Ġ= ĠTranslate Animation ( 0 F , Ġ 0 F , Ġ- 5 0 F , Ġ 0 F ). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 2 5 0 čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġtil Search . isVisible Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġrv . start Animation ( rv Animation ) čĊĠĠĠĠĠĠĠ Ġet Search . request Focus () čĊĠĠĠĠĠĠĠ Ġet Search . show Keyboard Using Imm () čĊčĊĠĠĠĠĠĠĠ Ġactivity ?. on Back Pressed Dispatcher ?. add Callback ( view Lifecycle Owner ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Search () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. on Back Pressed () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . disable Search () Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( til Search . isVisible ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrv Animation Ġ= ĠTranslate Animation ( 0 F , Ġ 0 F , Ġ 5 0 F , Ġ 0 F ). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 2 5 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil Search . isVisible Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv . start Animation ( rv Animation ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġet Search . text Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġactivity ?. hide Keyboard ( root ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup LayoutManager ( layout : ĠLayout ) Ġ{ čĊĠĠĠĠĠĠĠ Ġwhen Ġ( layout ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayout . Linear Ġ-> Ġrv . layout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayout . Grid Ġ-> Ġrv . layout Manager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġrv . start Animation ( Animation Utils . load Animation ( context , ĠR . anim . show )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup Notes And Labels ( čĊĠĠĠĠĠĠĠ Ġstate : ĠUi State < List < Note With Labels >>, čĊĠĠĠĠĠĠĠ Ġlabels : ĠMap < Label , ĠBoolean >, čĊĠĠĠĠĠĠĠ Ġfont : ĠFont , čĊĠĠĠĠĠĠĠ Ġlibrary : ĠLibrary , čĊĠĠĠ Ġ) Ġ{ čĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUi State . Loading Ġ-> Ġrv . setup Progress Indicator ( library . color ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUi State . Success Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotes Ġ= Ġstate . value čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . with Models Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe po xy Controller Ġ= Ġthis čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel ListItem Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" labels ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels ( labels ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ( library . color ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon All Label ClickListener Ġ{ Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . clear Label Selection () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Label ClickListener Ġ{ Ġlabel Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( labels . toList (). first Ġ{ Ġit . first Ġ== Ġlabel Ġ}. second ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . de select Label ( label . id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . select Label ( label . id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Label Long ClickListener Ġ{ Ġlabel Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate S af ely ( Library Fragment Directions . action Library Fragment To Label Dialog Fragment ( args . library Id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . id )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon New Label ClickListener Ġ{ Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate S af ely ( Library Fragment Directions . action Library Fragment To New Label Dialog Fragment ( args . library Id )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote List Sorting Item Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorting Type ( library . sorting Type ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorting Order ( library . sorting Order ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotes Count ( notes . size ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot o Color ( library . color ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ{ Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate S af ely ( Library Fragment Directions . action Library Fragment To Note List Sorting Dialog Fragment ( args . library Id )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġ{ Ġitems : ĠList < Note With Labels > Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ Ġentry Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Item Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( entry . first . id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote ( entry . first ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont ( font ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabels ( entry . second ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ( library . color ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Size ( library . note Preview Size ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Show Creation Date ( library . is Show Note Creation Date ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Manual Sorting ( library . sorting Type Ġ== ĠNote List Sorting Type . Manual ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener Ġ{ Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . navigate S af ely ( Library Fragment Directions . action Library Fragment To Note Fragment ( entry . first . library Id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . first . id )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Long ClickListener Ġ{ Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . navigate S af ely ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLibrary Fragment Directions . action Library Fragment To Note Dialog Fragment ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . first . library Id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . first . id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . library Fragment čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Drag Handle Touch Listener Ġ{ Ġview , Ġevent Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ DOWN ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . find Containing ViewHolder ( view )?. let Ġ{ ĠviewHolder Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Touch Helper . start Drag ( view Holder ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . perform Click () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġcontext Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notes . isEmpty ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder Item Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" placeholder ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder ( context . string Resource ( R . string . no _ notes _ found )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Notes Models ( context , Ġlibrary , Ġnotes , Ġitems ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup Arch ived Notes MenuItem (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġnav Controller ?. navigate S af ely ( Library Fragment Directions . action Library Fragment To Library Archive Fragment ( args . library Id )) čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup Search MenuItem (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ ĠviewModel . toggle Is Search Enabled () čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup Library ( library : ĠLibrary ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġcontext Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġcontext . color Resource ( library . color . to Resource ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor State List Ġ= Ġcolor . to Color State List () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtb . title Ġ= Ġlibrary . title čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtb . setTitle TextColor ( color ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtb . navigation Icon ?. mutate ()?. set Tint ( color ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ab . navigation Icon ?. mutate ()?. set Tint ( color ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab . background Tint List Ġ= Ġcolor State List čĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ab . menu . forEach Ġ{ Ġit . icon ?. mutate ()?. set Tint ( color ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil Search . box BackgroundColor Ġ= ĠColor Utils . set Alpha Component ( color , Ġ 2 5 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Search . set Hint TextColor ( color State List ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Search . setTextColor ( color State List ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab . outline Ambient Shadow Color Ġ= Ġcolor čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab . outline Spot Shadow Color Ġ= Ġcolor čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠLibrary Fragment Binding . setup Item Touch Helper ( layout : ĠLayout ) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( this @ Library Fragment :: e po xy Controller . isInitialized ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Touch Helper Callback Ġ= ĠNote Item Touch Helper Callback ( e po xy Controller , Ġlayout ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv . forEach Ġ{ Ġview Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġrv . find Containing ViewHolder ( view ) Ġas ĠE po xy ViewHolder čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠviewHolder . model Ġas ? ĠNote Item čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Ġ!= Ġnull ) ĠviewModel . update Note Position ( model . note , ĠviewHolder . binding Adapter Position ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Touch Helper Ġ= ĠItem Touch Helper ( item Touch Helper Callback ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġattach To RecyclerView ( rv ) Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊ