/* čĊ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . čĊ Ġ* ĠJo Ã£o ĠP au lo ĠS ena Ġ< jo aop au lo 7 6 1 @ gmail . com > čĊ Ġ* čĊ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġthe ĠUN ES ĠOpen ĠSource ĠProject . čĊ Ġ* čĊ Ġ* ĠUN ES Ġis Ġlicensed Ġunder Ġthe ĠMIT ĠLicense čĊ Ġ* čĊ Ġ* Ġ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 . čĊ Ġ* čĊ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR čĊ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , čĊ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE čĊ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER čĊ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , čĊ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE čĊ Ġ* ĠSOFTWARE . čĊ Ġ*/ čĊč Ċ package Ġcom . for c et ower . ue fs . feature . rem inders čĊč Ċ import Ġandroid . content . res . Color State List č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . util . Typed Value č Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . View č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroidx . core . content . Context Compat č Ċ import Ġcom . for c et ower . ue fs . R č Ċ import Ġcom . for c et ower . ue fs . core . injection . Injectable č Ċ import Ġcom . for c et ower . ue fs . core . vm . U ViewModel Factory č Ċ import Ġcom . for c et ower . ue fs . databinding . Dialog Create Reminder Binding č Ċ import Ġcom . for c et ower . ue fs . feature . shared . Rounded Dialog č Ċ import Ġcom . for c et ower . ue fs . feature . shared . inflate č Ċ import Ġcom . for c et ower . ue fs . feature . shared . extensions . provide ViewModel č Ċ import Ġcom . wd ull aer . material datetime picker . date . DatePicker Dialog č Ċ import Ġjava . util . Calendar č Ċ import Ġjavax . inject . Inject čĊč Ċ class ĠCreate Reminder Dialog Ġ: ĠRo unded Dialog (), ĠInjectable Ġ{ čĊĠĠĠ Ġ@ Inject čĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠU ViewModel Factory čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠDialog Create Reminder Binding čĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠRem inders ViewModel čĊčĊĠĠĠ Ġoverride Ġfun Ġon Child Create View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ čĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġprovide ViewModel ( factory ) čĊĠĠĠĠĠĠĠ Ġbinding Ġ= Ġinflater . inflate ( R . layout . dialog _ create _ reminder ) čĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Ok . setOnClickListener Ġ{ Ġcreate Reminder () Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Deadline . setOnClickListener Ġ{ Ġopen Calendar () Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Cancel . setOnClickListener Ġ{ Ġdismiss () Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġcreate Reminder () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġbinding . textInput Title . text ?. toString () čĊĠĠĠĠĠĠĠ Ġvar Ġdescription Ġ= Ġbinding . textInput Description . text ?. toString () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( title Ġ== Ġnull Ġ|| Ġtitle . isBlank ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textInput Title . error Ġ= ĠgetString ( R . string . reminder _ title _ empty ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textInput Title . request Focus () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( description Ġ!= Ġnull Ġ&& Ġdescription . isBlank ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġnull čĊčĊĠĠĠĠĠĠĠ ĠviewModel . create Reminder ( title , Ġdescription ) čĊĠĠĠĠĠĠĠ Ġdismiss () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġopen Calendar () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . current Deadline Ġ!= Ġnull ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= ĠviewModel . current Deadline !! čĊčĊĠĠĠĠĠĠĠ Ġval Ġpicker Ġ= ĠDate Picker Dialog . newInstance ({ Ġ_, Ġy , Ġm , Ġd Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= ĠCalendar . getInstance (). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( Calendar . YEAR , Ġy ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( Calendar . MONTH , Ġm ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( Calendar . DAY _ OF _ MONTH , Ġd ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. time In Millis čĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . current Deadline Ġ= Ġnext čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Deadline . icon Tint Ġ= ĠColor State List . valueOf ( Context Compat . getColor ( require Context (), ĠR . color . blue _ accent )) čĊĠĠĠĠĠĠĠ Ġ}, Ġcalendar ) čĊĠĠĠĠĠĠĠ Ġpicker . version Ġ= ĠDate Picker Dialog . Version . VERSION _ 2 čĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠContext Compat . getColor ( require Context (), ĠR . color . color Primary ) čĊĠĠĠĠĠĠĠ Ġpicker . accent Color Ġ= Ġcolor čĊĠĠĠĠĠĠĠ Ġpicker . set Ok Color ( color ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġrequire Context (). theme čĊĠĠĠĠĠĠĠ Ġval Ġdark Theme Value Ġ= ĠTyped Value () čĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . light StatusBar , Ġdark Theme Value , Ġtrue ) čĊĠĠĠĠĠĠĠ Ġpicker . is Theme Dark Ġ= Ġdark Theme Value . data Ġ== Ġ 0 čĊčĊĠĠĠĠĠĠĠ Ġval Ġcolor On Surface Light Ġ= ĠTyped Value () čĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . color On Surface Light , Ġcolor On Surface Light , Ġtrue ) čĊĠĠĠĠĠĠĠ Ġpicker . set Cancel Color ( color On Surface Light . data ) čĊčĊĠĠĠĠĠĠĠ Ġpicker . show ( child FragmentManager , Ġ" date _ picker _ dialog ") čĊĠĠĠ Ġ} č Ċ }