package Ġkr . co . know ledger ally . ui . ball Ċ Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ import Ġandroidx . compose . foundation . lazy . items Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material . Divider Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Keyboard Arrow Right Ċ import Ġandroidx . compose . material . icons . outlined . Info Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . collect As State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġkr . co . know ledger ally . ui . R Ċ import Ġkr . co . know ledger ally . ui . component . Horizontal Spacer Ċ import Ġkr . co . know ledger ally . ui . component . K now ll y Top AppBar Ċ import Ġkr . co . know ledger ally . ui . component . Vertical Spacer Ċ import Ġkr . co . know ledger ally . ui . model . Ball Count Model Ċ import Ġkr . co . know ledger ally . ui . model . Ball History Model Ċ import Ġkr . co . know ledger ally . ui . theme . K now ll y Theme Ċ import Ġkotlin . math . abs Ċ Ċ @ Composable Ċ fun ĠBall Screen ( ĊĠĠĠ ĠviewModel : ĠBall ViewModel , ĊĠĠĠ Ġnavigate Up : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġnavigate To Guide : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġball Ġby ĠviewModel . ball . collect As State () ĊĠĠĠ Ġval Ġstate Ġby ĠviewModel . state . collect As State () ĊĊĠĠĠ ĠBall Screen ( ĊĠĠĠĠĠĠĠ Ġball Ġ= Ġball , ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠ Ġnavigate Up Ġ= Ġnavigate Up , ĊĠĠĠĠĠĠĠ Ġnavigate To Guide Ġ= Ġnavigate To Guide ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠBall Screen ( ĊĠĠĠ Ġball : ĠBall Count Model , ĊĠĠĠ Ġstate : ĠBall Ui State , ĊĠĠĠ Ġnavigate Up : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġnavigate To Guide : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠK now ll y Top AppBar ( on Navigation Click Ġ= Ġnavigate Up ) ĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 2 4 . dp , Ġtop Ġ= Ġ 2 4 . dp , Ġend Ġ= Ġ 2 4 . dp , Ġbottom Ġ= Ġ 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Ball ( ball ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Spacer ( height Ġ= Ġ 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBall Banner ( onClick Ġ= Ġnavigate To Guide ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Spacer ( height Ġ= Ġ 4 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBall History Content ( state Ġ= Ġstate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠMy Ball ( ball : ĠBall Count Model ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Between , ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġstring Resource ( R . string . ball _ my ), Ġstyle Ġ= ĠK now ll y Theme . typography . headline 2 ) ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ ball _ large ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal Spacer ( width Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġball . value Ġ+ Ġstring Resource ( id Ġ= ĠR . string . ball _ count ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠK now ll y Theme . typography . headline 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBall Banner ( ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 1 2 . dp ), ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠK now ll y Theme . colors . gray F 7 , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Rounded Corner Shape ( 1 2 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĠonClick () Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Between , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 4 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 1 2 . dp , Ġtop Ġ= Ġ 1 2 . dp , Ġend Ġ= Ġ 1 6 . dp , Ġbottom Ġ= Ġ 1 2 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Outlined . Info , Ġ// Ġgoogle Ġicons ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠK now ll y Theme . colors . gray 8 F , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal Spacer ( width Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġstring Resource ( R . string . ball _ banner ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠK now ll y Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠK now ll y Theme . colors . gray 6 B ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Keyboard Arrow Right , Ġ// Ġgoogle Ġicons ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠK now ll y Theme . colors . gray 8 F , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 1 6 . dp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBall History Content ( state : ĠBall Ui State ) Ġ{ ĊĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠBall Ui State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBall History List ( hist ories Ġ= Ġstate . hist ories ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠBall Ui State . Loading Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ ĠBall Ui State . Empty Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ ĠBall Ui State . Failure Ġ-> Ġ{} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBall History List ( ĊĠĠĠ Ġhist ories : ĠList < Ball History Model > Ċ ) Ġ{ ĊĠĠĠ ĠLazy Column Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Ġ{ ĠDiv ider ( color Ġ= ĠK now ll y Theme . colors . gray EF ) Ġ} ĊĠĠĠĠĠĠĠ Ġitems ( hist ories ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBall History ListItem ( history Ġ= Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider ( color Ġ= ĠK now ll y Theme . colors . gray EF ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠBall History ListItem ( ĊĠĠĠ Ġhistory : ĠBall History Model Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsign Ġ= Ġif Ġ( history . changed Ball Count Ġ> Ġ 0 ) Ġ" +" Ġelse Ġ"-" ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( vertical Ġ= Ġ 2 0 . dp ), ĊĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Between ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġhistory . title , Ġstyle Ġ= ĠK now ll y Theme . typography . subtitle 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertical Spacer ( height Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"${ history . date } Ġ| Ġ${ history . subtitle }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠK now ll y Theme . typography . body 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠK now ll y Theme . colors . gray 8 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"$ sign Ġ${ abs ( history . changed Ball Count )}" Ġ+ Ġstring Resource ( id Ġ= ĠR . string . ball _ count ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠK now ll y Theme . typography . subtitle 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( show Background Ġ= Ġtrue ) Ċ @ Composable Ċ private Ġfun ĠBall Screen Preview () Ġ{ ĊĠĠĠ Ġval Ġtemp Ball History List Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠBall History Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" íģ ´ë ŀĺìĬ¤ Ġìļ ´ ìĺģ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġ" íĶĦ ëŀ ĳ ìĬ¤ ìĸ´ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġ" 0 5 . 0 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ball Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠBall History Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" íģ ´ë ŀĺìĬ¤ ĠìĪĺ ê° ķ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġ" ìļĶ ë¦¬ ĠìĽĲ ë į°ìĿ´ Ġíģ´ëŀĺìĬ¤ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġ" 0 5 . 0 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ball Count Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠBall History Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" ì² « Ġê°Ģ ìŀħ Ġì¶ ķ íķĺ Ġë³ ¼ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġ" ì² « Ġê°Ģ ìŀħ Ġì¶ ķ íķĺ Ġë³ ¼ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġ" 0 5 . 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ball Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠK now ll y Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠBall Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġball Ġ= ĠBall Count Model (" 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠBall Ui State . Success ( temp Ball History List ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Up Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Guide Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ