package Ġde . rh ab . w lb timer . adapter ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Keep Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . firebase . ui . firestore . Fire store Recycler Adapter Ċ import Ġcom . firebase . ui . firestore . Fire store Recycler Options Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ import Ġde . rh ab . w lb timer . R Ċ import Ġde . rh ab . w lb timer . model . Session Ċ import Ġorg . th reet en . bp . Z onedDateTime Ċ import Ġorg . th reet en . bp . temporal . Iso Fields ĊĊ Ċ @ Keep Ċ class ĠSession Adapter ( options : ĠFire store Recycler Options < Session >) ĊĠĠĠ Ġ: ĠFire store Recycler Adapter < Session , ĠSession Adapter . Session Holder >( options ) Ġ{ ĊĊĠĠĠ Ġvar Ġlistener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġctx : ĠContext ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSession Holder , Ġposition : ĠInt , Ġmodel : ĠSession ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( model . all Day ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind ViewHolder Session All Day ( holder , Ġposition , Ġmodel ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind ViewHolder Session Timed ( holder , Ġposition , Ġmodel ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSession Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġctx Ġ= Ġv . context ĊĠĠĠĠĠĠĠ Ġreturn ĠSession Holder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Bind ViewHolder Session All Day ( holder : ĠSession Holder , Ġposition : ĠInt , Ġmodel : ĠSession ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġholder . m Ts End View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġholder . m Ts Duration View . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġval Ġts Start Z onedDateTime Ġ= ĠZ onedDateTime . parse ( model . ts Start !! ) !! ĊĠĠĠĠĠĠĠ Ġval Ġweek OfYear Ġ= Ġts Start Z onedDateTime . get ( Iso Fields . WEEK _ OF _ WEEK _ BASE D _ YEAR ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( week OfYear . rem ( 2 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Card . set Card BackgroundColor ( Context Compat . getColor ( ctx , ĠR . color . session _ off _ card _ week _ even )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Card . set Card BackgroundColor ( Context Compat . getColor ( ctx , ĠR . color . session _ off _ card _ week _ odd )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġm Icon Background Ġ= Ġholder . m Icon . background Ġas ĠGradient Drawable ĊĊĠĠĠĠĠĠĠ Ġif Ġ( model . category Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Icon . text Ġ= Ġmodel . category !!. title . substring ( 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Icon Background . setColor ( Color . parse Color ( model . category !!. color )) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Icon . text Ġ= Ġ"-" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Icon Background . setColor ( Color . parse Color ("# 6 6 6 6 6 6 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . m Date View . text Ġ= Ġmodel . getDate Start With Week day () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( model . note Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Ts Start View . text Ġ= Ġmodel . note ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Ts Start View . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Bind ViewHolder Session Timed ( holder : ĠSession Holder , Ġposition : ĠInt , Ġmodel : ĠSession ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġholder . m Ts End View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġholder . m Ts Duration View . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġts Start Z onedDateTime Ġ= ĠZ onedDateTime . parse ( model . ts Start !! ) !! ĊĠĠĠĠĠĠĠ Ġval Ġweek OfYear Ġ= Ġts Start Z onedDateTime . get ( Iso Fields . WEEK _ OF _ WEEK _ BASE D _ YEAR ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( week OfYear . rem ( 2 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Card . set Card BackgroundColor ( Context Compat . getColor ( ctx , ĠR . color . session _ work _ card _ week _ even )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Card . set Card BackgroundColor ( Context Compat . getColor ( ctx , ĠR . color . session _ work _ card _ week _ odd )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġm Icon Background Ġ= Ġholder . m Icon . background Ġas ĠGradient Drawable ĊĊĠĠĠĠĠĠĠ Ġholder . m Date View . text Ġ= Ġmodel . getDate Start With Week day () ĊĊĠĠĠĠĠĠĠ Ġholder . m Ts Start View . text Ġ= Ġmodel . getTime Start () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( model . finished ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Time Z oned Start Ġ= ĠSession . from Default Str ( model . ts Start !! ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Time Z oned End Ġ= ĠSession . from Default Str ( model . ts End !! ) !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Diff Ġ= Ġm Time Z oned End . day OfYear Ġ- Ġm Time Z oned Start . day OfYear ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Offset String : ĠString Ġ= Ġwhen Ġ{ Ġ Ġ// Ġadd Ġ" Ġ(- 1 )", Ġ" Ġ(+ 2 )" Ġor Ġnothing Ġto Ġthe Ġend ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Diff Ġ< Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ($ m Diff )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Diff Ġ> Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ( +$ m Diff )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Ts End View . text Ġ= Ġmodel . getTime End () Ġ+ Ġm Offset String ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Ts End View . text Ġ= Ġ" ..." ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( model . category Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Ts Duration View . text Ġ= Ġmodel . get Duration Weighted Ex cluding Break s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Icon . text Ġ= Ġmodel . category !!. title . substring ( 0 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Color Ġ= ĠColor . parse Color ( model . category !!. color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Icon Background . setColor ( m Color ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Ts Duration View . text Ġ= Ġmodel . get Duration Weighted Ex cluding Break s () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Icon . text Ġ= Ġ"-" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Icon Background . setColor ( Color . parse Color ("# 6 6 6 6 6 6 ")) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Item ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTo Do ( f ren nk ie ) Ġdeleting Ġdoes Ġnot Ġdelete Ġsub Ġcollections ! ĠCheck Ġit ĊĠĠĠĠĠĠĠ Ġsnapshots . get Snapshot ( position ). reference . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĠLog . d ( TAG , Ġ" Document Snapshot Ġsuccessfully Ġdeleted !") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe Ġ-> ĠLog . w ( TAG , Ġ" Error Ġdeleting Ġdocument ", Ġe ) Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠTo Do ( f ren nk ie ) Ġalso Ġneed Ġto Ġremove ĠSession Ġfrom ĠCategory ! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠSession Holder ( item View : ĠView ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġm Card : Ġandroidx . card view . widget . Card View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById < View >( R . id . card _ session ) Ġas Ġandroidx . card view . widget . Card View ĊĠĠĠĠĠĠĠ Ġval Ġm Date View : ĠTextView Ġ= ĠitemView . findViewById < View >( R . id . tv _ session _ date ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġm Icon : ĠTextView Ġ= ĠitemView . findViewById < View >( R . id . tv _ session _ icon ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġm Ts Start View : ĠTextView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById < View >( R . id . tv _ session _ ts _ start ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġm Ts End View : ĠTextView Ġ= ĠitemView . findViewById < View >( R . id . tv _ session _ ts _ end ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġm Ts Duration View : ĠTextView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById < View >( R . id . tv _ session _ duration ) Ġas ĠTextView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġadapter Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= ĠRecyclerView . NO _ POSITION Ġ&& Ġlistener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener !!. on Item Click ( snapshots . get Snapshot ( position ), Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( document Snapshot : ĠDocument Snapshot , Ġposition : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On ItemClickListener ( listener : ĠOn ItemClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Session Adapter " ĊĠĠĠ Ġ} Ċ }