package Ġcom . github . ty ng st ast . b ors data valu ational ar mer . android . ui . add Ċ Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . text . Keyboard Actions Ċ import Ġandroidx . compose . foundation . text . Keyboard Options Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . IconButton Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . Top AppBar Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Arrow Back Ċ import Ġandroidx . compose . material . icons . filled . Check Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . runtime . collect As State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Experimental Compose Ui Api Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . focus . Focus Request er Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . input . I me Action Ċ import Ġandroidx . compose . ui . text . input . Keyboard Type Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġcom . github . ty ng st ast . b ors data valu ational ar mer . android . R Ċ import Ġcom . github . ty ng st ast . b ors data valu ational ar mer . android . ui . common . Input Field Ċ import Ġcom . github . ty ng st ast . b ors data valu ational ar mer . android . ui . theme . App Theme Ċ import Ġcom . github . ty ng st ast . b ors data valu ational ar mer . model . Item Ċ import Ġcom . github . ty ng st ast . b ors data valu ational ar mer . util . is Double Ċ import Ġorg . k oin . android x . compose . get ViewModel ĊĊ Ċ @ Composable Ċ fun ĠAdd Alarm Screen ( ĊĠĠĠ ĠonSuccess : Ġ() Ġ-> ĠUnit , ĊĠĠĠ ĠviewModel : ĠAdd Alarm ViewModel Ġ= Ġget ViewModel () Ċ ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĊĠĠĠ Ġvar Ġins Name : ĠString Ġby Ġremember Ġ{ Ġmutable State Of ("") Ġ} ĊĠĠĠ Ġvar Ġk pi Name : ĠString Ġby Ġremember Ġ{ Ġmutable State Of ("") Ġ} ĊĠĠĠ Ġvar Ġk pi Value : ĠString Ġby Ġremember Ġ{ Ġmutable State Of ("") Ġ} ĊĊĠĠĠ Ġval Ġset Ins Name : Ġ( String ) Ġ-> ĠUnit Ġ= Ġ{ Ġvalue : ĠString Ġ-> ĊĠĠĠĠĠĠĠ Ġins Name Ġ= Ġvalue ĊĠĠĠĠĠĠĠ ĠviewModel . get Instrument s ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġset K pi Name : Ġ( String ) Ġ-> ĠUnit Ġ= Ġ{ Ġvalue : ĠString Ġ-> ĊĠĠĠĠĠĠĠ Ġk pi Name Ġ= Ġvalue ĊĠĠĠĠĠĠĠ ĠviewModel . get K pis ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġset K pi Value Ġ= Ġ{ Ġvalue : ĠString Ġ-> ĊĠĠĠĠĠĠĠ Ġk pi Value Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġinstrument s Ġ= ĠviewModel . instrument s . collect As State () ĊĠĠĠ Ġval Ġk pis Ġ= ĠviewModel . kp is . collect As State () ĊĊĠĠĠ Ġval Ġadd Alarm Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ins Name . isBlank () Ġ|| Ġk pi Name . isBlank () Ġ|| Ġk pi Value . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . add _ toast _ empty _ input ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! k pi Value . is Double ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . add _ toast _ invalid _ k pi _ value ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add Alarm ( k pi Value . replace (",", Ġ". "). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . add _ toast _ save _ success ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ{ ĠText ( string Resource ( R . string . add _ text _ title )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ ĠonSuccess () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( Icons . Filled . Arrow Back , Ġcontent Description Ġ= Ġstring Resource ( R . string . icon _ cd _ back )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġadd Alarm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcons . Filled . Check , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġstring Resource ( R . string . icon _ cd _ save ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠMaterial Theme . colors . secondary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAdd Alarm Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġins Name Ġ= Ġins Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk pi Name Ġ= Ġk pi Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk pi Value Ġ= Ġk pi Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstrument s Ġ= Ġinstrument s . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk pis Ġ= Ġk pis . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ins Name Ġ= Ġset Ins Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset K pi Name Ġ= Ġset K pi Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset K pi Value Ġ= Ġset K pi Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Alarm Ġ= Ġadd Alarm ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Experimental Compose Ui Api :: class ) Ċ @ Composable Ċ fun ĠAdd Alarm Content ( ĊĠĠĠ Ġins Name : ĠString , ĊĠĠĠ Ġk pi Name : ĠString , ĊĠĠĠ Ġk pi Value : ĠString , ĊĠĠĠ Ġinstrument s : ĠList < Item >, ĊĠĠĠ Ġk pis : ĠList < Item >, ĊĠĠĠ Ġset Ins Name : Ġ( String ) Ġ-> ĠUnit , ĊĠĠĠ Ġset K pi Name : Ġ( String ) Ġ-> ĠUnit , ĊĠĠĠ Ġset K pi Value : Ġ( String ) Ġ-> ĠUnit , ĊĠĠĠ Ġadd Alarm : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġval Ġ( ins Name Fr , Ġk pi Name Fr , Ġk pi Value Fr ) Ġ= ĠFocus Request er . create Refs () ĊĊĠĠĠ ĠLa unched Effect ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġins Name Fr . request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSuggest ion Input Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġins Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġstring Resource ( R . string . company _ label ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġset Ins Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġinstrument s , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Actions Ġ= ĠKeyboard Actions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstrument s . first OrNull ()?. apply Ġ{ Ġset Ins Name ( this . name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk pi Name Fr . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= ĠKeyboard Options . Default . copy ( ime Action Ġ= ĠI me Action . Next ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocus Request er Ġ= Ġins Name Fr ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠSuggest ion Input Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġk pi Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġstring Resource ( R . string . k pi _ label ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġset K pi Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= Ġk pis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Actions Ġ= ĠKeyboard Actions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk pis . first OrNull ()?. apply Ġ{ Ġset K pi Name ( this . name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk pi Value Fr . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= ĠKeyboard Options . Default . copy ( ime Action Ġ= ĠI me Action . Next ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocus Request er Ġ= Ġk pi Name Fr ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠInput Field ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġk pi Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġstring Resource ( R . string . k pi _ below _ threshold _ label ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġset K pi Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Actions Ġ= ĠKeyboard Actions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Done Ġ= Ġ{ Ġadd Alarm () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Options Ġ= ĠKeyboard Options . Default . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyboard Type Ġ= ĠKeyboard Type . Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ime Action Ġ= ĠI me Action . Done ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfocus Request er Ġ= Ġk pi Value Fr ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠAdd Alarm Preview () Ġ{ ĊĠĠĠ ĠApp Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠAdd Alarm Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġins Name Ġ= Ġ" E volution ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk pi Name Ġ= Ġ" P / E ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk pi Value Ġ= Ġ" 2 0 . 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstrument s Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk pis Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ins Name Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset K pi Name Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset K pi Value Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Alarm Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ