package Ġcom . xf hy . todo . activity Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġcom . xf hy . library . base kit . activity . Title Bar M vp Activity Ċ import Ġcom . xf hy . library . utils . Date Utils Ċ import Ġcom . xf hy . todo . R Ċ import Ġcom . xf hy . todo . common . Constant Ċ import Ġcom . xf hy . todo . data . bean . Todo Bean Ċ import Ġcom . xf hy . todo . presenter . Edit Todo Contract Ċ import Ġcom . xf hy . todo . presenter . impl . Edit Todo Presenter Ċ import Ġkotlinx . android . synt hetic . main . activity _ edit _ todo .* Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ 2 0 1 8 å¹´ 8 æľĪ 1 4 æĹ¥ 1 7 : 3 3 : 1 0 Ċ Ġ* Ġ@ author Ġxf hy Ċ Ġ* Ġ ç¼ĸè¾ĳ todo çķĮéĿ¢ Ċ Ġ*/ Ċ class ĠEdit Todo Activity Ġ: ĠTitle Bar M vp Activity < Edit Todo Presenter >(), ĠEdit Todo Contract . View Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵåīį çķĮ éĿ¢çļĦ åĬŁèĥ½ ç±»åŀĭ : ç¼ĸè¾ĳ Ġ æĪĸèĢħ Ġæ·»åĬł ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFUN _ TYPE Ġ= Ġ" fun _ type " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTODO _ DATA Ġ= Ġ" todo _ data " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFUN _ TYPE _ EDIT Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFUN _ TYPE _ ADD Ġ= Ġ 1 0 0 1 ĊĊĠĠĠĠĠĠĠ Ġ// çĶ¨äºİ Activity Ġ åĽŀ ä¼ł æķ°æį® ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEDIT _ TODO _ ITEM Ġ= Ġ" edit _ todo _ item " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠADD _ TODO _ ITEM Ġ= Ġ" add _ todo _ item " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ è¿Ľåħ¥ ç¼ĸè¾ĳ todo çķĮéĿ¢ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġenter Edit Todo Activity ( fragment : ĠFragment , Ġtodo Data : ĠTodo Bean . Data . Todo Item ?, Ġrequest Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( fragment . context , ĠEdit Todo Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( FUN _ TYPE , ĠFUN _ TYPE _ EDIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Serializable ( TODO _ DATA , Ġtodo Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . startActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ è¿Ľåħ¥ æ·»åĬł todo çķĮéĿ¢ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġenter Add Todo Activity ( fragment : ĠFragment , Ġrequest Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( fragment . context , ĠEdit Todo Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( FUN _ TYPE , ĠFUN _ TYPE _ ADD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . startActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵåīį çķĮ éĿ¢çļĦ åĬŁèĥ½ ç±»åŀĭ : ç¼ĸè¾ĳ Ġ æĪĸèĢħ Ġæ·»åĬł ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Fun Type Ġ= ĠFUN _ TYPE _ EDIT ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç¼ĸè¾ĳ todo æĹ¶ ä¼łåħ¥ çļĦåĢ¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Todo Item Data : ĠTodo Bean . Data . Todo Item ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit _ todo ) ĊĊĠĠĠĠĠĠĠ Ġinit Intent Data () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Presenter () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter Ġ= ĠEdit Todo Presenter ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Intent Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Fun Type Ġ= Ġintent . getInt Extra ( FUN _ TYPE , ĠFUN _ TYPE _ EDIT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Fun Type Ġ== ĠFUN _ TYPE _ EDIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" æ¸ħ åįķ è¯¦ç»Ĩ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġintent . extras ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Todo Item Data Ġ= Ġbundle . get Serializable ( TODO _ DATA ) Ġas ? ĠTodo Bean . Data . Todo Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Title Et . setText ( m Todo Item Data ?. title Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content Et . setText ( m Todo Item Data ?. content Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Choose Time Tv . text Ġ= Ġm Todo Item Data ?. date Str Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Fun Type Ġ== ĠFUN _ TYPE _ ADD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" æ·»åĬł æ¸ħ åįķ " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åıªæľī åľ¨ æ·»åĬł æĹ¶ æīį éľĢè¦ģ è®¾ç½® æĹ¥æľŁ é»ĺè®¤ åĢ¼ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Fun Type Ġ== ĠFUN _ TYPE _ ADD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Choose Time Tv . text Ġ= ĠDate Utils . get DateFormat Text ( System . currentTimeMillis (), Ġ" yyyy - MM - dd ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Choose Time Tv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Ok Animation View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetermine () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetermine () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æ£Ģæµĭ åĲĪ æ³ķ è¾ĵåħ¥ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Title Et . text . toString (). trim (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Empty Warn () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Ok Animation View . play Animation () ĊĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( m Fun Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFUN _ TYPE _ EDIT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter ?. update ( m Todo Item Data ?. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 , Ġm Title Et . text . toString (). trim (), Ġm Content Et . text . toString (). trim (), Ġm Choose Time Tv . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Todo Item Data ?. status Ġ?: ĠConstant . UND ONE _ STAT ES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFUN _ TYPE _ ADD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter ?. add Todo ( m Title Et . text . toString (). trim (), Ġm Content Et . text . toString (). trim (), Ġm Choose Time Tv . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtitle Empty Warn () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ä½¿ m Title Et ä¸Ĭä¸ĭ æĬ ĸ åĬ¨ Ġ Ġ åĬł å¼º çĶ¨æĪ· æ³¨æĦı ĊĠĠĠĠĠĠĠ Ġm Title Et . set Hint TextColor ( resources . getColor ( R . color . sn ackbar _ origin )) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Y Ġ= Ġm Title Et . rotation Y ĊĠĠĠĠĠĠĠ Ġval Ġobject Animator Ġ= ĠObject Animator . of Float ( m Title Et , Ġ" translation Y ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Y Ġ+ Ġ 5 , Ġtitle Y Ġ- Ġ 5 , Ġtitle Y Ġ+ Ġ 5 , Ġtitle Y Ġ- Ġ 5 , Ġtitle Y Ġ+ Ġ 5 , Ġtitle Y Ġ- Ġ 5 , Ġtitle Y Ġ+ Ġ 5 , Ġtitle Y Ġ- Ġ 5 , Ġtitle Y ) ĊĠĠĠĠĠĠĠ Ġobject Animator . duration Ġ= Ġ 1 5 0 0 ĊĠĠĠĠĠĠĠ Ġobject Animator . start () ĊĠĠĠĠĠĠĠ Ġobject Animator . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Title Et . set Hint TextColor ( resources . getColor ( R . color . gray _ cd cd cd )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtoast (" è¯·è¾ĵåħ¥ æłĩé¢ĺ !! ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Success ( data : ĠTodo Bean . Data . Todo Item ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Fun Type Ġ== ĠFUN _ TYPE _ ADD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽŀ ä¼ł æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Serializable ( EDIT _ TODO _ ITEM , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Fun Type Ġ== ĠFUN _ TYPE _ EDIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽŀ ä¼ł æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Todo Item Data ?. title Ġ= Ġm Title Et . text . toString (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Todo Item Data ?. content Ġ= Ġm Content Et . text . toString (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Todo Item Data ?. date Str Ġ= Ġm Choose Time Tv . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Serializable ( EDIT _ TODO _ ITEM , Ġm Todo Item Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å±ķç¤º éĢīæĭ© ç³»ç»Ł æĹ¥æľŁ å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġshow DatePicker Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Dialog Ġ= ĠDate Picker Dialog ( this , ĠDate Picker Dialog . On Date Set Listener Ġ{ Ġ_, Ġyear , Ġmonth , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Choose Time Tv . text Ġ= Ġ"$ year -${ month Ġ+ Ġ 1 }- $ day OfMonth " ĊĠĠĠĠĠĠĠ Ġ}, Ġcalendar . get ( Calendar . YEAR ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . get ( Calendar . MONTH ), Ġcalendar . get ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Ġ= Ġdate Picker Dialog . date Picker ĊĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ æĺ¯ æ·»åĬł todo Ġ åĪĻ è®¾ç½® ä¸Ģä¸ª å¼Ģå§ĭ æĹ¥æľŁ ä¸º ä»Ĭå¤© Ġ Ġ è¿Ļæł· æīį åĲĪ çĲĨ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Fun Type Ġ== ĠFUN _ TYPE _ ADD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® èµ· å§ĭ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Picker . min Date Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® ç»ĵæĿŁ æĹ¥æľŁ ĊĠĠĠĠĠĠĠ Ġ// date Picker . max Date Ġ= Ġxx ĊĠĠĠĠĠĠĠ Ġdate Picker Dialog . show () ĊĠĠĠ Ġ} Ċ Ċ } Ċ