package Ġcom . lut alic . l ub o ard . presentation . main . tabs . maint ab . board Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . PopupMenu Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . lut alic . l ub o ard . R Ċ import Ġcom . lut alic . l ub o ard . databinding . Fragment Board Binding Ċ import Ġcom . lut alic . l ub o ard . model . database . entities . Post Ċ import Ġcom . lut alic . l ub o ard . presentation . main . tabs . maint ab . adapters . Posts Adapter Ċ import Ġcom . lut alic . l ub o ard . presentation . main . tabs . maint ab . adapters . Spaces Item Decoration Ċ import Ġcom . lut alic . l ub o ard . presentation . main . tabs . maint ab . boards list . Board List Fragment Ċ import Ġcom . lut alic . l ub o ard . presentation . main . tabs . maint ab . boards list . Board List Fragment Directions Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠBoard Fragment Ġ: ĠFragment ( R . layout . fragment _ board ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Board Binding ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠBoard ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġval Ġargs Ġby Ġnav Args < Board Fragment Args >() ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Board Binding . bind ( view ) ĊĠĠĠĠĠĠĠ ĠviewModel . init () ĊĠĠĠĠĠĠĠ Ġinit RecyclerView () ĊĠĠĠĠĠĠĠ Ġbinding . floating Button Add Post . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Add Click ( args . board . id , Ġargs . board . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . image Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhide Button On Scroll () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġon Add Click ( board Id : ĠInt , Ġboard Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBoard Fragment Directions . action Board Fragment ToAdd New Post Fragment ( board Id , Ġboard Name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Button On Scroll () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . posts RecyclerView . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll StateChanged ( re cyclerView : ĠRecyclerView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newState Ġ== ĠRecyclerView . SCROLL _ STATE _ IDLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . floating Button Add Post . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Scroll StateChanged ( re cyclerView , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ> Ġ 0 Ġ|| Ġdy Ġ< Ġ 0 Ġ&& Ġbinding . floating Button Add Post . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . floating Button Add Post . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposts Adapter Ġ= ĠPosts Adapter ( object Ġ: ĠPosts Adapter . Listener Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Click ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġformat : ĠDateTime Formatter Ġ= ĠDateTime Formatter . of Pattern (" dd - MM - yyyy ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard Fragment Directions . action Board Fragment To Edit Post Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Long Click ( post : ĠPost , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpopup Menu Ġ= ĠPopup Menu ( view . context , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . menu . add ( 0 , ĠID _ REMOVE , ĠMenu . NONE , Ġ" Remove ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// popup Menu . menu . add ( 0 , ĠID _ EDIT , ĠMenu . NONE , Ġ" Edit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ID _ EDIT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard Fragment Directions . action Board Fragment To Edit Post Fragment ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID _ REMOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . remove Post ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . posts RecyclerView . adapter Ġ= Ġposts Adapter ĊĠĠĠĠĠĠĠ Ġbinding . posts RecyclerView . layout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġbinding . posts RecyclerView . addItem Decoration ( Spaces Item Decoration ( 1 0 )) ĊĠĠĠĠĠĠĠ Ġposts Adapter . update Adapter ( viewModel . posts . value ) ĊĠĠĠĠĠĠĠ ĠviewModel . posts . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposts Adapter . update Adapter ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠID _ REMOVE Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠID _ EDIT Ġ= Ġ 4 ĊĊĠĠĠ Ġ} Ċ }