package Ġcom . github . ash ut osh g ng wr . no ice . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . github . ash ut osh g ng wr . no ice . R Ċ import Ġcom . github . ash ut osh g ng wr . no ice . Wake Up Timer Manager Ċ import Ġcom . github . ash ut osh g ng wr . no ice . sound . Preset Ċ import Ġkotlinx . android . synt hetic . main . fragment _ sleep _ timer . countdown _ view Ċ import Ġkotlinx . android . synt hetic . main . fragment _ wake _ up _ timer .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ wake _ up _ timer . view .* Ċ Ċ class ĠW ake Up Timer Fragment Ġ: ĠFragment ( R . layout . fragment _ wake _ up _ timer ) Ġ{ ĊĊĠ Ġprivate Ġvar Ġselected Pre setName : ĠString ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġselected Time : ĠLong Ġ= Ġ 0 ĊĊĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġbutton _ select _ preset . setOnClickListener Ġ{ ĠonSelect Preset Clicked () Ġ} ĊĠĠĠ Ġduration _ picker . setOn Duration Added Listener ( this :: on Duration Added ) ĊĊĠĠĠ Ġval Ġtimer Ġ= ĠW ake Up Timer Manager . get ( require Context ()) ĊĠĠĠ Ġif Ġ( timer ?. at Millis Ġ?: Ġ 0 Ġ> ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠ Ġselected Pre setName Ġ= Ġtimer ?. pre setName ĊĠĠĠĠĠ Ġselected Time Ġ= Ġtimer ?. at Millis Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġcheck Ġselected Pre setName Ġexists Ġin Ġuser Ġpreferences . ĊĠĠĠ Ġselected Pre setName ?. also Ġ{ ĊĠĠĠĠĠ Ġif Ġ( Preset . find ByName ( require Context (), Ġit ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Pre setName Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġselected Time Ġ= Ġ 0 ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġnotify Update () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠonSelect Preset Clicked () Ġ{ ĊĠĠĠ ĠDialog Fragment (). show ( child FragmentManager ) Ġ{ ĊĠĠĠĠĠ Ġval Ġpresets Ġ= ĠP reset . read All From User Preferences ( require Context ()). map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠ Ġtitle ( R . string . select _ preset ) ĊĠĠĠĠĠ Ġsingle Choice Items ( presets . to Typed Array (), Ġpresets . indexOf ( selected Pre setName )) Ġ{ Ġchoice Ġ-> ĊĠĠĠĠĠĠĠ Ġselected Pre setName Ġ= Ġpresets [ choice ] ĊĠĠĠĠĠĠĠ Ġnotify Update () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġon Duration Added ( duration : ĠLong ) Ġ{ ĊĠĠĠ Ġif Ġ( duration Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġselected Time Ġ= Ġ 0 ĊĠĠĠĠĠ Ġnotify Update () ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( selected Time Ġ< ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠ Ġselected Time Ġ= ĠSystem . currentTimeMillis () Ġ+ Ġduration ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġselected Time Ġ+= Ġduration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġnotify Update () ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ[ notify Update ] Ġupdates Ġuser Ġinterface Ġaccording Ġto Ġcurrently Ġset Ġtimer Ġvalues . ĠIt Ġalso ĊĠĠ Ġ* Ġs chedules Ġor Ġcancel s Ġtimer Ġusing Ġ[ Wake Up Timer Manager ] Ġbased Ġon Ġthese Ġvalues . ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġnotify Update () Ġ{ ĊĠĠĠ Ġval Ġremaining Duration Ġ= Ġselected Time Ġ- ĠSystem . currentTimeMillis () ĊĠĠĠ Ġcount down _ view . start Count down ( remaining Duration ) ĊĠĠĠ Ġrequire View (). duration _ picker . also Ġ{ ĊĠĠĠĠĠ Ġit . set Controls Enabled ( selected Pre setName Ġ!= Ġnull ) ĊĠĠĠĠĠ Ġit . set Reset Button Enabled ( remaining Duration Ġ> Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( selected Pre setName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġbutton _ select _ preset . setText ( R . string . select _ preset ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġbutton _ select _ preset . text Ġ= Ġselected Pre setName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( remaining Duration Ġ> Ġ 0 Ġ&& Ġselected Pre setName Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠW ake Up Timer Manager . set ( ĊĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠ ĠW ake Up Timer Manager . Timer ( require NotNull ( selected Pre setName ), Ġselected Time ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠW ake Up Timer Manager . cancel ( require Context ()) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ