package Ġru . buy list . presentation . patterns Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . interpol ator . view . animation . Fast Out Slow In Interpolator Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . transition . Transition Manager Ċ import Ġcom . google . android . material . transition . Material Container Transform Ċ import Ġkotlinx . android . synt hetic . main . activity _ fragment .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ patterns .* Ċ import Ġru . buy list . R Ċ import Ġru . buy list . databinding . Fragment Patterns Binding Ċ import Ġru . buy list . presentation . Base Fragment Ċ import Ġru . buy list . utils .* ĊĊ Ċ /** Ċ Ġ* ĠPattern s Ġscreen . Ċ Ġ*/ Ċ class ĠPattern s Fragment Ġ: ĠBase Fragment < Fragment Patterns Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠPattern s ViewModel Ġby Ġview Models Ġ{ Ġget ViewModel Factory () Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlayout Res Id : ĠInt Ġ= ĠR . layout . fragment _ patterns ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Bindings ( binding : ĠFragment Patterns Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup Adapter () ĊĠĠĠĠĠĠĠ Ġsetup Navigation () ĊĠĠĠĠĠĠĠ Ġsetup Snackbar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Snackbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. setup Snackbar ( this , ĠviewModel . sn ackbar Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Navigation () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . add Pattern Event . observe ( view Lifecycle Owner , ĠEvent Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpand Fab () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . pattern Created Event . observe ( view Lifecycle Owner , ĠEvent Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminimize Fab () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . details Event . observe ( view Lifecycle Owner , ĠEvent Observer Ġ{ Ġpattern Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠPattern s Fragment Directions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. action Patterns Fragment To Pattern Detail Fragment ( pattern . id , Ġpattern . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpattern Adapter Ġ= ĠPattern s Adapter ( viewModel ) ĊĠĠĠĠĠĠĠ Ġre cycler . adapter Ġ= Ġpattern Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexpand Fab () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= Ġbuild Container Transform (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart View Ġ= Ġfab _ add ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend View Ġ= Ġlayout _ new _ item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Target ( layout _ new _ item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( require Activity (). findViewById ( android . R . id . content ), Ġtransition ) ĊĠĠĠĠĠĠĠ Ġlayout _ new _ item . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġshadow _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġfab _ add . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġrequire Activity (). nav _ bottom . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġfield _ name . show Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġminimize Fab () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= Ġbuild Container Transform (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart View Ġ= Ġlayout _ new _ item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend View Ġ= Ġfab _ add ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Target ( fab _ add ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( coordinator _ layout , Ġtransition ) ĊĠĠĠĠĠĠĠ Ġlayout _ new _ item . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġshadow _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġfab _ add . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġrequire Activity (). nav _ bottom . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġfield _ name . hide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Container Transform () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Container Transform (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs cri m Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Mode Ġ= ĠMaterial Container Transform . FA DE _ MODE _ IN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠFast Out Slow In Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ }