package Ġcom . mm rx . gym rec . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . text . format . Time Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . mm rx . gym rec . R Ċ import Ġcom . mm rx . gym rec . ui . framework . I Page Content Ċ import Ġkotlinx . android . synt hetic . main . view _ date _ picker . view .* Ċ import Ġkotlinx . android . synt hetic . main . view _ time _ picker . view .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmm rx Ġon Ġ 1 7 / 1 2 / 1 6 . Ċ Ġ*/ ĊĊ Ċ /** Ċ Ġ* Ġæł¹æį® Ġlayout Id ĠçĶŁæĪĲ view Ċ Ġ*/ Ċ fun Ġcreate View By Lay ou yt Id ( layout Id : ĠInt , context : ĠContext ): ĠView Ġ{ ĊĠĠĠ Ġvar Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( layout Id , null ) ĊĠĠĠ Ġreturn Ġview Ċ } Ċ Ċ /** Ċ Ġ* Ġæł¹æį® Ġlayout Id ĠçĶŁæĪĲ ĠI Page Content Ġå¯¹è±¡ Ċ Ġ*/ Ċ fun Ġcreate I Page Content By Lay ou yt Id ( layout Id : ĠInt , context : ĠContext ): ĠI Page Content ? { ĊĠĠĠ Ġval Ġview Ġ= Ġcreate View By Lay ou yt Id ( layout Id , Ġcontext ) ĊĠĠĠ Ġif Ġ( view Ġis ĠI Page Content ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun ĠgetString By Res Id ( context : ĠContext , id : ĠInt ): String { ĊĠĠĠ Ġreturn Ġcontext . resources . getString ( id ) Ċ } Ċ Ċ interface ĠI util Dialog CallBack { ĊĠĠĠ Ġfun Ġ< T : Any > onClick ( t : T ?) Ċ } Ċ fun Ġcreate Dialog With Edit ( context : ĠContext , title : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack : ĠI util Dialog CallBack ?): ĠMaterial Dialog { ĊĠĠĠ Ġval Ġedit Layout Ġ= Ġcreate View By Lay ou yt Id ( R . layout . view _ edit _ tv , Ġcontext ) ĊĠĠĠ Ġreturn ĠMaterial Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. custom View ( edit Layout , false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive ({ dialog ,_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġedit Layout . findViewById < EditText >( R . id . view EditText ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! TextUtils . isEmpty ( content )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack ?. onClick ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Negative ({ dialog , Ġ_ Ġ-> dialog . dismiss () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ } Ċ Ċ fun Ġget System Date (): Triple < Int , Int , Int >{ ĊĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġreturn ĠTrip le ( c . get ( Calendar . YEAR ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . get ( Calendar . MONTH ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . get ( Calendar . DAY _ OF _ MONTH )) Ċ } Ċ Ċ fun Ġget System Time (): Pair < Int , Int >{ ĊĠĠĠ Ġval Ġt Ġ= ĠTime () ĊĠĠĠ Ġt . set To Now () ĊĠĠĠ Ġreturn ĠPair ( t . hour , t . minute ) Ċ } Ċ Ċ fun Ġcreate Dialog Normal ( context : ĠContext , title : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent : ĠString , positive CallBack : ĠI util Dialog CallBack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative CallBack : ĠI util Dialog CallBack ): ĠMaterial Dialog { ĊĠĠĠ Ġreturn ĠMaterial Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack . onClick ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Negative Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative CallBack . onClick ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ } Ċ Ċ fun Ġcreate Dialog With DatePicker ( context : ĠContext , title : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack : ĠI util Dialog CallBack ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear : ĠInt Ġ= Ġ- 1 , month : ĠInt Ġ= Ġ- 1 , day : ĠInt Ġ= Ġ- 1 ): ĠMaterial Dialog { ĊĠĠĠ Ġval Ġdate Picker Layout Ġ= Ġcreate View By Lay ou yt Id ( R . layout . view _ date _ picker , Ġcontext ) ĊĠĠĠ Ġif ( year Ġ== Ġ- 1 Ġ|| Ġmonth Ġ== Ġ- 1 Ġ|| Ġday Ġ== Ġ- 1 ){ ĊĠĠĠĠĠĠĠ Ġval Ġ( y , m , d ) Ġ= Ġget System Date () ĊĠĠĠĠĠĠĠ Ġdate Picker Layout . date Picker . init ( y , m , d , Ġnull ) ĊĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠ Ġdate Picker Layout . date Picker . init ( year , month - 1 , day , Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠMaterial Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. custom View ( date Picker Layout , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive ({ dialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġdate Picker Layout . date Picker . year ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonth Ġ= Ġdate Picker Layout . date Picker . month Ġ+ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġdate Picker Layout . date Picker . day OfMonth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack ?. onClick ("${ year }-${ month }-${ day }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Negative ({ dialog , Ġ_ Ġ-> dialog . dismiss () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ } Ċ Ċ fun Ġcreate Dialog With Time Picker ( context : ĠContext , title : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack : ĠI util Dialog CallBack ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour : ĠInt Ġ= Ġ- 1 , minute : ĠInt Ġ= Ġ- 1 ): ĠMaterial Dialog { ĊĠĠĠ Ġval Ġtime Picker Layout Ġ= Ġcreate View By Lay ou yt Id ( R . layout . view _ time _ picker , Ġcontext ) ĊĠĠĠ Ġtime Picker Layout . time Picker . setIs 2 4 Hour View ( true ) ĊĠĠĠ Ġif ( hour Ġ== Ġ- 1 Ġ|| Ġminute Ġ== Ġ- 1 ){ ĊĠĠĠĠĠĠĠ Ġval Ġ( h , m ) Ġ= Ġget System Time () ĊĠĠĠĠĠĠĠ Ġtime Picker Layout . time Picker . current Hour Ġ= Ġh ĊĠĠĠĠĠĠĠ Ġtime Picker Layout . time Picker . current Minute Ġ= Ġm ĊĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠ Ġtime Picker Layout . time Picker . current Hour Ġ= Ġhour ĊĠĠĠĠĠĠĠ Ġtime Picker Layout . time Picker . current Minute Ġ= Ġminute ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠMaterial Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. custom View ( time Picker Layout , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive ({ dialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġtime Picker Layout . time Picker . current Hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminute Ġ= Ġtime Picker Layout . time Picker . current Minute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive CallBack ?. onClick ("${ hour }:${ minute }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Negative ({ dialog , Ġ_ Ġ-> dialog . dismiss () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ } ĊĊĊ