package Ġorg . e uro f uren ce . con navigator . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Default Item Animator Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . RecyclerView . ViewHolder Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġio . swagger . client . model . Info Ċ import Ġio . swagger . client . model . Info Group Ċ import Ġorg . e uro f uren ce . con navigator . R Ċ import Ġorg . e uro f uren ce . con navigator . database . Database Ċ import Ġorg . e uro f uren ce . con navigator . net . image Service Ċ import Ġorg . e uro f uren ce . con navigator . tracking . Analytics Ċ import Ġorg . e uro f uren ce . con navigator . ui . communication . Content API Ċ import Ġorg . e uro f uren ce . con navigator . util . Choice Ċ import Ġorg . e uro f uren ce . con navigator . util . Formatter Ċ import Ġorg . e uro f uren ce . con navigator . util . Sharing Utility Ċ import Ġorg . e uro f uren ce . con navigator . util . Touch V ibr ator Ċ import Ġorg . e uro f uren ce . con navigator . util . deleg ators . view Ċ import Ġorg . e uro f uren ce . con navigator . util . extensions . apply On Root Ċ import Ġorg . e uro f uren ce . con navigator . util . extensions . get Ċ import Ġorg . e uro f uren ce . con navigator . util . extensions . let Root Ċ Ċ class ĠFragment View Info Groups Ġ: ĠFragment (), ĠContent API Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny , ĠU Ġ: ĠAny > Ġwe ave ( parents : ĠList < T >, Ġchildren : ĠMap < T , ĠList < U >> ): ĠList < Choice < T , ĠU >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparents . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead Ġ= ĠlistOf ( Choice . pri < T , ĠU >( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtail Ġ= Ġ( children [ it ] Ġ?: Ġempty List ()). map Ġ{ ĠChoice . snd < T , ĠU >( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ+ Ġtail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠEvent Ġview Ġholder Ġfinds Ġand Ġmem oriz es Ġthe Ġviews Ġin Ġan Ġevent Ġcard ĊĠĠĠ Ġinner Ġclass ĠInfo Group ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġby Ġview ( TextView :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġby Ġview ( TextView :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġby Ġview ( ImageView :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠEvent Ġview Ġholder Ġfinds Ġand Ġmem oriz es Ġthe Ġviews Ġin Ġan Ġevent Ġcard ĊĠĠĠ Ġinner Ġclass ĠInfo Group Item ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġby Ġview ( TextView :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Ġby Ġview ( LinearLayout :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠData Adapter Ġ: ĠRecyclerView . Adapter < ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( pos : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( effective Inter leaved [ pos ]. is Primary ) Ġ 1 Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġtype : ĠInt ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠInfo Group Item ViewHolder ( LayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . layout _ info _ group _ item , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠInfo Group ViewHolder ( LayoutInflater . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . layout _ info _ group , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffective Inter leaved . size ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( raw Holder : ĠViewHolder , Ġpos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeffective Inter leaved [ pos ]. let ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġinfo Group Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCast Ġholder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġraw Holder Ġas ĠInfo Group ViewHolder ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġinfo Group . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . description . text Ġ= Ġinfo Group . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Service . load ( database . image Db [ info Group . image Id ], Ġholder . image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġinfo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCast Ġholder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġraw Holder Ġas ĠInfo Group Item ViewHolder ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġinfo . title ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġclicks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply On Root Ġ{ Ġnavigate To Info ( info ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator . short () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Sharing Utility . share ( Formatter . share Info ( info ))). let Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator . long (). let Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval Ġdatabase : ĠDatabase Ġget () Ġ= Ġlet Root Ġ{ Ġit . database Ġ} !! ĊĊĠĠĠ Ġ// ĠView ĊĠĠĠ Ġval Ġinfo Groups Ġ Ġby Ġview ( RecyclerView :: class . java ) ĊĊĠĠĠ Ġval Ġvi br ator Ġby Ġlazy Ġ{ ĠTouch V ibr ator ( context ) Ġ} ĊĊĠĠĠ Ġ// ĠStore Ġof Ġcurrently Ġdisplayed Ġinfo Ġgroups Ġand Ġitems ĊĠĠĠ Ġvar Ġeffective Inter leaved Ġ= Ġempty List < Choice < Info Group , ĠInfo >>() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . f view _ info _ groups , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe Ġinfo Ġgroups ĊĠĠĠĠĠĠĠ Ġdata Init () ĊĊĠĠĠĠĠĠĠ ĠAnalytics . screen (" Info ĠList ings ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠDefault Ġsetup Ġfor Ġre cycler Ġlayout Ġand Ġanimation ĊĠĠĠĠĠĠĠ Ġinfo Groups . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġinfo Groups . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġinfo Groups . adapter Ġ= ĠData Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdata Updated () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Init () ĊĊĠĠĠĠĠĠĠ Ġinfo Groups . adapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdata Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCal ibrate Ġgroups Ġand Ġelements ĊĠĠĠĠĠĠĠ Ġval Ġgroups Ġ= Ġdatabase . info Group Db . items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . position Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġdatabase . info Db . items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġdatabase . info Group Db . key Values [ it . info GroupId ] !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ Ġit . value . sorted By Ġ{ Ġit . position Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe ave Ġthem ĊĠĠĠĠĠĠĠ Ġeffective Inter leaved Ġ= Ġwe ave ( groups , Ġelements ) ĊĠĠĠ Ġ} Ċ } Ċ