package Ġig rek . force aw aken . alarm Ċ Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . joda . time . Local Time ĊĊ Ċ data Ġclass ĠRe pet itive Alarm ( ĊĠĠĠ Ġvar Ġtrigger Time : ĠLocal Time , ĊĠĠĠ Ġvar Ġdays OfWeek : ĠMutable List < Int > Ġ= Ġmutable ListOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ), ĊĠĠĠ Ġvar Ġstart From Time : ĠDateTime , ĊĠĠĠ Ġvar Ġearly Minutes : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġvar Ġsn oo zes : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġvar Ġsn oo ze Interval : ĠInt , Ċ ) Ġ: ĠParcel able Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrigger Time Str Ġ= Ġtrigger Time . toString (" HH : mm : ss ") ĊĠĠĠĠĠĠĠ Ġval Ġstart From Time Str Ġ= Ġstart From Time . toString (" HH : mm , Ġy yyy - MM - dd ") ĊĠĠĠĠĠĠĠ Ġval Ġdays OfWeek Str Ġ= Ġdays OfWeek . join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠ Ġreturn Ġ" at Ġ$ trigger Time Str Ġevery Ġ$ days OfWeek Str , Ġfrom Ġ$ start From Time Str " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ(- ${ early Minutes } min , Ġ${ sn oo zes } x ${ sn oo ze Interval } s )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobj Ġis ĠRe pet itive Alarm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġtrigger Time Ġ== Ġobj . trigger Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġdays OfWeek Ġ== Ġobj . days OfWeek ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġearly Minutes Ġ== Ġobj . early Minutes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġsn oo zes Ġ== Ġobj . sn oo zes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġsn oo ze Interval Ġ== Ġobj . sn oo ze Interval ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠCRE ATOR Ġ= Ġobject Ġ: ĠParcel able . Creator < Re pet itive Alarm > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( parcel : ĠParcel ): ĠRe pet itive Alarm Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrigger Time Ġ= Ġparcel . read Serializable () Ġas ĠLocal Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdays OfWeek Ġ= Ġparcel . read ArrayList ( Int :: class . java . class Loader ) Ġas ĠList < Int > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart From Time Ġ= Ġparcel . read Serializable () Ġas ĠDateTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġearly Margin Min Ġ= Ġparcel . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn oo ze Repe ats Ġ= Ġparcel . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn oo ze Repe ats Interval Ġ= Ġparcel . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRe pet itive Alarm ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Time , Ġdays OfWeek . to Mutable List (), Ġstart From Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġearly Margin Min , Ġsn oo ze Repe ats , Ġsn oo ze Repe ats Interval ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ) Ġ= ĠarrayOf Null s < Re pet itive Alarm >( size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdest . write Serializable ( trigger Time ) ĊĠĠĠĠĠĠĠ Ġdest . write List ( days OfWeek . toList ()) ĊĠĠĠĠĠĠĠ Ġdest . write Serializable ( start From Time ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( early Minutes ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( sn oo zes ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( sn oo ze Interval ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents () Ġ= Ġ 0 ĊĊĠĠĠ Ġfun ĠgetNext Trigger Time (): ĠDateTime Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= Ġmax ( start From Time , ĠDateTime . now ()). with Time ( trigger Time ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start . day OfWeek (). get () Ġin Ġdays OfWeek ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Start Ġ= Ġstart . minus Minutes ( early Minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Start . is After Now Ġ&& Ġstart . is After OrEqual ( start From Time )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart . plus Days ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Next Trigger Time () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart From Time Ġ= ĠDateTime . now () ĊĠĠĠĠĠĠĠ Ġstart From Time Ġ= ĠgetNext Trigger Time () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmax ( a : ĠDateTime , Ġb : ĠDateTime ): ĠDateTime Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( a . is Before ( b )) Ġ{ ĊĠĠĠĠĠĠĠ Ġb ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġa ĊĠĠĠ Ġ} Ċ }