package Ġru . ber y uk h ov . coffee gram . view Ċ Ċ // import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . material . Divider Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Delete Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ Ċ import Ġandroidx . compose . ui . text . Annotated String Ċ import Ġandroidx . compose . ui . text . Paragraph Style Ċ import Ġandroidx . compose . ui . text . intl . Locale Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġru . ber y uk h ov . coffee gram . app _ ui . C offee gram Theme Ċ import Ġru . ber y uk h ov . coffee gram . data . C app ucc ino Ċ import Ġru . ber y uk h ov . coffee gram . data . C offee Type Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . date Format Symbols Short Week days Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . local _ date . day OfWeek Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . year _ month . DayOfWeek Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . year _ month . Year Month Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . year _ month . at Day Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . year _ month . get Short DisplayName Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . year _ month . isValid Day Ċ import Ġru . ber y uk h ov . coffee gram . date _ time . year _ month . of Ċ import Ġru . ber y uk h ov . coffee gram . model . Navigation Intent Ċ import Ġru . ber y uk h ov . coffee gram . model . Navigation Store Ċ import Ġru . ber y uk h ov . coffee gram . times ĊĊ Ċ data Ġclass ĠDay Item ( ĊĠĠĠ Ġval Ġday : ĠString , ĊĠĠĠ Ġval Ġcoffee Type : ĠC offee Type ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġday OfMonth : ĠInt ? Ġ= Ġnull Ċ ) Ċ Ċ @ Composable Ċ fun ĠDay Cell ( ĊĠĠĠ Ġday Item : ĠDay Item , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġnavigation Store : ĠNavigation Store Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( horizontal Alignment Ġ= ĠAlignment . Center H orizontally , Ġmodifier Ġ= ĊĠĠĠ Ġif Ġ( day Item . day OfMonth Ġ== Ġnull ) Ġmodifier Ġelse ĊĠĠĠĠĠĠĠ Ġmodifier . click able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Store . new Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation Intent . Open C offee List Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Item . day OfMonth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( day Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coffee Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoffee Type Ġ= Ġcoffee Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 3 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcons . Default . Delete , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor ( 0 x 0 0 0 0 0 0 0 0 ), // Color . Transparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 3 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnnot ated String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġday , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparagraph Style Ġ= ĠParagraph Style ( textAlign Ġ= ĠText Align . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠWeek Row ( day Items : ĠList < Day Item ? >, Ġnavigation Store : ĠNavigation Store ) Ġ{ ĊĠĠĠ Ġval Ġweek Days Items Ġ= Ġday Items . to Mutable List () ĊĠĠĠ Ġweek Days Items . addAll ( listOf ( Day Item ("")) Ġ* Ġ( 7 Ġ- Ġweek Days Items . size )) ĊĠĠĠ ĠColumn ( horizontal Alignment Ġ= ĠAlignment . Center H orizontally ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier . fill Max Width ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( day Item Ġin Ġweek Days Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDay Cell ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Item Ġ= Ġday Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDay Item (""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Store Ġ= Ġnavigation Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDiv ider () ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ @ Composable Ċ fun ĠMonth Table Adjust ed ( ĊĠĠĠ Ġweek Items : ĠList < List < Day Item ? >>, ĊĠĠĠ Ġnavigation Store : ĠNavigation Store , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( horizontal Alignment Ġ= ĠAlignment . Center H orizontally , Ġmodifier Ġ= Ġmodifier ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweek Items . map Ġ{ ĠWeek Row ( day Items Ġ= Ġit , Ġnavigation Store Ġ= Ġnavigation Store ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠWeek Day Vector Pair ( ĊĠĠĠ Ġval Ġday : ĠInt , ĊĠĠĠ Ġval Ġweek Day : ĠDay OfWeek , ĊĠĠĠ Ġvar Ġcoffee Type : ĠC offee Type ? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Day Item (): ĠDay Item Ġ= ĊĠĠĠĠĠĠĠ ĠDay Item ("$ day ", Ġcoffee Type , Ġday ) Ċ } Ċ Ċ @ Composable Ċ fun ĠMonth Table ( ĊĠĠĠ Ġyear Month : ĠYear Month , ĊĠĠĠ Ġfilled Day Items Map : ĠMap < Int , ĠC offee Type ? >, ĊĠĠĠ Ġnavigation Store : ĠNavigation Store , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ Ġval Ġweek Days : ĠList < Day Item > Ġ= Ġget Week Days Names ( ĊĠĠĠĠĠĠĠ ĠLocale . current ĊĠĠĠ Ġ). map Ġ{ ĠDay Item ( it ) Ġ} ĊĠĠĠ Ġval Ġdays 1 to 3 1 Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġ 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdays 1 to 3 1 . add ( i ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġdays Ġ= Ġdays 1 to 3 1 . filter Ġ{ Ġyear Month . isValid Day ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. associate By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeek Day Vector Pair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear Month . at Day ( it ). day OfWeek () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ. to Mutable Map () ĊĠĠĠ Ġfilled Day Items Map . forEach Ġ{ Ġdays [ it . key ]?. coffee Type Ġ= Ġit . value Ġ} ĊĠĠĠ Ġval Ġweek Days Strings Ġ= ĊĠĠĠĠĠĠĠ Ġget Week Days Names ( Locale . current ) ĊĠĠĠ Ġval ĠnumberOf First Day Ġ= Ġweek Days Strings . indexOf ( ĊĠĠĠĠĠĠĠ Ġdays [ 1 ] !!. week Day . get Short DisplayName ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . current ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġdays List : ĠList < Week Day Vector Pair > Ġ= Ġdays . toList (). sorted By Ġ{ Ġit . first Ġ}. map Ġ{ Ġit . second Ġ} ĊĠĠĠ Ġval Ġfirst Week : ĠList < Day Item > Ġ= ĊĠĠĠĠĠĠĠ ĠlistOf ( Day Item ("")) Ġ* Ġ( numberOf First Day ) Ġ+ Ġdays List . take ( 7 Ġ- ĠnumberOf First Day ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Week Day Vector Pair :: to Day Item ) ĊĠĠĠ Ġval Ġsecond ToS ix Week s : ĠList < List < Day Item >> Ġ= ĠlistOf ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ). map Ġ{ ĊĠĠĠĠĠĠĠ Ġdays List . drop ( 7 Ġ* Ġ( it Ġ- Ġ 1 ) Ġ- ĠnumberOf First Day ). take ( 7 ) ĊĠĠĠ Ġ}. filter Not Ġ{ Ġit . isEmpty () Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . map ( Week Day Vector Pair :: to Day Item ) Ġ} ĊĊĠĠĠ Ġval Ġweek Items Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠ Ġweek Days , ĊĠĠĠĠĠĠĠ Ġfirst Week ĊĠĠĠ Ġ) ĊĠĠĠ Ġweek Items . addAll ( second ToS ix Week s ) ĊĠĠĠ Ġreturn ĠMonth Table Adjust ed ( ĊĠĠĠĠĠĠĠ Ġweek Items , ĊĠĠĠĠĠĠĠ Ġnavigation Store , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ //@ Preview ( show Background Ġ= Ġtrue ) Ċ @ Composable Ċ fun ĠTable Preview () Ġ{ ĊĠĠĠ ĠC offee gram Theme Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Row Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay Cell ( Day Item (" ÐŁ Ð½ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay Cell ( Day Item (" 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay Cell ( Day Item (" 2 ", ĠIcons . Default . Call )) ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠ Ġ/* Week Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDay Item (" ÐŁ Ð½ "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDay Item (" 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDay Item (" 2 ", ĠIcons . Default . Call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) */ ĊĠĠĠĠĠĠĠ ĠSample Table () ĊĠĠĠĠĠĠĠ Ġ// Text ( get Week Days Names ( Context Ambient . current ). toString ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠSample Table ( modifier : ĠModifier Ġ= ĠModifier ) Ġ= ĊĠĠĠ ĠMonth Table ( ĊĠĠĠĠĠĠĠ Ġof ( 2 0 2 0 , Ġ 7 ), ĊĠĠĠĠĠĠĠ Ġmap Of ( 2 Ġto ĠC app ucc ino ), ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġnavigation Store Ġ= ĠNavigation Store () ĊĠĠĠ Ġ) ĊĊ Ċ fun Ġget Week Days Names (): ĠList < String > Ġ= ĊĠĠĠ Ġget Week Days Names ( locale Ġ= ĠLocale . current ) Ċ Ċ fun Ġget Week Days Names ( locale : ĠLocale ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= ĠdateFormat Symbols Short Week days ( locale ). to Mutable List () ĊĠĠĠ Ġ// Ġthis Ġfun Ġadds Ġempty Ġstring Ġat Ġthe Ġbeginning ĊĠĠĠ Ġlist . remove At ( 0 ) ĊĠĠĠ Ġreturn Ġlist Ċ } Ċ Ċ fun Ġget Empty Week ( start : ĠInt , Ġend : ĠInt ): ĠList < Day Item > Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Day Item >() ĊĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġuntil Ġend Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( Day Item ("$ i ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlist Ċ }