package Ġorg . open h dp . h dt . ui . history Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġorg . open h dp . h dt . data . entities . Timestamp Ċ import Ġorg . open h dp . h dt . databinding . Item Time Entry Binding Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ val ĠDATE _ FORMAT Ġ= ĠSimpleDateFormat (" HH : mm : ss Ġ( dd - MMM - yyyy )", ĠLocale . EN GL ISH ) Ċ Ċ val Ġdiff Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Timestamp >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠTimestamp , Ġnew Item : ĠTimestamp ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠTimestamp , Ġnew Item : ĠTimestamp ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠHistory Entries Adapter Ġ: ĊĠĠĠ Ġandroidx . recyclerview . widget . ListAdapter < Timestamp , ĠHistory ViewHolder >( diff ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠHistory ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Time Entry Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠHistory ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠHistory ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠgetItem ( position ) ĊĊĠĠĠĠĠĠĠ Ġholder . binding . entry Name . text Ġ= Ġitem . as Duration () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTimestamp ?. as Duration (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstop Time Ġ= Ġstop Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( stop Time Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Started Ġ${ DATE _ FORMAT . format ( Date ( startTime ))} Ġand Ġstill Ġruns " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġkotlin . math . abs ( stop Time Ġ- ĠstartTime ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Seconds Ġ= ĠTimeUnit . MILLISECONDS . to Seconds ( diff ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġtotal Seconds Ġ/ Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġtotal Seconds Ġ/ Ġ 3 6 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% 0 2 d :% 0 2 d :% 0 2 d ", Ġhours , Ġminutes . rem ( 6 0 ), Ġtotal Seconds . rem ( 6 0 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Started Ġ${ DATE _ FORMAT . format ( Date ( startTime ))} Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Ended Ġ${ DATE _ FORMAT . format ( Date ( stop Time )) }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n ($ duration Ġtotal )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠHistory ViewHolder ( val Ġbinding : ĠItem Time Entry Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root )