package Ġcom . simple mobile tools . clock . dialogs Ċ Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . media . Audio Manager Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroid . widget . TextView Ċ import Ġcom . simple mobile tools . clock . R Ċ import Ġcom . simple mobile tools . clock . activities . Simple Activity Ċ import Ġcom . simple mobile tools . clock . extensions .* Ċ import Ġcom . simple mobile tools . clock . helpers . P ICK _ AUDIO _ FILE _ INT ENT _ ID Ċ import Ġcom . simple mobile tools . clock . models . Alarm Ċ import Ġcom . simple mobile tools . commons . dialogs . Select Alarm Sound Dialog Ċ import Ġcom . simple mobile tools . commons . extensions .* Ċ import Ġcom . simple mobile tools . commons . helpers . ALARM _ SOUND _ TYPE _ ALARM Ċ import Ġcom . simple mobile tools . commons . models . Alarm Sound Ċ import Ġkotlinx . android . synt hetic . main . dialog _ edit _ alarm . view .* Ċ Ċ class ĠEdit Alarm Dialog ( val Ġactivity : ĠSimple Activity , Ġval Ġalarm : ĠAlarm , Ġval Ġcallback : Ġ( alarm Id : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġview Ġ= Ġactivity . layout Inflater . inflate ( R . layout . dialog _ edit _ alarm , Ġnull ) ĊĠĠĠ Ġprivate Ġval ĠtextColor Ġ= Ġactivity . config . textColor ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Alarm Time () ĊĊĠĠĠĠĠĠĠ Ġview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ time . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Picker Dialog ( context , Ġcontext . get Dialog Theme (), Ġtime Set Listener , Ġalarm . time In Minutes Ġ/ Ġ 6 0 , Ġalarm . time In Minutes Ġ% Ġ 6 0 , Ġcontext . config . use 2 4 Hour Format ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ sound . color Left Drawable ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ sound . text Ġ= Ġalarm . sound Title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ sound . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelect Alarm Sound Dialog ( activity , Ġalarm . sound Uri , ĠAudio Manager . STREAM _ ALARM , ĠP ICK _ AUDIO _ FILE _ INT ENT _ ID , ĠAL ARM _ SOUND _ TYPE _ ALARM , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Alarm Pick ed Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Selected Alarm Sound ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġon Alarm Sound Deleted Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm . sound Uri Ġ== Ġit . uri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Alarm Ġ= Ġcontext . getDefault Alarm Sound ( ALARM _ SOUND _ TYPE _ ALARM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Selected Alarm Sound ( default Alarm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . check Al arms With Deleted Sound Uri ( it . uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ vi br ate . color Left Drawable ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ vi br ate . isChecked Ġ= Ġalarm . vi br ate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ vi br ate _ holder . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ vi br ate . toggle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm . vi br ate Ġ= Ġedit _ alarm _ vi br ate . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ label _ image . apply Color Filter ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ label . setText ( alarm . label ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Letters Ġ= Ġactivity . resources . getString Array ( R . array . week _ day _ letters ). toList () Ġas ĠArrayList < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Indexes Ġ= Ġarray ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity . config . is S unday First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Indexes . move Last Item To Front () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġday Indexes . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpow Ġ= ĠMath . pow ( 2 . 0 , Ġit . toDouble ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġactivity . layout Inflater . inflate ( R . layout . alarm _ day , Ġedit _ alarm _ days _ holder , Ġfalse ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . text Ġ= Ġday Letters [ it ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Day Checked Ġ= Ġalarm . days Ġand Ġpow Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . background Ġ= Ġget Pro per Day Drawable ( is Day Checked ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . setTextColor ( if Ġ( is Day Checked ) Ġcontext . config . backgroundColor Ġelse ĠtextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselect Day Ġ= Ġalarm . days Ġand Ġpow Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( select Day ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm . days Ġ= Ġalarm . days . add Bit ( pow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm . days Ġ= Ġalarm . days . remove Bit ( pow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . background Ġ= Ġget Pro per Day Drawable ( select Day ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday . setTextColor ( if Ġ( select Day ) Ġcontext . config . backgroundColor Ġelse ĠtextColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ alarm _ days _ holder . addView ( day ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . setup Dialog Stuff ( view , Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Button ( AlertDialog . BUTTON _ POSITIVE ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm . days Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . toast ( R . string . no _ days _ selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm . label Ġ= Ġview . edit _ alarm _ label . value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġalarm Id Ġ= Ġalarm . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm . id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Id Ġ= Ġactivity . db Helper . insert Alarm ( alarm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alarm Id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . toast ( R . string . unknown _ error _ occ urred ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! activity . db Helper . update Alarm ( alarm )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . toast ( R . string . unknown _ error _ occ urred ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( alarm Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtime Set Listener Ġ= ĠTime Picker Dialog . On Time Set Listener Ġ{ Ġview , Ġhour OfDay , Ġminute Ġ-> ĊĠĠĠĠĠĠĠ Ġalarm . time In Minutes Ġ= Ġhour OfDay Ġ* Ġ 6 0 Ġ+ Ġminute ĊĠĠĠĠĠĠĠ Ġupdate Alarm Time () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Alarm Time () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . edit _ alarm _ time . text Ġ= Ġactivity . get Formatted Time ( alarm . time In Minutes Ġ* Ġ 6 0 , Ġfalse , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Pro per Day Drawable ( selected : ĠBoolean ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Id Ġ= Ġif Ġ( selected ) ĠR . drawable . circle _ background _ filled Ġelse ĠR . drawable . circle _ background _ stroke ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= Ġactivity . resources . get Drawable ( drawable Id ) ĊĠĠĠĠĠĠĠ Ġdrawable . apply Color Filter ( textColor ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdrawable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Selected Alarm Sound ( alarm Sound : ĠAlarm Sound ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm . sound Title Ġ= Ġalarm Sound . title ĊĠĠĠĠĠĠĠ Ġalarm . sound Uri Ġ= Ġalarm Sound . uri ĊĠĠĠĠĠĠĠ Ġview . edit _ alarm _ sound . text Ġ= Ġalarm Sound . title ĊĠĠĠ Ġ} Ċ } Ċ