/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 , ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . example . android . architecture . blueprint s . todo app . added it task Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . example . android . architecture . blueprint s . todo app . R Ċ import Ġcom . example . android . architecture . blueprint s . todo app . util . show Sn ackBar Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ Ċ /** Ċ Ġ* ĠMain ĠUI Ġfor Ġthe Ġadd Ġtask Ġscreen . ĠUsers Ġcan Ġenter Ġa Ġtask Ġtitle Ġand Ġdescription . Ċ Ġ*/ ĊĊ Ċ var Ġbutton _ date : ĠButton ? Ġ= Ġnull Ċ var Ġtext view _ date : ĠTextView ? Ġ= Ġnull Ċ var Ġcal Ġ= ĠCalendar . getInstance () Ċ class ĠAdd Edit Task Fragment Ġ: ĠFragment (), ĠAdd Edit Task Contract . View Ġ{ ĊĊĠĠĠ Ġoverride Ġlateinit Ġvar Ġpresenter : ĠAdd Edit Task Contract . Presenter ĊĠĠĠ Ġoverride Ġvar ĠisActive Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis Added ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtitle : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdescription : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdate : TextView ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġpresenter . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity ?. findViewById < Floating ActionButton >( R . id . fab _ edit _ task _ done )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ done ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save Task ( title . text . toString (), Ġdescription . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactivity ?. findViewById < TextView >( R . id . add _ date _ picker )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Picker Dialog ( this @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Set Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset ĠDate Picker Dialog Ġto Ġpoint Ġto Ġtoday 's Ġdate Ġwhen Ġit Ġloads Ġup ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . get ( Calendar . YEAR ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . get ( Calendar . MONTH ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . get ( Calendar . DAY _ OF _ MONTH )). show () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . save Task ( date . text . toString (), Ġdescription . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdate Set Listener Ġ= Ġobject Ġ: ĠDate Picker Dialog . On Date Set Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Date Set ( view : ĠDate Picker , Ġyear : ĠInt , Ġmonth OfYear : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday OfMonth : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( Calendar . MONTH , Ġmonth OfYear ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( Calendar . DAY _ OF _ MONTH , Ġday OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Date In View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġupdate Date In View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Format Ġ= Ġ" MM / dd / yyyy " Ġ// Ġmention Ġthe Ġformat Ġyou Ġneed ĊĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat ( my Format , ĠLocale . US ) ĊĠĠĠĠĠĠĠ Ġtext view _ date !!. text Ġ= Ġsdf . format ( cal . getTime ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġinflater . inflate ( R . layout . add task _ frag , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġwith ( root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠfindViewById ( R . id . add _ task _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠfindViewById ( R . id . add _ task _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate = findViewById ( R . id . add _ date _ picker ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Empty Task Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle . show Sn ackBar ( getString ( R . string . empty _ task _ message ), ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Tasks List () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetTitle ( title : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . title . text Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Description ( description : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . description . text Ġ= Ġdescription ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG UMENT _ EDIT _ TASK _ ID Ġ= Ġ" EDIT _ TASK _ ID " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( taskId : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Edit Task Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Add Edit Task Fragment . ARGUMENT _ EDIT _ TASK _ ID , ĠtaskId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ