/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . example . android dev challenge Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Arrange ment Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Padding Values Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . foundation . text . Keyboard Options Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Button Defaults Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Outlined TextField Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . save able . remember Save able Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . graphics . Brush Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . text . input . Keyboard Type Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . navigation . Nav Host Controller Ċ import Ġandroidx . navigation . compose . remember Nav Controller Ċ import Ġcom . example . android dev challenge . ui . theme . My Theme Ċ import Ġcom . example . android dev challenge . ui . theme . cab aret Ċ import Ġcom . example . android dev challenge . ui . theme . sp ind le Ċ Ċ @ Composable Ċ fun ĠDuration Setup ( nav Controller : ĠNav Host Controller ) Ġ{ ĊĠĠĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( seconds , Ġset Seconds ) Ġ= Ġremember Save able Ġ{ Ġmutable State Of ("") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġ( minutes , Ġset Minutes ) Ġ= Ġremember Save able Ġ{ Ġmutable State Of ("") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġ( hours , Ġset Hours ) Ġ= Ġremember Save able Ġ{ Ġmutable State Of ("") Ġ} ĊĊĠĠĠĠĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width (). fill Max Height (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier . fill Max Width (). padding ( horizontal Ġ= Ġ 2 0 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Input Field ( title Ġ= Ġ" Hours ", Ġtext Ġ= Ġhours , Ġset Text Ġ= Ġset Hours , Ġ. 3 3 3 3 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Input Field ( title Ġ= Ġ" Minutes ", Ġtext Ġ= Ġminutes , Ġset Text Ġ= Ġset Minutes , Ġ. 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Input Field ( title Ġ= Ġ" Seconds ", Ġtext Ġ= Ġseconds , Ġset Text Ġ= Ġset Seconds , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 2 0 . dp )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠF ancy Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" START ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġseconds . toInt Safe () Ġ+ Ġ( minutes . toInt Safe () Ġ* Ġ 6 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( hours . toInt Safe () Ġ* Ġ 3 6 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate (" countdown /$ duration ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠF ancy Button ( ĊĠĠĠ Ġtext : ĠString , ĊĠĠĠ Ġuse Gradient : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ ĠonClick : Ġ() Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ ĠButton ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . clip ( shape Ġ= ĠRo unded Corner Shape ( percent Ġ= Ġ 5 0 )), ĊĠĠĠĠĠĠĠ Ġcolors Ġ= ĠButton Defaults . button Colors ( backgroundColor Ġ= Ġif Ġ( use Gradient ) ĠColor . Transparent Ġelse Ġsp ind le ), ĊĠĠĠĠĠĠĠ Ġcontent Padding Ġ= ĠPadding Values (), ĊĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĠonClick () Ġ}, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfancy Gradient Ġ= ĠBr ush . horizontal Gradient ( listOf ( Color ( 0 xFF D 7 3 8 7 4 ), ĠColor ( 0 xFF E 8 6 3 6 E ))) ĊĠĠĠĠĠĠĠ Ġval Ġmodifier Ġ= Ġif Ġ( use Gradient ) ĠModifier . background ( fancy Gradient ) Ġelse ĠModifier ĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier . padding ( horizontal Ġ= Ġ 3 2 . dp , Ġvertical Ġ= Ġ 1 6 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Alignment Ġ= ĠAlignment . Center , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġtext , Ġcolor Ġ= Ġif Ġ( use Gradient ) ĠColor . Unspecified Ġelse Ġcab aret ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠMy Input Field ( title : ĠString , Ġtext : ĠString , Ġset Text : Ġ( String ) Ġ-> ĠUnit , Ġfraction : ĠFloat ) Ġ{ ĊĠĠĠ ĠOut lined TextField ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Max Width ( fraction Ġ= Ġfraction ). padding ( horizontal Ġ= Ġ 4 . dp ), ĊĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= ĠKeyboard Options ( keyboard Type Ġ= ĠKeyboard Type . Number ), ĊĠĠĠĠĠĠĠ Ġsingle Line Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtext , ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġset Text , ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĠText ( title ) Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun ĠString . toInt Safe () Ġ= Ġthis . toInt OrNull () Ġ?: Ġ 0 Ċ Ċ @ Preview ( width Dp Ġ= Ġ 3 6 0 , Ġheight Dp Ġ= Ġ 6 4 0 ) Ċ @ Composable Ċ private Ġfun ĠPreview () Ġ{ ĊĠĠĠ ĠMy Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠDuration Setup ( remember Nav Controller ()) ĊĠĠĠ Ġ} Ċ } Ċ