package Ġcom . race . medi oc re plan . ui Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . app . Activity Options Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . transition .* Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . race . medi oc re plan . R Ċ import Ġcom . race . medi oc re plan . data . model . Task Ċ import Ġcom . race . medi oc re plan . ui . utils . Task Item Utils Ċ import Ġcom . race . medi oc re plan . viewModel . Task ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ task _ detail .* ĊĊ Ċ class ĠTask Detail Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġtask : ĠTask ĊĠĠĠ Ġlateinit Ġvar Ġtask ViewModel : ĠTask ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ task _ detail ) ĊĠĠĠĠĠĠĠ Ġtask ViewModel Ġ= ĠTask ViewModel . create ( this , Ġapplication ) ĊĠĠĠĠĠĠĠ Ġtask Ġ= Ġintent . get Parcelable Extra ( EXTRA _ TASK ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" get Ġparcel able Ġextra Ġ" Ġ+ Ġtask . toString ()) ĊĠĠĠĠĠĠĠ Ġbackground . setOnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġinit Style () ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= ĠAuto Transition () ĊĠĠĠĠĠĠĠ Ġtransition . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( card , Ġtransition ) ĊĠĠĠĠĠĠĠ Ġtext _ n arr ation . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton _ start _ now . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġsupport Finish After Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Style () Ġ{ ĊĠĠĠĠĠĠĠ Ġcard . set Card BackgroundColor ( Color State List . valueOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Color ( Task Item Utils . get Card Color ( task . card Identifier )))) ĊĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġget Color ( Task Item Utils . getText Color ( task . card Identifier )) ĊĠĠĠĠĠĠĠ Ġval ĠtextColor Tint List Ġ= ĠColor State List . valueOf ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ title . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ n arr ation . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ period . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ pop ularity . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ contributor . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ progress _ done . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ progress _ left . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠ Ġtext _ period . compound Drawable Tint List Ġ= ĠtextColor Tint List ĊĠĠĠĠĠĠĠ Ġtext _ pop ularity . compound Drawable Tint List Ġ= ĠtextColor Tint List ĊĠĠĠĠĠĠĠ Ġtext _ contributor . compound Drawable Tint List Ġ= ĠtextColor Tint List ĊĠĠĠĠĠĠĠ Ġprogress . progress Background Tint List Ġ= ĠtextColor Tint List ĊĠĠĠĠĠĠĠ Ġprogress . progress Tint List Ġ= ĠtextColor Tint List ĊĠĠĠĠĠĠĠ Ġval Ġbutton Color Ġ= Ġget Color ( Task Item Utils . get Button Color ( task . card Identifier )) ĊĠĠĠĠĠĠĠ Ġbutton _ start _ now . background Tint List Ġ= ĠColor State List . valueOf ( button Color ) ĊĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . background Tint List Ġ= ĠColor State List . valueOf ( button Color ) ĊĊĠĠĠĠĠĠĠ Ġtext _ n arr ation . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton _ start _ now . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġwindow . shared Element Enter Transition . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġwindow . shared Element Enter Transition . addListener ( object Ġ: ĠTransition . Transition Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition End ( transition : ĠTransition ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= ĠAuto Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( card , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ n arr ation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ start _ now . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Resume ( transition : ĠTransition ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Pause ( transition : ĠTransition ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Cancel ( transition : ĠTransition ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition Start ( transition : ĠTransition ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" load Ġ" Ġ+ ĠGson (). toJson ( task )) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ"${ task ._ id }: ĠstartDate =${ task . startTime }, Ġtime Used =${ task . getTime Used ()}, Ġtime Expected =${ task . getTime Expected () }") ĊĠĠĠĠĠĠĠ Ġtext _ title . text Ġ= Ġtask . title ĊĠĠĠĠĠĠĠ Ġtext _ n arr ation . text Ġ= Ġtask . n arr ation ĊĠĠĠĠĠĠĠ Ġtext _ period . text Ġ= Ġtask . duration . toString ( this ) ĊĠĠĠĠĠĠĠ Ġtext _ pop ularity . text Ġ= ĠgetString ( R . string . desc _ pop ularity , Ġtask . pop ularity ) ĊĠĠĠĠĠĠĠ Ġtext _ contributor . text Ġ= ĠgetString ( R . string . desc _ contributor , Ġtask . contributor ) ĊĠĠĠĠĠĠĠ Ġbutton _ start _ now . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask ViewModel . start Task ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( card ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( task . getStatus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask . UN PLAN N ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . text Ġ= ĠgetString ( R . string . action _ add _ to _ plan ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask ViewModel . add Task To Plan ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask . PLAN N ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . text Ġ= ĠgetString ( R . string . action _ remove _ from _ plan ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask ViewModel . remove Task From Plan ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask . IN _ PROGRESS , ĠTask . FINISHED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ start _ now . text Ġ= ĠgetString ( R . string . action _ restart ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . text Ġ= ĠgetString ( R . string . action _ ab ol ish ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton _ add _ to _ plan . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask ViewModel . ab ol ish Task ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpercentage Ġ= Ġtask . getTime Used Percentage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Animator Ġ= ĠObject Animator . of Int ( progress , Ġ" progress ", Ġprogress . progress , Ġpercentage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Animator . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Animator . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ progress _ done . text Ġ= ĠString . format ( getString ( R . string . period _ done ), Ġpercentage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ progress _ left . text Ġ= Ġif Ġ( task . getStatus () Ġ== ĠTask . IN _ PROGRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( getString ( R . string . period _ left ), Ġ"${ ( task . getTime Expected () Ġ- Ġtask . getTime Used ()) Ġ/ Ġ 2 4 Ġ/ Ġ 3 6 0 0 } Ġdays ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠgetString ( R . string . period _ left _ finished ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Task Detail Activity " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ TASK Ġ= Ġ" extra _ task " ĊĊĠĠĠĠĠĠĠ Ġfun Ġaction Start ( context : ĠContext , Ġtask : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠTask Detail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ TASK , Ġtask ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġaction Start ( context : ĠContext , Ġtask : ĠTask , Ġoptions : ĠActivity Options ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠTask Detail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ TASK , Ġtask ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent , Ġoptions . to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ