package Ġcom . mn hy im . s _ leaf . views . home Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . mn hy im . s _ leaf . core . domain . model . Plant Ċ import Ġcom . mn hy im . s _ leaf . core . ui . Home Adapter Ċ import Ġcom . mn hy im . s _ leaf . databinding . Fragment Home Binding Ċ import Ġcom . mn hy im . s _ leaf . utils . Constants . CAR O USE L _ AUT OP LAY Ċ import Ġcom . mn hy im . s _ leaf . utils . Data Mapper Ċ import Ġcom . mn hy im . s _ leaf . views . detail . Detail Activity Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Flow Preview Ċ import Ġorg . imag in ativ ew orld . wh yn ot image carousel . listener . Carousel Listener Ċ import Ġorg . imag in ativ ew orld . wh yn ot image carousel . model . Carousel Item Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ @ Experimental Cor outines Api Ċ @ Flow Preview Ċ class ĠHome Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠTAG : ĠString Ġ= Ġthis :: class . java . simple Name ĊĊĠĠĠ Ġprivate Ġval Ġhome ViewModel : ĠHome ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ home Binding : ĠFragment Home Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġhome Binding Ġget () Ġ= Ġ_ home Binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ home Binding Ġ= ĠFragment Home Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhome Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhome Adapter Ġ= ĠHome Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Adapter . on Item Click Ġ= Ġ{ Ġselected Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplant Ġ= ĠPl ant ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġselected Data . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġselected Data . className , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġselected Data . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ= Ġselected Data . desc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscientific Name Ġ= Ġselected Data . scientific Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage URL Ġ= ĠlistOf ( selected Data . image URL [ 0 ], Ġselected Data . image URL [ 1 ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Favorite Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠDetail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Detail Activity . EXTRA _ PL ANT , Ġplant ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( home Binding . rv Pl ants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġhome Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome ViewModel . list Pl ants . observe ( view Lifecycle Owner , Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Adapter . setData ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( home Adapter . getItem Count () Ġ> Ġ 0 ) Ġhome Binding . progress Bar . visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Carousel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSetting ĠCar ousel ĊĠĠĠ Ġprivate Ġfun Ġset Carousel () Ġ{ ĊĠĠĠĠĠĠĠ Ġhome ViewModel . get Plant (). observe ( view Lifecycle Owner , Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata x Ġ= ĠData Mapper . map Domain To Carousel Item ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Binding . cs Home . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Lifecycle ( lifecycle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play Delay Ġ= ĠCAR O USE L _ AUT OP LAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( data x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtouch To Pause Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfinite Carousel Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcarousel Listener Ġ= Ġobject Ġ: ĠCar ousel Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( position : ĠInt , Ġcarousel Item : ĠCar ousel Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠDetail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Detail Activity . EXTRA _ PL ANT , Ġdata [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }