package Ġcom . override 0 3 3 0 . team im . view . home Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . override 0 3 3 0 . team im . R Ċ import Ġcom . override 0 3 3 0 . team im . model . Refresh TaskList Event Ċ import Ġcom . override 0 3 3 0 . team im . base . Base ViewModel Fragment Ċ import Ġcom . override 0 3 3 0 . team im . model . bean . Task Ċ import Ġcom . override 0 3 3 0 . team im . view . adapter . Task Home Adapter Ċ import Ġcom . override 0 3 3 0 . team im . view . task . Task Completed Activity Ċ import Ġcom . override 0 3 3 0 . team im . view . task . Task Create Activity Ċ import Ġcom . override 0 3 3 0 . team im . view . task . Task Detail Activity Ċ import Ġcom . override 0 3 3 0 . team im . view model . Task ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ task _ main .* Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ data Ġ 2 0 1 9 - 0 8 - 1 5 Ċ Ġ* Ġ@ author ĠOverride 0 3 3 0 Ċ Ġ* Ġ@ description Ċ Ġ*/ ĊĊ Ċ class ĠTask Fragment Ġ: ĠBase ViewModel Fragment < Task ViewModel > (){ ĊĠĠĠ Ġoverride Ġval ĠviewModel Class : ĠClass < Task ViewModel > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTask ViewModel :: class . java ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠTask Home Adapter ( this ) ĊĊĠĠĠ Ġ// è¢« åıĸæ¶Ī çļĦ ä»»åĬ¡ çļĦ æłĪ ĊĠĠĠ Ġval Ġstack Ġ= ĠStack < Pair < Int , Task >>() ĊĊĠĠĠ Ġ// æİ§åĪ¶ æĴ ¤ éĶĢ æĮīéĴ® çļĦ Timer ĊĠĠĠ Ġvar Ġtimer Ġ= ĠTimer () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ task _ main , container , false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġrv _ task _ main . layout Manager Ġ= ĠLinearLayoutManager ( this . context ) ĊĠĠĠĠĠĠĠ Ġsmart _ refresh _ task _ home . setOn Refresh Listener Ġ{ Ġrefresh Layout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Layout . finish Refresh ( 1 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsmart _ refresh _ task _ home . auto Refresh () ĊĊĠĠĠĠĠĠĠ Ġ// ä»»åĬ¡ Item è·³è½¬ ĊĠĠĠĠĠĠĠ Ġadapter . on ItemClickListener Ġ= Ġobject Ġ: ĠTask Home Adapter . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġtask : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æīĵå¼Ģ ä»»åĬ¡ è¯¦æĥħ çķĮéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . show List != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Task Fragment . context , Task Detail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" taskId ", Ġtask . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// è®°å½ķ å·² å®ĮæĪĲ ĊĠĠĠĠĠĠĠ Ġadapter . on CheckBox ClickListener Ġ= Ġobject Ġ: Task Home Adapter . On CheckBox ClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon CheckBox Click ( view : ĠView , Ġtask : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcheckBox Ġ= Ġview Ġas ĠCheckBox ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ¯ıæ¬¡ çĤ¹åĩ» å°Ĩ å®ĮæĪĲ çļĦ ä»»åĬ¡ åİĭ æłĪ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" è®°å½ķ çļĦ position "," ${ task . title } Ġ${ adapter . show List !!. indexOf ( task )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . push ( Pair ( adapter . show List !!. indexOf ( task ), task )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv _ task _ main _ cancel _ count . text Ġ= Ġ"${ stack . size } ä¸ª ä»»åĬ¡ å·² å®ĮæĪĲ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" è¢« åĪłéĻ¤ çļĦ ä»»åĬ¡ "," $ task . conversation Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete At Position ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åģļ ä¸Ģä¸ª è®¡ æĹ¶ åĻ¨ ï¼Į å¦Ĥæŀľ 3 ç§Ĵ æ²¡æľī çĤ¹åĩ» æĪĸèĢħ æĺ¯ ç»§ç»Ń åıĸæ¶Ī æĮīéĴ® ï¼Į åĪĻ æ¶Ī å¤± ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart To Cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// æĴ ¤ éĶĢ æĮīéĴ® çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ Ġtv _ task _ main _ cancel . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ å·²ç»ı å¼Ģå§ĭ æ¶Ī å¤± ï¼Į åĪĻ ä¸į åĵįåºĶ æĵįä½ľ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Cancel Bar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¾Ŀ æ¬¡ åĩº æłĪ å¹¶ æ·»åĬł åĽŀ åİ» ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġstack . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask With Position Ġ= Ġstack . pop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" åĩº æłĪ çļĦ position "," ${ task With Position . first }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd At Position ( task With Position . first , task With Position . second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// floating button è·³è½¬ ĊĠĠĠĠĠĠĠ Ġfloating _ action _ button _ add . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è·³è½¬ åĪ° æĸ°å»º ä»»åĬ¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Task Fragment . context , Task Create Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmotion _ layout _ task . transition To Start () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfloating _ action _ button _ complete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è·³è½¬ åĪ° åİĨåı² ä»»åĬ¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this . context , Task Completed Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View (){ ĊĠĠĠĠĠĠĠ Ġ// åĪ·æĸ° ä»»åĬ¡ è§ĨåĽ¾ ĊĠĠĠĠĠĠĠ ĠviewModel . getUn done TaskList (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" debug "," åĪ·æĸ° ä¸Ģæ¬¡ Task è§ĨåĽ¾ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġit . to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . show List Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ task _ main . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ task _ main . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsmart _ refresh _ task _ home . finish Refresh () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart To Cancel (){ ĊĠĠĠĠĠĠĠ ĠLog . d (" alpha "," ${ card _ view _ cancel . alpha }") ĊĠĠĠĠĠĠĠ Ġif Ġ( card _ view _ cancel . alpha == 0 F ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// é¦ĸ æ¬¡ çĤ¹åĩ» åĪĻ æĺ¾ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Cancel Bar () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// æ¯ıæ¬¡ éĥ½ æĸ°å»º ä¸Ģæ¬¡ ĊĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠ Ġtimer . schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éļĲèĹı bar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Cancel Bar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĬĬ åĤ¨ åŃĺ çļĦ ä»»åĬ¡ æıĲäº¤ åİ» äºĳ ç«¯ æĶ¹åıĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . complete Task ( it . second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĬĬ åĤ¨ åŃĺ çļĦ ä»»åĬ¡ æłĪ æ¸ħ ç©º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, 3 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æĺ¾ç¤º æĴ ¤ éĶĢ Card View ĊĠĠĠ Ġprivate Ġfun Ġshow Cancel Bar (){ ĊĠĠĠĠĠĠĠ ĠLog . d (" cancel card view "," æĺ¾ç¤º ") ĊĠĠĠĠĠĠĠ Ġcard _ view _ cancel . animate (). alpha ( 1 F ). set Duration ( 3 0 0 ). start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// éļĲèĹı æĴ ¤ éĶĢ Card View ĊĠĠĠ Ġprivate Ġfun Ġhide Cancel Bar (){ ĊĠĠĠĠĠĠĠ Ġthis . activity ?. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard _ view _ cancel . animate (). alpha ( 0 F ). set Duration ( 3 0 0 ). start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åĪłéĻ¤ æĮĩå®ļ ä½įç½® çļĦ item ĊĠĠĠ Ġprivate Ġfun Ġdelete At Position ( task : Task ){ ĊĠĠĠĠĠĠĠ Ġadapter . remove ( task ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åľ¨ æĮĩå®ļ ä½įç½® æ·»åĬł item ĊĠĠĠ Ġprivate Ġfun Ġadd At Position ( position : Int , task : Task ){ ĊĠĠĠĠĠĠĠ Ġadapter . add At Position ( position , task ) ĊĠĠĠĠĠĠĠ Ġrv _ task _ main . scrollTo Position ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN , sticky Ġ= Ġtrue ) ĊĠĠĠ Ġfun Ġrefresh Task ( refresh TaskList Event : ĠRefresh TaskList Event ){ ĊĠĠĠĠĠĠĠ Ġsmart _ refresh _ task _ home . auto Refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġtimer . cancel () ĊĠĠĠ Ġ} Ċ }