package Ġcom . simple mobile tools . calendar . fragments Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . DatePicker Ċ import Ġandroid . widget . Relative Layout Ċ import Ġcom . simple mobile tools . calendar . R Ċ import Ġcom . simple mobile tools . calendar . activities . Day Activity Ċ import Ġcom . simple mobile tools . calendar . activities . Event Activity Ċ import Ġcom . simple mobile tools . calendar . activities . Simple Activity Ċ import Ġcom . simple mobile tools . calendar . adapters . Day Events Adapter Ċ import Ġcom . simple mobile tools . calendar . extensions . config Ċ import Ġcom . simple mobile tools . calendar . extensions . db Helper Ċ import Ġcom . simple mobile tools . calendar . extensions . get Appro priate Theme Ċ import Ġcom . simple mobile tools . calendar . extensions . get Filtered Events Ċ import Ġcom . simple mobile tools . calendar . helpers .* Ċ import Ġcom . simple mobile tools . calendar . helpers . Formatter Ċ import Ġcom . simple mobile tools . calendar . interfaces . Delete Events Listener Ċ import Ġcom . simple mobile tools . calendar . interfaces . Navigation Listener Ċ import Ġcom . simple mobile tools . calendar . models . Event Ċ import Ġcom . simple mobile tools . commons . extensions . setup Dialog Stuff Ċ import Ġkotlinx . android . synt hetic . main . fragment _ day . view .* Ċ import Ġkotlinx . android . synt hetic . main . top _ navigation . view .* Ċ import Ġorg . joda . time . DateTime Ċ import Ġjava . util .* Ċ Ċ class ĠDay Fragment Ġ: ĠFragment (), ĠDB Helper . Event Update Listener , ĠDelete Events Listener Ġ{ ĊĠĠĠ Ġvar Ġm Listener : ĠNavigation Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm TextColor Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Day Code Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġlast Hash Ġ= Ġ 0 ĊĊĠĠĠ Ġlateinit Ġvar Ġm Res : ĠResources ĊĠĠĠ Ġlateinit Ġvar Ġm Holder : ĠRelative Layout ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ day , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Res Ġ= Ġresources ĊĠĠĠĠĠĠĠ Ġm Holder Ġ= Ġview . day _ holder ĊĊĠĠĠĠĠĠĠ Ġm Day Code Ġ= Ġarguments . getString ( DAY _ CODE ) ĊĠĠĠĠĠĠĠ Ġval Ġday Ġ= ĠFormatter . get Day Title ( activity . application Context , Ġm Day Code ) ĊĠĠĠĠĠĠĠ Ġm Holder . top _ value . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġday ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġpick Day () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( context . config . textColor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup Buttons () ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġcheck Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġm TextColor Ġ= Ġcontext . config . textColor ĊĊĠĠĠĠĠĠĠ Ġm Holder . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ left _ arrow . drawable . mutate (). setColor Filter ( m TextColor , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ right _ arrow . drawable . mutate (). setColor Filter ( m TextColor , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ left _ arrow . background Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ right _ arrow . background Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ left _ arrow . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. go Left () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop _ right _ arrow . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. go Right () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpick Day () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . set Theme ( context . get Appro priate Theme ()) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġget LayoutInflater ( arguments ). inflate ( R . layout . date _ picker , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Ġ= Ġview . findViewById < DatePicker >( R . id . date _ picker ) ĊĊĠĠĠĠĠĠĠ Ġval ĠdateTime Ġ= ĠFormatter . get DateTime From Code ( m Day Code ) ĊĠĠĠĠĠĠĠ Ġdate Picker . init ( dateTime . year , ĠdateTime . month OfYear Ġ- Ġ 1 , ĠdateTime . day OfMonth , Ġnull ) ĊĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . ok ) Ġ{ Ġdialog , Ġwhich Ġ-> Ġpositive Pressed ( dateTime , Ġdate Picker ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . setup Dialog Stuff ( view , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpositive Pressed ( dateTime : ĠDateTime , Ġdate Picker : ĠDate Picker ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmonth Ġ= Ġdate Picker . month Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġdate Picker . year ĊĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġdate Picker . day OfMonth ĊĠĠĠĠĠĠĠ Ġval Ġnew DateTime Ġ= ĠdateTime . with Date ( year , Ġmonth , Ġday ) ĊĠĠĠĠĠĠĠ Ġm Listener ?. goTo DateTime ( new DateTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Events () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart TS Ġ= ĠFormatter . get Day Start TS ( m Day Code ) ĊĠĠĠĠĠĠĠ Ġval Ġend TS Ġ= ĠFormatter . get Day End TS ( m Day Code ) ĊĠĠĠĠĠĠĠ ĠDB Helper . newInstance ( context , Ġthis ). get Events ( start TS , Ġend TS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceived Events ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreceived Events ( events : ĠList < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Hash Ġ= Ġevents . hashCode () ĊĠĠĠĠĠĠĠ Ġif Ġ( new Hash Ġ== Ġlast Hash Ġ|| Ġ! is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlast Hash Ġ= Ġnew Hash ĊĊĠĠĠĠĠĠĠ Ġval Ġreplace Description Ġ= Ġcontext . config . replace Description ĊĠĠĠĠĠĠĠ Ġval Ġsorted Ġ= ĠArrayList < Event >( events . sorted With ( compare By ({ Ġit . start TS Ġ}, Ġ{ Ġit . end TS Ġ}, Ġ{ Ġit . title Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( replace Description ) Ġit . location Ġelse Ġit . description ĊĠĠĠĠĠĠĠ Ġ} ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġcontext ?. get Filtered Events ( sorted ) Ġ?: ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġactivity ?. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Events ( filtered ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Events ( events : ĠList < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġevents Adapter Ġ= ĠDay Events Adapter ( activity Ġas ĠSimple Activity , Ġevents , Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Event ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Holder . day _ events . adapter Ġ= Ġevents Adapter ĊĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( context , ĠDiv ider Item Decoration . VERTICAL ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Drawable ( context . resources . get Drawable ( R . drawable . divider )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Holder . day _ events . addItem Decoration ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġedit Event ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIntent ( activity . application Context , ĠEvent Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EVENT _ ID , Ġevent . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EVENT _ OCC UR REN CE _ TS , Ġevent . start TS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Items ( ids : ĠArrayList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent IDs Ġ= ĠArray ( ids . size , Ġ{ Ġi Ġ-> Ġ( ids [ i ]. toString ()) Ġ}) ĊĠĠĠĠĠĠĠ ĠDB Helper . newInstance ( activity . application Context , Ġthis ). delete Events ( event IDs , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Event Repeat Exception ( parent Ids : ĠArrayList < Int >, Ġtimestamps : ĠArrayList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent Ids . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . db Helper . add Event Repeat Exception ( parent Ids [ index ], Ġtimestamps [ index ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠDay Activity ). re check Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevent Inserted ( event : ĠEvent ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevents Deleted ( cnt : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠDay Activity ). re check Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgot Events ( events : ĠMutable List < Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġreceived Events ( events ) ĊĠĠĠ Ġ} Ċ } Ċ