package Ġcom . yl . timer Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġcom . yl . timer . Constants . LENGTH _ HOUR Ċ import Ġcom . yl . timer . Constants . LENGTH _ MINUTE Ċ import Ġcom . yl . timer . Constants . LENGTH _ SECOND Ċ import Ġcom . yl . timer . Constants . MODE _ NOTIFICATION Ċ import Ġcom . yl . timer . Constants . MODE _ RING Ċ import Ġkotlinx . android . synt hetic . main . activity _ add _ task .* Ċ import Ġkotlinx . android . synt hetic . main . include _ time _ pick .* Ċ import Ġorg . lite pal . Lite Pal Ċ import Ġorg . lite pal . extension . find Ċ Ċ class ĠAdd Task Activity Ġ: ĠAppCompatActivity (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġunit Hour Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġunit Minute Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval Ġunit Second Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġvar Ġcurrent Hour Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcurrent Minute Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcurrent Second Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġthe Task : ĠTask Entity ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ add _ task ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġinit Data ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġintent . getLong Extra ( Constants . KEY _ TASK _ ID , Ġ- 1 L ) ĊĠĠĠĠĠĠĠ Ġthe Task Ġ= ĠLite Pal . find < Task Entity >( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( the Task Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet _ task _ name . setText ( the Task !!. task Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ hours . setSelection ( the Task !!. hour Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ minutes . setSelection ( the Task !!. minute Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ seconds . setSelection ( the Task !!. second Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Prompt Mode ( the Task !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb _ loop . isChecked Ġ= Ġthe Task !!. enable Loop ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Prompt Mode ( task : ĠTask Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( task . prompt Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMODE _ NOTIFICATION Ġ-> Ġrb _ notification . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMODE _ RING Ġ-> Ġrb _ ring . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġtb _ back . set Navigation OnClickListener Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠ Ġset Time Spinner ( spinner _ hours , Ġunit Hour ) ĊĠĠĠĠĠĠĠ Ġset Time Spinner ( spinner _ minutes , Ġunit Minute ) ĊĠĠĠĠĠĠĠ Ġset Time Spinner ( spinner _ seconds , Ġunit Second ) ĊĠĠĠĠĠĠĠ Ġbtn _ save _ task . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( p 0 ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ save _ task Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet _ task _ name . text . isBlank () Ġ-> ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 , ĠgetString ( R . string . label _ task _ name _ is _ empty ), ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). setAction ("", Ġnull ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetTime Interval () Ġ== Ġ 0 Ġ-> ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 , ĠgetString ( R . string . label _ task _ time _ interval _ invalid ), ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). setAction ("", Ġnull ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( the Task Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe Task Ġ= Ġnew Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe Task !!. save () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 , ĠgetString ( R . string . label _ task _ saved ), ĠSn ackbar . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). setAction ( getString ( R . string . label _ ok )) Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Callback ( object Ġ: ĠSn ackbar . Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dis missed ( transient Bottom Bar : ĠSn ackbar ?, Ġevent : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnew Task (): ĠTask Entity Ġ= ĊĠĠĠĠĠĠĠ ĠTask Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet _ task _ name . text . toString (). trim (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetTime Interval (). to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ hours . selected Item Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ minutes . selected Item Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner _ seconds . selected Item Position , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Prompt Mode (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Enable Loop (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġthe Task !!. task Name Ġ= Ġet _ task _ name . text . toString (). trim () ĊĠĠĠĠĠĠĠ Ġthe Task !!. time Interval Ġ= ĠgetTime Interval (). to Long () ĊĠĠĠĠĠĠĠ Ġthe Task !!. hour Id Ġ= Ġspinner _ hours . selected Item Position ĊĠĠĠĠĠĠĠ Ġthe Task !!. minute Id Ġ= Ġspinner _ minutes . selected Item Position ĊĠĠĠĠĠĠĠ Ġthe Task !!. second Id Ġ= Ġspinner _ seconds . selected Item Position ĊĠĠĠĠĠĠĠ Ġthe Task !!. prompt Mode Ġ= Ġget Prompt Mode () ĊĠĠĠĠĠĠĠ Ġthe Task !!. enable Loop Ġ= Ġget Enable Loop () ĊĠĠĠĠĠĠĠ Ġthe Task !!. enable Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Enable Loop () Ġ= Ġcb _ loop . isChecked ĊĊĠĠĠ Ġprivate Ġfun Ġget Prompt Mode (): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( rb _ notification . isChecked ) ĠMODE _ NOTIFICATION Ġelse ĠMODE _ RING ĊĊĊĠĠĠ Ġprivate Ġfun ĠgetTime Interval () Ġ= ĊĠĠĠĠĠĠĠ Ġcurrent Hour Ġ* ĠLEN GTH _ HOUR Ġ+ Ġcurrent Minute Ġ* ĠLEN GTH _ MINUTE Ġ+ Ġcurrent Second Ġ* ĠLEN GTH _ SECOND ĊĊĠĠĠ Ġprivate Ġfun Ġset Time Spinner ( spinner : ĠSp inner , Ġtime Unit : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Length Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġwhen Ġ( time Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Hour Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 2 4 ) Ġtime Length . add ( i . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Minute Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 6 0 ) Ġtime Length . add ( i . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Second Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 6 0 ) Ġtime Length . add ( i . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspinner . adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( this , Ġandroid . R . layout . simple _ dropdown _ item _ 1 line , Ġtime Length ) ĊĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( p 0 : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( p 0 : ĠAdapter View < *> ?, Ġp 1 : ĠView ?, Ġp 2 : ĠInt , Ġp 3 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( time Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit Hour Ġ-> Ġcurrent Hour Ġ= Ġtime Length [ p 2 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit Minute Ġ-> Ġcurrent Minute Ġ= Ġtime Length [ p 2 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit Second Ġ-> Ġcurrent Second Ġ= Ġtime Length [ p 2 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ