package Ġcom . dev _ vl ad . coll ared _ do ves . views . po ems Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ 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 Ġcom . dev _ vl ad . coll ared _ do ves . R Ċ import Ġcom . dev _ vl ad . coll ared _ do ves . databinding . Fragment Po em Details Binding Ċ import Ġcom . dev _ vl ad . coll ared _ do ves . models . entities . Po ems Ċ import Ġcom . dev _ vl ad . coll ared _ do ves . view _ models . Po em Details ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint ĊĊ Ċ @ Android EntryPoint Ċ class ĠPo em Details Fragment Ġ: ĠFragment ( R . layout . fragment _ po em _ details ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠPo ems Fragment :: class . java . simple Name ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠPo em Details ViewModel Ġby Ġview Models < Po em Details ViewModel >() ĊĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Po em Details Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Po em Details Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠPo em Details Fragment Args Ġby Ġnav Args () ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . fetch Po em ( args . Po em Id ). observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . init Po em ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Po em ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(:: action Toggle Fav . isInitialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fav Icon ( it . is Favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Fav Status Ġ= Ġit . is Favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Po em ( po em : ĠPo ems ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpo em Title . text Ġ= Ġpo em . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpo em Subject . text Ġ= Ġpo em . body ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/ ******** **** Ġpo ems Ġactions Ġ********* *******/ ĊĠĠĠ Ġprivate Ġfun Ġtoggle Is Favorite () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . toggle Is Favorite () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Fav Icon ( is Fav Po em Ġ: ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Fav Po em ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Toggle Fav . setIcon ( R . drawable . ic _ favorite _ filled ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Toggle Fav . setIcon ( R . drawable . ic _ favorite ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġedit Po em () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO Ġwhen Ġhook Ġup Ġwith Ġserver , Ġcheck Ġif Ġthis Ġpo em Ġis Ġnot Ġuser 's Ġown Ġpo em ĊĠĠĠĠĠĠĠ Ġ// TODO Ġfor Ġnow Ġit Ġis Ġtheir s ... so Ġthis Ġis Ġan Ġedit Ġaction ĊĠĠĠĠĠĠĠ Ġval Ġpo em Id Ġ= Ġargs . Po em Id ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPo em Details Fragment Directions . action Po em Details Fragment To Po ems Add Edit Fragment ( po em Id ) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Po em (){ ĊĠĠĠĠĠĠ Ġval Ġpo em Ġ= ĠviewModel . get Po em For Sharing () ĊĠĠĠĠĠĠ Ġif Ġ( po em . isNotBlank ()){ ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Intent : ĠIntent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠIntent . ACTION _ SEND ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ TEXT , Ġpo em ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Intent Ġ= ĠIntent . create Chooser ( send Intent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( share Intent ) ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ ******** ***** ĠMENU Ġ********* *****/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaction Toggle Fav Ġ: ĠMenuItem ĊĠĠĠ Ġprivate Ġvar Ġpending Fav Status : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . po em _ details _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġaction Toggle Fav Ġ= Ġmenu . find Item ( R . id . action _ toggle _ fav ) ĊĠĠĠĠĠĠĠ Ġpending Fav Status ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Fav State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fav Icon ( pending Fav State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Fav Status Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ edit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Po em () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ toggle _ fav -> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Is Favorite () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ share Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Po em () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠOther Ġlife Ġcycle Ġmethods Ġ**/ ĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ }