/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 , ĠSh ash ank ĠVer ma Ġ< sh ash ank . ver ma 2 0 0 2 @ gmail . com > Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ*/ Ċ Ċ package Ġcom . alpha . dev . schedule _ dark _ theme Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . format . DateFormat Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompat Dialog Ċ import Ġcom . alpha . dev . schedule _ dark _ theme . app Service . Interfaces Ċ import Ġkotlinx . android . synt hetic . main . time _ picker .* Ċ import Ġjava . util .* Ċ Ċ class ĠTime Picker ( context : ĠContext , Ġprivate Ġval Ġmode Dark : ĠInt , Ġon Time ChangeListener : ĠInterfaces . On Time ChangeListener ) Ġ: ĠAppCompat Dialog ( context ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġctx : ĠContext Ġ= Ġcontext ĊĠĠĠ Ġprivate Ġval Ġlistener Ġ= Ġon Time ChangeListener ĊĊĠĠĠ Ġprivate Ġval Ġtag Ġ= Ġ" Time ĠP icker " ĊĊĠĠĠ Ġprivate Ġvar Ġhour Ġ= Ġ- 9 ĊĠĠĠ Ġprivate Ġvar Ġmin Ġ= Ġ- 9 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . time _ picker ) ĊĠĠĠĠĠĠĠ Ġwindow !!. setBackground Drawable Resource ( R . drawable . bg _ recent ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc M Ġ= ĠCalendar . getInstance () ĊĊĠĠĠĠĠĠĠ Ġtime Picker . hour Ġ= Ġc M . get ( Calendar . HOUR _ OF _ DAY ) ĊĠĠĠĠĠĠĠ Ġtime Picker . minute Ġ= Ġc M . get ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠ Ġhour Ġ= Ġc M . get ( Calendar . HOUR _ OF _ DAY ) ĊĠĠĠĠĠĠĠ Ġmin Ġ= Ġc M . get ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠ Ġtime Picker . setIs 2 4 Hour View ( DateFormat . is 2 4 Hour Format ( ctx )) ĊĊĠĠĠĠĠĠĠ Ġlog ( tag , Ġ" onCreate : Ġis 2 4 Hour Ġ?= Ġ${ time Picker . is 2 4 Hour View }", Ġctx ) ĊĊĠĠĠĠĠĠĠ Ġcancel Btn . setOnClickListener Ġ{ Ġdismiss () Ġ} ĊĊĠĠĠĠĠĠĠ Ġtime Picker . setOn Time Changed Listener Ġ{ Ġ_, Ġi , Ġi 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= Ġi 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( tag , Ġ" on Time Change : ĠHour Ġ= Ġ$ i Ġ\ n ĠMin ute Ġ= Ġ$ i 2 ", Ġctx ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdone Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpref Ġ= ĠPreference Helper ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mode Dark Ġ== ĠD ARK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( tag , Ġ" mode Ġ= ĠD ARK ", Ġctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance (). put ( Calendar . HOUR _ OF _ DAY , Ġhour ). put ( Calendar . MINUTE , Ġmin ). put ( Calendar . SECOND , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġc . time In Millis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( tag , Ġ" Time Ġ= Ġ$ time ", Ġctx ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Time Same ( pref . getLong ( TIME _ DISABLE , ĠDEFAULT _ DISABLE _ TIME ), Ġtime )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Toast ( ctx , Ġ" Dark Ġtheme Ġtoggle Ġtime Ġcan 't Ġbe Ġsame Ġ: /", Ġduration Ġ= ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Long ( TIME _ ENABLE , Ġtime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . onChange ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Ġ= ĠCalendar . getInstance (). put ( Calendar . HOUR _ OF _ DAY , Ġhour ). put ( Calendar . MINUTE , Ġmin ). put ( Calendar . SECOND , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġk . time In Millis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( tag , Ġ" Time Ġ= Ġ$ time ", Ġctx ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Time Same ( pref . getLong ( TIME _ ENABLE , ĠDEFAULT _ ENABLE _ TIME ), Ġtime )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Toast ( ctx , Ġ" Dark Ġtheme Ġtoggle Ġtime Ġcan 't Ġbe Ġsame Ġ: /", Ġduration Ġ= ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref . put Long ( TIME _ DISABLE , Ġtime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . onChange ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Time Same ( initial : ĠLong , Ġnew : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠCalendar . getInstance (). put TimeIn Millis ( initial ) ĊĠĠĠĠĠĠĠ Ġval Ġn Ġ= ĠCalendar . getInstance (). put TimeIn Millis ( new ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġi . get ( Calendar . HOUR _ OF _ DAY ) Ġ== Ġn . get ( Calendar . HOUR _ OF _ DAY ) Ġ&& Ġi . get ( Calendar . MINUTE ) Ġ== Ġn . get ( Calendar . MINUTE ) ĊĠĠĠ Ġ} Ċ }