/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠRead ium ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠBSD - style Ġlicense Ċ Ġ* Ġavailable Ġin Ġthe Ġtop - level ĠLICENSE Ġfile Ġof Ġthe Ġproject . Ċ Ġ*/ Ċ Ċ package Ġorg . read ium . r 2 . test app . dr m Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . set Fragment Result Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . joda . time . format . DateTime Format Ċ import Ġorg . read ium . r 2 . l cp . Material Renew Listener Ċ import Ġorg . read ium . r 2 . l cp . l cp License Ċ import Ġorg . read ium . r 2 . shared . User Exception Ċ import Ġorg . read ium . r 2 . test app . R Ċ import Ġorg . read ium . r 2 . test app . databinding . Fragment D rm Management Binding Ċ import Ġorg . read ium . r 2 . test app . reader . Reader ViewModel Ċ import Ġorg . read ium . r 2 . test app . utils . view Lifecycle Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ Ċ class ĠD rm Management Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmodel : ĠD rm Management ViewModel ĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠFragment D rm Management Binding Ġby Ġview Lifecycle () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpublication Ġ= ĠViewModel Provider ( require Activity ()). get ( Reader ViewModel :: class . java ). publication ĊĠĠĠĠĠĠĠ Ġval Ġlicense Ġ= ĠcheckNotNull ( publication . l cp License ) ĊĠĠĠĠĠĠĠ Ġval Ġrenew Listener Ġ= ĠMaterial Renew Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Ġ= Ġlicense , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaller Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager Ġ= Ġthis . child FragmentManager ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Factory Ġ= ĠL cp Management ViewModel . Factory ( license , Ġrenew Listener ) ĊĠĠĠĠĠĠĠ Ġmodel Ġ= ĠViewModel Provider ( this , Ġmodel Factory )[ L cp Management ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment D rm Management Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInformation ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value License Type . text Ġ= Ġmodel . type ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value State . text Ġ= Ġmodel . state ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value Provider . text Ġ= Ġmodel . provider ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value Iss ued . text Ġ= Ġmodel . iss ued . to Formatted String () ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value Updated . text Ġ= Ġmodel . updated . to Formatted String () ĊĊĠĠĠĠĠĠĠ Ġ// ĠRights ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value Print s Left . text Ġ= Ġmodel . prints Left ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value Cop ies Left . text Ġ= Ġmodel . copies Left ĊĊĠĠĠĠĠĠĠ Ġval Ġdates Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . start Ġ!= Ġnull Ġ&& Ġmodel . end Ġ!= Ġnull Ġ&& Ġmodel . start Ġ!= Ġmodel . end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġbinding . dr m Start . visibility Ġ= Ġdates Visibility ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value Start . text Ġ= Ġmodel . start . to Formatted String () ĊĠĠĠĠĠĠĠ Ġbinding . dr m End . visibility Ġ= Ġdates Visibility ĊĠĠĠĠĠĠĠ Ġbinding . dr m Value End . text Ġ= Ġmodel . end ?. to Formatted String () ĊĊĠĠĠĠĠĠĠ Ġ// ĠActions ĊĠĠĠĠĠĠĠ Ġbinding . dr m Label Actions . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . can Renew Loan Ġ|| Ġmodel . can Return Publication ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġbinding . dr m Button Renew . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( model . can Renew Loan ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġon Renew Loan Clicked () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . dr m Button Return . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( model . can Return Publication ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġon Return Publication Clicked () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Renew Loan Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . renew Loan ( this @ D rm Management Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġnew Date Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . dr m Value End . text Ġ= Ġnew Date . to Formatted String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . toast User Message ( require View ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Return Publication Clicked () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( getString ( R . string . return _ publication )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( getString ( R . string . cancel )) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( getString ( R . string . return _ button )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . return Publication () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠD rm Management Contract . create Result ( has Returned Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment Result ( D rm Management Contract . REQUEST _ KEY , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . toast User Message ( require View ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠDate ?. to Formatted String () Ġ= ĊĠĠĠĠĠĠĠ ĠDateTime ( this ). toString ( DateTime Format . short DateTime ()). or Empty () Ċ Ċ // ĠFIXME : Ġthe Ġtoast Ġis Ġdrawn Ġbehind Ġthe Ġnavigation Ġbar Ċ private Ġfun ĠException . toast User Message ( view : ĠView ) Ġ{ ĊĠĠĠ Ġif Ġ( this Ġis ĠUser Exception ) ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , ĠgetUser Message ( view . context ), ĠSn ackbar . LENGTH _ LONG ). show () ĊĊĠĠĠ ĠTim ber . d ( this ) Ċ } Ċ