/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠBy ĠG eek s ĠEmp ire . Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠE li as ĠF azel Ċ Ġ* ĠLast Ġmodified Ġ 4 / 1 2 / 2 1 Ġ 8 : 5 0 ĠAM Ċ Ġ* Ċ Ġ* ĠLicensed ĠUnder ĠMIT ĠLicense . Ċ Ġ* Ġhttps :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġnet . ge ek semp ire . ready . keep . notes . Reminder Configurations . User Interface Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . firebase . Timestamp Ċ import Ġcom . google . firebase . auth . k tx . auth Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Database . Json . Json IO Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Database . Network Endpoints . Database Endpoints Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Keep Note Application Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Preferences . Theme . Theme Preferences Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Preferences . Theme . Theme Type Ċ import Ġnet . ge ek semp ire . ready . keep . notes . R Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Reminder Configurations . Data Structure . Reminder Content Data Structure Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Reminder Configurations . Data Structure . Reminder Data Structure Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Reminder Configurations . IO . Reminder Input Ċ import Ġjava . util .* Ċ Ċ class ĠRem inder Time Dialog ue ( private Ġval Ġcontext : ĠAppCompatActivity , Ġprivate Ġval Ġtheme Preferences : ĠTheme Preferences ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Endpoints Ġ= ĠDatabase Endpoints () ĊĊĠĠĠ Ġprivate Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdate Picker Dialog : ĠDate Picker Dialog ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtime Picker Dialog : ĠTime Picker Dialog ĊĊĠĠĠ Ġfun Ġinitialize ( reminder Content Data Structure : ĠRem inder Content Data Structure ) Ġ: ĠRem inder Time Dialog ue Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdate Picker Dialog Ġ= ĠDate Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( theme Preferences . check Theme Light Dark ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Light Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . Time Dialog ue _ Light ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Dark Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . Time Dialog ue _ Dark ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . style . Time Dialog ue _ Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġdate Picker , Ġyear , Ġmonth , Ġday OfMonth Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġmonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . DAY _ OF _ MONTH , Ġday OfMonth ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Picker Dialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Picker Dialog . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . YEAR ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . MONTH ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . DAY _ OF _ MONTH ] ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġtime Picker Dialog Ġ= ĠTime Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( theme Preferences . check Theme Light Dark ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Light Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . Time Dialog ue _ Light ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Dark Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . Time Dialog ue _ Dark ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . style . Time Dialog ue _ Light ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtime Picker , Ġhours , Ġminutes Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġhours ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġminutes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġ 1 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreminder Data Structure Ġ= ĠRem inder Data Structure ( document Id Ġ= Ġreminder Content Data Structure . document Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreminder Title Ġ= Ġreminder Content Data Structure . reminder Title , Ġreminder Description Ġ= Ġreminder Content Data Structure . reminder Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreminder Time Year Ġ= Ġcalendar [ Calendar . YEAR ], Ġreminder Time Month Ġ= Ġcalendar [ Calendar . MONTH ], Ġreminder Time Day Ġ= Ġcalendar [ Calendar . DAY _ OF _ MONTH ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreminder Time Hour Ġ= Ġcalendar [ Calendar . HOUR _ OF _ DAY ], Ġreminder Time Minute Ġ= Ġcalendar [ Calendar . MINUTE ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson IO Ġ= ĠJson IO () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson IO . write Reminder Data ( reminder Data Structure ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRem inder Input ( context , Ġcalendar ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( reminder Data Structure ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinsert To Calendar ( reminder Data Structure ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase . auth . currentUser ?. let Ġ{ Ġfirebase User Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context . application Ġas ĠKeep Note Application ). firestore Database ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( database Endpoints . note Texts Document Endpoint ( firebase User UniqueId Ġ= Ġfirebase User . uid , Ġnote Document Id Ġ= Ġreminder Content Data Structure . document Id . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" note Reminder ", ĠTimestamp ( calendar . time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). add On Success Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Picker Dialog . dismiss () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . HOUR _ OF _ DAY ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar [ Calendar . MINUTE ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis @ Reminder Time Dialog ue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġshow Calendar () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Calendar () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdate Picker Dialog . show () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Time () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtime Picker Dialog . show () ĊĊĠĠĠ Ġ} Ċ Ċ }