package Ġio . github . hi rom oo . ky ute ch timetable Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . format . TextStyle Ċ import Ġjava . util .* Ċ Ċ class ĠUtility Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow DatePicker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġyear : ĠInt , Ġmonth : ĠInt , Ġday OfMonth : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠDate Picker Dialog . On Date Set Listener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( DatePicker Dialog ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Date ( year , Ġmonth Ġ- Ġ 1 , Ġday OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Date Set Listener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow DatePicker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġdate : ĠLocalDate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠDate Picker Dialog . On Date Set Listener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( date ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker Dialog ( context , Ġyear , Ġmonth . value , Ġday OfMonth , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Time Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġhour OfDay : ĠInt , Ġminute : ĠInt , Ġis 2 4 Hour View : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠTime Picker Dialog . On Time Set Listener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour OfDay , Ġminute , Ġis 2 4 Hour View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Time Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġtime : ĠLocal Time , Ġis 2 4 Hour View : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠTime Picker Dialog . On Time Set Listener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Time Picker Dialog ( context , Ġhour , Ġminute , Ġis 2 4 Hour View , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Time Length Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity : ĠFragment Activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminute : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠPick ers Dialog . OnClick Positive Button Listener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Time Translator ( minute )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPick ers Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 9 9 9 , Ġ 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptimized Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptimized ElementType . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . minutes ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . hours ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . days ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . week s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClick Positive Button Listener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( activity . support FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow TimeZone Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity : ĠFragment Activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzone Id : ĠZone Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzone Ids : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠPick ers Dialog . OnClick Positive Button Listener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPick ers Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzone Ids . size Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzone Ids . indexOf ( zone Id . id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzone Ids . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZone Id . of ( it ). get DisplayName ( TextStyle . FULL , ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClick Positive Button Listener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ( activity . support FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetTime String ( context : ĠContext , Ġminute : ĠInt , Ġ@ String Res Ġres Id : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Time Translator ( minute )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( optimized ElementType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Translator . Time ElementType . W EE KS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( res Id , Ġoptimized Element , ĠgetString ( R . string . week s )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Translator . Time ElementType . DAYS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( res Id , Ġoptimized Element , ĠgetString ( R . string . days )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime Translator . Time ElementType . HOUR S Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( res Id , Ġoptimized Element , ĠgetString ( R . string . hours )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( res Id , Ġoptimized Element , ĠgetString ( R . string . minutes )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġalter Document ( context : ĠContext , Ġuri : ĠUri , Ġdata : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open FileDescriptor ( uri , Ġ" w ") ?. use Ġ{ Ġdescriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileOutputStream ( descriptor . file Descriptor ). use Ġ{ Ġf os Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( fos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . truncate ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( data . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġread Text From Uri ( context : ĠContext , Ġuri : ĠUri ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open InputStream ( uri )?. use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBufferedReader ( InputStream Reader ( inputStream )). use Ġ{ Ġreader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline : ĠString ? Ġ= Ġreader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( line Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( line ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġreader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTime Translator ( ĊĠĠĠĠĠĠĠ Ġvar Ġminutes All : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠTime ElementType Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMIN UTES , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHO UR S , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDAY S , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW EE KS ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( value : ĠInt , Ġtype : ĠTime ElementType ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . W EE KS Ġ-> Ġvalue Ġ* Ġ 7 Ġ* Ġ 2 4 Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . DAYS Ġ-> Ġvalue Ġ* Ġ 2 4 Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . HOUR S Ġ-> Ġvalue Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . MIN UTES Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġminutes : ĠInt Ġget () Ġ= Ġminutes All Ġ% Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġhours : ĠInt Ġget () Ġ= Ġ( minutes All Ġ- Ġweeks Ġ* Ġ 7 Ġ* Ġ 2 4 Ġ* Ġ 6 0 Ġ- Ġdays Ġ* Ġ 2 4 Ġ* Ġ 6 0 ) Ġ/ Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġdays : ĠInt Ġget () Ġ= Ġ( minutes All Ġ- Ġweeks Ġ* Ġ 7 Ġ* Ġ 2 4 Ġ* Ġ 6 0 ) Ġ/ Ġ( 6 0 Ġ* Ġ 2 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġweeks : ĠInt Ġget () Ġ= Ġminutes All Ġ/ Ġ( 6 0 Ġ* Ġ 2 4 Ġ* Ġ 7 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġoptimized ElementType : ĠTime ElementType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( week s Ġ> Ġ 0 Ġ&& Ġdays Ġ== Ġ 0 Ġ&& Ġhours Ġ== Ġ 0 Ġ&& Ġminutes Ġ== Ġ 0 ) ĠTime ElementType . W EE KS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( days Ġ> Ġ 0 Ġ&& Ġhours Ġ== Ġ 0 Ġ&& Ġminutes Ġ== Ġ 0 ) ĠTime ElementType . DAYS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( hours Ġ> Ġ 0 Ġ&& Ġminutes Ġ== Ġ 0 ) ĠTime ElementType . HOUR S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠTime ElementType . MIN UTES ĊĊĠĠĠĠĠĠĠ Ġval Ġoptimized Element : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( optimized ElementType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . W EE KS Ġ-> Ġweeks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . DAYS Ġ-> Ġdays Ġ+ Ġweeks Ġ* Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . HOUR S Ġ-> Ġhours Ġ+ Ġdays Ġ* Ġ 2 4 Ġ+ Ġweeks Ġ* Ġ 7 Ġ* Ġ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTime ElementType . MIN UTES Ġ-> Ġminutes All ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }