package Ġspace . fan box . android . fan box . utils Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . chip . Chip Ċ import Ġcom . google . android . material . chip . Chip Group Ċ import Ġspace . fan box . android . fan box . model . Tag Ċ import Ġjava . text . SimpleDateFormat Ċ Ċ @ Binding Adapter (" mutable Visibility ") Ċ fun Ġset Mutable Visibility ( view : ĠView , Ġvisibility : ĠMutable LiveData < Int > ?) Ġ{ ĊĊĠĠĠ Ġval Ġparent Activity : ĠAppCompatActivity ? Ġ= Ġview . getParent Activity () ĊĠĠĠ Ġif Ġ( parent Activity Ġ!= Ġnull Ġ&& Ġvisibility Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisibility . observe ( parent Activity , ĠObserver Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= Ġvalue Ġ?: ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" mutable Text ") Ċ fun Ġset Mutable Text ( view : ĠTextView , Ġtext : ĠMutable LiveData < String > ?) Ġ{ ĊĊĠĠĠ Ġval Ġparent Activity : ĠAppCompatActivity ? Ġ= Ġview . getParent Activity () ĊĠĠĠ Ġif Ġ( parent Activity Ġ!= Ġnull Ġ&& Ġtext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext . observe ( parent Activity , ĠObserver Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= Ġvalue Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" adapter ") Ċ fun Ġset Adapter ( view : ĠRecyclerView , Ġadapter : ĠRecyclerView . Adapter <* >) Ġ{ ĊĠĠĠ Ġview . adapter Ġ= Ġadapter Ċ } Ċ Ċ @ Binding Adapter (" chip Tag ") Ċ fun Ġset Tag Chips ( view : ĠCh ip Group , Ġtags : ĠMutable LiveData < List < Tag >> ?) Ġ{ ĊĊĠĠĠ Ġval Ġparent Activity : ĠAppCompatActivity ? Ġ= Ġview . getParent Activity () ĊĠĠĠ Ġif Ġ( parent Activity Ġ!= Ġnull Ġ&& Ġtags Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtags . observe ( parent Activity , ĠObserver Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġcalled Ġto Ġprevent Ġmultiple Ġsimilar Ġch ips ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . removeAll Views () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tag Ġin Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( parent Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= Ġtag . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . chip BackgroundColor Ġ= ĠColor State List . valueOf ( Color . parse Color ("# ${ tag . color } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . setTextColor ( Color . parse Color ("# ${ tag . text _ color } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . addView ( chip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" chip Category ") Ċ fun Ġset Category Chip ( view : ĠCh ip Group , Ġcategory : ĠMutable LiveData < String > ?) Ġ{ ĊĊĠĠĠ Ġval Ġparent Activity : ĠAppCompatActivity ? Ġ= Ġview . getParent Activity () ĊĠĠĠ Ġif Ġ( parent Activity Ġ!= Ġnull Ġ&& Ġcategory Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcategory . observe ( parent Activity , ĠObserver Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġcalled Ġto Ġprevent Ġmultiple Ġsimilar Ġch ips ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . removeAll Views () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( parent Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= Ġvalue Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . addView ( chip ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress Lint (" SimpleDateFormat ") Ċ @ Binding Adapter (" format Date ") Ċ fun Ġset Formatted Date ( view : ĠTextView , Ġdate : ĠMutable LiveData < String > ?) Ġ{ ĊĊĠĠĠ Ġval Ġparent Activity : ĠAppCompatActivity ? Ġ= Ġview . getParent Activity () ĊĠĠĠ Ġif Ġ( parent Activity Ġ!= Ġnull Ġ&& Ġdate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdate . observe ( parent Activity , ĠObserver Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd Ġhh : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Created Ġ= Ġsimple DateFormat . parse ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat . getDate Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . text Ġ= ĠdateFormat . format ( date Created ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }