package Ġns . fa j net . android . ge ob readcrumb s . activities . main . re corded _ tracks Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . Base Adapter Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . list _ view _ item _ re corded _ tracks . view .* Ċ import Ġns . fa j net . android . ge ob readcrumb s . R Ċ import Ġns . fa j net . android . ge ob readcrumb s . common . Constants Ċ import Ġns . fa j net . android . ge ob readcrumb s . common . Log Ex Ċ import Ġns . fa j net . android . ge ob readcrumb s . common . display Transform ations . Distance Transformation Ċ import Ġns . fa j net . android . ge ob readcrumb s . common . display Transform ations . Duration Transformation Ċ import Ġns . fa j net . android . ge ob readcrumb s . common . display Transform ations . Heading Transformation Ċ import Ġns . fa j net . android . ge ob readcrumb s . common . display Transform ations . Speed Transformation Ċ import Ġns . fa j net . android . ge ob readcrumb s . database . Track Ċ import Ġns . fa j net . android . ge ob readcrumb s . d tos . Track Status ĊĊ Ċ // ĠTODO : Ġthink Ġabout Ġintro ducing Ġa ĠTrack Model Ġinstead Ġof Ġraw ĠTrack Ġ( to Ġdo Ġcalculations Ġonly Ġonce !) Ċ class ĠRe corded Tracks Adapter ( context : ĠContext ) Ġ: ĠBase Adapter () Ġ{ ĊĊĠĠĠ Ġ// Ġmembers Ġ-------------------------------------------------------------------------------- ----- ĊĊĠĠĠ Ġprivate Ġval Ġduration Transformation Ġ= ĠDuration Transformation () ĊĠĠĠ Ġprivate Ġval Ġdistance Transformation Ġ= ĠDistance Transformation ( context ) ĊĠĠĠ Ġprivate Ġval Ġspeed Transformation Ġ= ĠSpeed Transformation ( context ) ĊĠĠĠ Ġprivate Ġval Ġheading Transformation Ġ= ĠHeading Transformation () ĊĠĠĠ Ġprivate Ġval Ġsettings Changed Handler Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . notify DataSet Changed () ĊĠĠĠĠĠĠĠ ĠLog Ex . d ( Constants . TAG _ REC OR DED _ TRACK S _ ADAPTER , Ġ" preferences Ġchanged , Ġre binding Ġview Hold ers ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġrecording Animation Ġ= ĠAlpha Animation ( 0 . 5 F , Ġ 0 F ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 5 0 0 Ġ// Ġduration Ġ- Ġhalf Ġa Ġsecond ĊĠĠĠĠĠĠĠ Ġit . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠ Ġit . repeat Count Ġ= ĠAnimation . INF IN ITE ĊĠĠĠĠĠĠĠ Ġit . repeat Mode Ġ= ĠAnimation . RE VERSE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġinit Ġ/ Ġconstructors Ġ------------------------------------------------------------------------- ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdistance Transformation . subscribe ( settings Changed Handler ) ĊĠĠĠĠĠĠĠ Ġspeed Transformation . subscribe ( settings Changed Handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġproperties Ġ-------------------------------------------------------------------------------- -- ĊĊĠĠĠ Ġvar ĠdataSet : ĠArray < Track > Ġ= ĠarrayOf () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġoverrides Ġ-------------------------------------------------------------------------------- --- ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= ĠdataSet . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠAny Ġ= ĠdataSet [ position ] ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ= Ġposition . to Long () ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( position : ĠInt , ĠconvertView : ĠView ?, Ġparent : ĠViewGroup ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder : ĠViewHolder ĊĊĠĠĠĠĠĠĠ Ġif Ġ( convert View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠLayoutInflater . from ( parent ?. context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ view _ item _ re corded _ tracks , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder Ġ= ĠViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . tag Ġ= ĠviewHolder ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠconvertView ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder Ġ= ĠconvertView . tag Ġas ĠViewHolder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtrack Ġ= ĠgetItem ( position ) Ġas ĠTrack ĊĊĠĠĠĠĠĠĠ ĠviewHolder . name . text Ġ= Ġtrack . name ĊĠĠĠĠĠĠĠ ĠviewHolder . duration . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Transformation . transform ( track . endTime Millis Ġ- Ġtrack . startTime Millis ) ĊĠĠĠĠĠĠĠ ĠviewHolder . distance . text Ġ= Ġdistance Transformation . transform ( track . distance ) ĊĠĠĠĠĠĠĠ ĠviewHolder . avg Speed . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeed Transformation . transform ( track . average Speed ) ĊĠĠĠĠĠĠĠ ĠviewHolder . max Speed . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspeed Transformation . transform ( track . max Speed ) ĊĠĠĠĠĠĠĠ ĠviewHolder . be aring . text Ġ= Ġheading Transformation . transform ( track . be aring ) ĊĠĠĠĠĠĠĠ ĠviewHolder . places . text Ġ= Ġtrack . numberOf Places . toString () ĊĠĠĠĠĠĠĠ ĠviewHolder . points . text Ġ= Ġtrack . numberOf Points . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( track . status Ġ== ĠTrack Status . Started . ordinal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . is Recording . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . is Recording . start Animation ( recording Animation ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . is Recording . clear Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . is Recording . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġpublic Ġmethods Ġ---------------------------------------------------------------- -------------- ĊĊĠĠĠ Ġfun Ġdetach () Ġ{ ĊĠĠĠĠĠĠĠ Ġduration Transformation . dispose () ĊĠĠĠĠĠĠĠ Ġdistance Transformation . dispose () ĊĠĠĠĠĠĠĠ Ġspeed Transformation . dispose () ĊĠĠĠĠĠĠĠ Ġheading Transformation . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================ ============ ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠAppCompat TextView Ġ= Ġview . name ĊĠĠĠĠĠĠĠ Ġval Ġduration : ĠAppCompat TextView Ġ= Ġview . duration ĊĠĠĠĠĠĠĠ Ġval Ġdistance : ĠAppCompat TextView Ġ= Ġview . distance ĊĠĠĠĠĠĠĠ Ġval Ġavg Speed : ĠAppCompat TextView Ġ= Ġview . average Speed ĊĠĠĠĠĠĠĠ Ġval Ġmax Speed : ĠAppCompat TextView Ġ= Ġview . max Speed ĊĠĠĠĠĠĠĠ Ġval Ġbe aring : ĠAppCompat TextView Ġ= Ġview . be aring ĊĠĠĠĠĠĠĠ Ġval Ġplaces : ĠAppCompat TextView Ġ= Ġview . places ĊĠĠĠĠĠĠĠ Ġval Ġpoints : ĠAppCompat TextView Ġ= Ġview . points ĊĠĠĠĠĠĠĠ Ġval Ġis Recording : ĠAppCompat ImageView Ġ= Ġview . is Recording ĊĠĠĠ Ġ} Ċ } Ċ