package Ġde . dr to bias pr in z . sum mit book . ui . utils Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroid . widget . Adapter View . On ItemSelected Listener Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġco . c ery le . segment ed button . Segment ed Button Group Ċ import Ġcom . h oot suite . n ach os . N ach o TextView Ċ import Ġcom . h oot suite . n ach os . termin ator . Chip Termin ator Handler Ċ import Ġde . dr to bias pr in z . sum mit book . MainActivity Ċ import Ġde . dr to bias pr in z . sum mit book . R Ċ import Ġde . dr to bias pr in z . sum mit book . database . App Database Ċ import Ġde . dr to bias pr in z . sum mit book . fragments . Statistics Fragment Ċ import Ġde . dr to bias pr in z . sum mit book . fragments . Sum m ation Fragment Ċ import Ġde . dr to bias pr in z . sum mit book . models . Sport Type Ċ import Ġde . dr to bias pr in z . sum mit book . models . Statistic Entry Ċ import Ġde . dr to bias pr in z . sum mit book . models . Sum mit Ċ import Ġio . ap pt ik . widget . Multi Slider Ċ import Ġio . ap pt ik . widget . Multi Slider . Simple ChangeListener Ċ import Ġio . ap pt ik . widget . Multi Slider . Thumb Ċ import Ġjava . text . DateFormat Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . math . round To Long ĊĊ Ċ class ĠSort Filter Helper ( private Ġval Ġfilter And Sort View : ĠView , Ġprivate Ġval Ġcontext : ĠContext , Ġvar Ġentries : ĠArrayList < Sum mit >, Ġval Ġdatabase : ĠApp Database ) Ġ{ ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġselected Year Ġ= Ġ"" ĊĠĠĠ Ġlateinit Ġvar Ġfragment : ĠSum m ation Fragment ĊĠĠĠ Ġlateinit Ġvar Ġfiltered Entries : ĠArrayList < Sum mit > ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġunique Years Of Sum mit : ĠArrayList < String > ĊĠĠĠ Ġprivate Ġvar ĠstartDate : ĠDate ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠendDate : ĠDate ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġall Entries Requested : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġoverview : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠstartDate Text : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠendDate Text : ĠEditText ĊĠĠĠ Ġprivate Ġvar Ġselected Date Item Default Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġselected Date Item Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġsegment ed Sort Asc Desc : ĠSegment ed Button Group Ġ= Ġfilter And Sort View . findViewById ( R . id . group _ sort _ asc _ desc ) ĊĠĠĠ Ġprivate Ġval Ġsegment ed Sort By : ĠSegment ed Button Group Ġ= Ġfilter And Sort View . findViewById ( R . id . group _ sort _ by ) ĊĠĠĠ Ġprivate Ġval Ġsegment ed With Position : ĠSegment ed Button Group Ġ= Ġfilter And Sort View . findViewById ( R . id . group _ position ) ĊĠĠĠ Ġprivate Ġval Ġsegment ed With G px : ĠSegment ed Button Group Ġ= Ġfilter And Sort View . findViewById ( R . id . group _ g px ) ĊĠĠĠ Ġprivate Ġval Ġsegment ed With Image : ĠSegment ed Button Group Ġ= Ġfilter And Sort View . findViewById ( R . id . group _ image ) ĊĠĠĠ Ġprivate Ġvar Ġselected Segment ed Sort Asc Desc Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġselected Segment ed Sort By Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġselected Sport Type Item Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġparticipants Size Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġselected Segment ed With Position Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġselected Segment ed With G px Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġselected Segment ed With Image Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġext re ma Values All Sum mit s : ĠEx tre ma Values Sum mit s ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġext re ma Values Filtered Sum mit s : ĠEx tre ma Values Sum mit s ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmulti Slider K ilo meters : ĠMulti Slider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmulti Slider Height Met ers : ĠMulti Slider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmulti Slider Top Elevation : ĠMulti Slider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmulti Slider Top Speed : ĠMulti Slider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmulti Slider Average Speed : ĠMulti Slider ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs port Type Spinner : ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdate Spinner : ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġparticipants : ĠN ach o TextView ĊĠĠĠ Ġvar Ġare Shared Pref Initialized : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġset Ext reme Values () Ġ{ ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s Ġ= Ġentries . let Ġ{ ĠEx tre ma Values Sum mit s ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s Ġ= Ġentries . let Ġ{ ĠEx tre ma Values Sum mit s ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Multi Sl iders () Ġ{ ĊĠĠĠĠĠĠĠ Ġmulti Slider K ilo meters . step Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. min K ilo meters ?. let Ġ{ Ġmulti Slider K ilo meters . set Min ( it . toInt (), Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. max K ilo meters Ce il ?. let Ġ{ Ġmulti Slider K ilo meters . setMax ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġmulti Slider Height Met ers . step Ġ= Ġ 2 5 0 ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. min Height Met ers ?. let Ġ{ Ġmulti Slider Height Met ers . set Min ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. max Height Met ers ?. let Ġ{ Ġmulti Slider Height Met ers . setMax ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Elevation . step Ġ= Ġ 2 5 0 ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. min Top Elevation ?. let Ġ{ Ġmulti Slider Top Elevation . set Min ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. max Top Elevation ?. let Ġ{ Ġmulti Slider Top Elevation . setMax ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Speed . step Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. min Top Speed ?. let Ġ{ Ġmulti Slider Top Speed . set Min ( it . toInt (), Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. max Top Speed Ce il ?. let Ġ{ Ġmulti Slider Top Speed . setMax ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġmulti Slider Average Speed . step Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. min Average Speed ?. let Ġ{ Ġmulti Slider Average Speed . set Min ( it . toInt (), Ġtrue , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġext re ma Values All Sum mit s ?. max Average Speed Ce il ?. let Ġ{ Ġmulti Slider Average Speed . setMax ( it , Ġtrue , Ġtrue ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Date Spinner () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Date Layout Ġ= Ġfilter And Sort View . findViewById < LinearLayout >( R . id . date _ start _ end _ selector ) ĊĠĠĠĠĠĠĠ ĠstartDate Text Ġ= Ġfilter And Sort View . findViewById ( R . id . date _ start ) ĊĠĠĠĠĠĠĠ ĠstartDate Text . input Type Ġ= ĠInput Type . TYPE _ NULL ĊĠĠĠĠĠĠĠ ĠstartDate Text . setOn Focus ChangeListener Ġ{ Ġ_: ĠView ?, Ġhas Focus : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker ( startDate Text , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartDate Text . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker ( startDate Text , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠendDate Text Ġ= Ġfilter And Sort View . findViewById ( R . id . date _ end ) ĊĠĠĠĠĠĠĠ ĠendDate Text . input Type Ġ= ĠInput Type . TYPE _ NULL ĊĠĠĠĠĠĠĠ ĠendDate Text . setOn Focus ChangeListener Ġ{ Ġ_: ĠView ?, Ġhas Focus : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker ( endDate Text , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠendDate Text . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow DatePicker ( startDate Text , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdates Ġ= ĠArrayList ( listOf (* context . resources . getString Array ( R . array . date _ array ))) ĊĠĠĠĠĠĠĠ Ġunique Years Of Sum mit Ġ= ĠStatistics Fragment . getAll Years ( entries ) ĊĠĠĠĠĠĠĠ Ġdates . addAll ( unique Years Of Sum mit ) ĊĠĠĠĠĠĠĠ Ġval Ġdate Adapter Ġ= ĠArray Adapter ( context , Ġandroid . R . layout . simple _ spinner _ item , Ġdates ) ĊĠĠĠĠĠĠĠ Ġdate Adapter . set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġadd Participants Filter () ĊĊĠĠĠĠĠĠĠ Ġdate Spinner Ġ= Ġfilter And Sort View . findViewById ( R . id . spinner _ date ) ĊĠĠĠĠĠĠĠ Ġdate Spinner . adapter Ġ= Ġdate Adapter ĊĠĠĠĠĠĠĠ Ġdate Spinner . setSelection ( selected Date Item ) ĊĠĠĠĠĠĠĠ Ġdate Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠOn ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Date Item Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Date Layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Date Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Another Ġinterface Ġcallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Participants Filter () Ġ{ ĊĠĠĠĠĠĠĠ Ġparticipants Ġ= Ġfilter And Sort View . findViewById ( R . id . participants ) ĊĠĠĠĠĠĠĠ Ġval Ġsuggestions : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġentries . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggestions . addAll ( it . participants ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter < String >( context , Ġandroid . R . layout . simple _ dropdown _ item _ 1 line , Ġsuggestions . distinct ()) ĊĠĠĠĠĠĠĠ Ġparticipants . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠ Ġparticipants . add Chip Termin ator (',', ĠCh ip Termin ator Handler . BE HAV IOR _ CH I PI FY _ TO _ TERMIN ATOR ) ĊĠĠĠĠĠĠĠ Ġparticipants . enable Edit Chip On Touch ( false , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġparticipants Size Ġ= Ġparticipants . chip Values . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow DatePicker ( e Text : ĠEditText , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc ldr Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġvar Ġday Ġ= Ġc ldr [ Calendar . DAY _ OF _ MONTH ] ĊĠĠĠĠĠĠĠ Ġvar Ġmonth Ġ= Ġc ldr [ Calendar . MONTH ] ĊĠĠĠĠĠĠĠ Ġvar Ġyear Ġ= Ġc ldr [ Calendar . YEAR ] ĊĠĠĠĠĠĠĠ Ġif Ġ( e Text . text . toString (). trim () Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Split ted Ġ= Ġe Text . text . toString (). trim (). split ("- ". to Regex ()). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( date Split ted . size Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= Ġdate Split ted [ 2 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Ġ= Ġdate Split ted [ 1 ]. toInt () Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear Ġ= Ġdate Split ted [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpicker Ġ= ĠDate Picker Dialog ( context , ĠR . style . Custom DatePicker Dialog Theme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġview : ĠDate Picker , Ġyear Selected : ĠInt , Ġmonth Selected : ĠInt , Ġday Selected : ĠInt Ġ-> Ġe Text . setText ( view . context . getString ( R . string . date _ format , ĠString . format ( Locale . EN GL ISH , Ġ"% 0 2 d ", Ġday Selected ), ĠString . format ( Locale . EN GL ISH , Ġ"% 0 2 d ", Ġmonth Selected Ġ+ Ġ 1 ), ĠString . format ( Locale . EN GL ISH , Ġ"% 0 2 d ", Ġyear Selected ))) Ġ}, Ġyear , Ġmonth , Ġday ) ĊĠĠĠĠĠĠĠ Ġpicker . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData Spinner To Default () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Date Item Ġ= Ġselected Date Item Default ĊĠĠĠĠĠĠĠ Ġdate Spinner . setSelection ( selected Date Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalert Ġ= ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( filter And Sort View . parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( filter And Sort View . parent Ġas ĠViewGroup ). remove View ( filter And Sort View ) Ġ// Ġ<- Ġfix ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset MinMax Values Km () ĊĠĠĠĠĠĠĠ Ġset MinMax Values Hm () ĊĠĠĠĠĠĠĠ Ġset MinMax Values Top Speed () ĊĠĠĠĠĠĠĠ Ġset MinMax Values Average Speed () ĊĠĠĠĠĠĠĠ Ġset MinMax Values Top Elevation () ĊĠĠĠĠĠĠĠ Ġalert . setTitle (" Filter Ġand Ġsorting ") ĊĠĠĠĠĠĠĠ Ġalert . setView ( filter And Sort View ) ĊĠĠĠĠĠĠĠ Ġalert . set Positive Button (" Apply ") Ġ{ Ġ_: ĠDialog Interface ?, Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort And Filter () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert . set Negative Button (" Set Ġto Ġdefault ") Ġ{ Ġ_: ĠDialog Interface ?, Ġ_: ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset All To Default () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset All To Default () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Segment ed Sort Asc Desc Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġsegment ed Sort Asc Desc . position Ġ= Ġselected Segment ed Sort Asc Desc ĊĠĠĠĠĠĠĠ Ġselected Segment ed Sort By Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġsegment ed Sort By . position Ġ= Ġselected Segment ed Sort By ĊĠĠĠĠĠĠĠ Ġselected Segment ed With G px Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġsegment ed With G px . position Ġ= Ġselected Segment ed With G px ĊĠĠĠĠĠĠĠ Ġselected Segment ed With Position Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġsegment ed With Position . position Ġ= Ġselected Segment ed With Position ĊĠĠĠĠĠĠĠ Ġselected Segment ed With Image Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġsegment ed With Image . position Ġ= Ġselected Segment ed With Image ĊĠĠĠĠĠĠĠ Ġselected Sport Type Item Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġs port Type Spinner . setSelection ( selected Sport Type Item ) ĊĠĠĠĠĠĠĠ ĠsetData Spinner To Default () ĊĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s Ġ= Ġext re ma Values All Sum mit s ĊĠĠĠĠĠĠĠ Ġmulti Slider K ilo meters . get Thumb ( 0 ). value Ġ= Ġext re ma Values All Sum mit s ?. min K ilo meters ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider K ilo meters . get Thumb ( 0 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider K ilo meters . get Thumb ( 1 ). value Ġ= Ġext re ma Values All Sum mit s ?. max K ilo meters Ce il ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider K ilo meters . get Thumb ( 1 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider K ilo meters . re position Thumb s () ĊĠĠĠĠĠĠĠ Ġmulti Slider Height Met ers . get Thumb ( 0 ). value Ġ= Ġext re ma Values All Sum mit s ?. min Height Met ers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Height Met ers . get Thumb ( 0 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Height Met ers . get Thumb ( 1 ). value Ġ= Ġext re ma Values All Sum mit s ?. max Height Met ers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Height Met ers . get Thumb ( 1 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Height Met ers . re position Thumb s () ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Elevation . get Thumb ( 0 ). value Ġ= Ġext re ma Values All Sum mit s ?. min Top Elevation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Top Elevation . get Thumb ( 0 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Elevation . get Thumb ( 1 ). value Ġ= Ġext re ma Values All Sum mit s ?. max Top Elevation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Top Elevation . get Thumb ( 1 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Elevation . re position Thumb s () ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Speed . get Thumb ( 0 ). value Ġ= Ġext re ma Values All Sum mit s ?. min Top Speed ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Top Speed . get Thumb ( 0 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Speed . get Thumb ( 1 ). value Ġ= Ġext re ma Values All Sum mit s ?. max Top Speed Ce il ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Top Speed . get Thumb ( 1 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Speed . re position Thumb s () ĊĠĠĠĠĠĠĠ Ġmulti Slider Average Speed . get Thumb ( 0 ). value Ġ= Ġext re ma Values All Sum mit s ?. min Average Speed ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Average Speed . get Thumb ( 0 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Average Speed . get Thumb ( 1 ). value Ġ= Ġext re ma Values All Sum mit s ?. max Average Speed Ce il ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmulti Slider Average Speed . get Thumb ( 1 ). value ĊĠĠĠĠĠĠĠ Ġmulti Slider Average Speed . re position Thumb s () ĊĠĠĠĠĠĠĠ ĠstartDate Text . setText ("") ĊĠĠĠĠĠĠĠ ĠendDate Text . setText ("") ĊĠĠĠĠĠĠĠ Ġparticipants . setText ("") ĊĠĠĠĠĠĠĠ Ġsort And Filter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset MinMax Values Km () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . min Value Km ) ĊĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġkm ", Ġ( ext re ma Values Filtered Sum mit s ?. min K ilo meters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 . 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġmax 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . max Value Km ) ĊĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġkm ", Ġext re ma Values Filtered Sum mit s ?. max K ilo meters Ce il ) ĊĠĠĠĠĠĠĠ Ġmulti Slider K ilo meters . setOn Thumb Value ChangeListener ( object Ġ: ĠSimple ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ValueChanged ( multi Slider : ĠMulti Slider , Ġthumb : ĠThumb , Ġthumb Index : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġkm ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. min K ilo meters Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġkm ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. max K ilo meters Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset MinMax Values Hm () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . min Value Hm ) ĊĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġext re ma Values Filtered Sum mit s ?. min Height Met ers ) ĊĠĠĠĠĠĠĠ Ġval Ġmax 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . max Value Hm ) ĊĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġext re ma Values Filtered Sum mit s ?. max Height Met ers ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Height Met ers . setOn Thumb Value ChangeListener ( object Ġ: ĠSimple ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ValueChanged ( multi Slider : ĠMulti Slider , Ġthumb : ĠThumb , Ġthumb Index : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. min Height Met ers Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. max Height Met ers Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset MinMax Values Top Speed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . min Value Top Speed ) ĊĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġ( ext re ma Values Filtered Sum mit s ?. min Top Speed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 . 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġmax 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . max Value Top Speed ) ĊĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġext re ma Values Filtered Sum mit s ?. max Top Speed Ce il ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Speed . setOn Thumb Value ChangeListener ( object Ġ: ĠSimple ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ValueChanged ( multi Slider : ĠMulti Slider , Ġthumb : ĠThumb , Ġthumb Index : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. min Top Speed Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. max Top Speed Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset MinMax Values Average Speed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . min Value Average Speed ) ĊĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġ( ext re ma Values Filtered Sum mit s ?. min Average Speed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 . 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġmax 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . max Value Average Speed ) ĊĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġext re ma Values Filtered Sum mit s ?. max Average Speed Ce il ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Average Speed . setOn Thumb Value ChangeListener ( object Ġ: ĠSimple ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ValueChanged ( multi Slider : ĠMulti Slider , Ġthumb : ĠThumb , Ġthumb Index : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. min Average Speed Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġkm / s ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. max Average Speed Ġ= Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset MinMax Values Top Elevation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . min Value Top Elevation ) ĊĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġext re ma Values Filtered Sum mit s ?. min Top Elevation ) ĊĠĠĠĠĠĠĠ Ġval Ġmax 1 Ġ= Ġfilter And Sort View . findViewById < TextView >( R . id . max Value Top Elevation ) ĊĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġext re ma Values Filtered Sum mit s ?. max Top Elevation ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Elevation . setOn Thumb Value ChangeListener ( object Ġ: ĠSimple ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ValueChanged ( multi Slider : ĠMulti Slider , Ġthumb : ĠThumb , Ġthumb Index : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( thumb Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. min Top Elevation Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax 1 . text Ġ= ĠString . format ("% s Ġhm ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext re ma Values Filtered Sum mit s ?. max Top Elevation Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġapply () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Segment ed Button Group () ĊĠĠĠĠĠĠĠ Ġsegment ed Sort Asc Desc . setOn Clicked Button Listener Ġ{ Ġposition : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Segment ed Sort Asc Desc Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsegment ed Sort By . setOn Clicked Button Listener Ġ{ Ġposition : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Segment ed Sort By Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsegment ed With G px . setOn Clicked Button Listener Ġ{ Ġposition : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Segment ed With G px Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsegment ed With Position . setOn Clicked Button Listener Ġ{ Ġposition : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Segment ed With Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsegment ed With Image . setOn Clicked Button Listener Ġ{ Ġposition : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Segment ed With Image Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsort And Filter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Segment ed Button Group () Ġ{ ĊĠĠĠĠĠĠĠ Ġsegment ed Sort Asc Desc . position Ġ= Ġselected Segment ed Sort Asc Desc ĊĠĠĠĠĠĠĠ Ġsegment ed Sort By . position Ġ= Ġselected Segment ed Sort By ĊĠĠĠĠĠĠĠ Ġsegment ed With G px . position Ġ= Ġselected Segment ed With G px ĊĠĠĠĠĠĠĠ Ġsegment ed With Position . position Ġ= Ġselected Segment ed With Position ĊĠĠĠĠĠĠĠ Ġsegment ed With Image . position Ġ= Ġselected Segment ed With Image ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsort And Filter () Ġ{ ĊĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġsort () ĊĠĠĠĠĠĠĠ Ġfilter () ĊĠĠĠĠĠĠĠ Ġfragment . update ( filtered Entries ) ĊĠĠĠĠĠĠĠ Ġset Overview Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Overview Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatistic Entry Ġ= ĠStat istic Entry ( filtered Entries ) ĊĠĠĠĠĠĠĠ Ġstatistic Entry . calculate () ĊĠĠĠĠĠĠĠ Ġoverview . text Ġ= Ġcontext . getString ( R . string . base _ info , Ġfiltered Entries . size . toString (), Ġstatistic Entry . total Km . round To Long (). toInt (). toString (), Ġstatistic Entry . total Hm . toFloat (). round To Long (). toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsort () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( selected Segment ed Sort By ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġfiltered Entries . sort With ( compare By Ġ{ Ġit . name Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġfiltered Entries . sort With ( compare By Ġ{ Ġit . elevation Data . elevation Gain Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġfiltered Entries . sort With ( compare By Ġ{ Ġit . ki lo meters Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġfiltered Entries . sort With ( compare By Ġ{ Ġit . elevation Data . max Elevation Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfiltered Entries . sort With ( compare By Ġ{ Ġit . date Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( selected Segment ed Sort Asc Desc ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġfiltered Entries . reverse () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter () Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter By Position () ĊĠĠĠĠĠĠĠ Ġfilter By G px () ĊĠĠĠĠĠĠĠ Ġfilter By Image () ĊĠĠĠĠĠĠĠ Ġfilter By Km () ĊĠĠĠĠĠĠĠ Ġfilter By Hm () ĊĠĠĠĠĠĠĠ Ġfilter By Top Speed () ĊĠĠĠĠĠĠĠ Ġfilter By Average Speed () ĊĠĠĠĠĠĠĠ Ġfilter By Top Elevation () ĊĠĠĠĠĠĠĠ Ġfilter By Date () ĊĠĠĠĠĠĠĠ Ġfilter By Sport Type () ĊĠĠĠĠĠĠĠ Ġfilter By Participants () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Position () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( selected Segment ed With Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġif Ġ( entry . lat Lng Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġif Ġ( entry . lat Lng Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By G px () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( selected Segment ed With G px ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġif Ġ( entry . has G ps Track ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġif Ġ(! entry . has G ps Track ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( selected Segment ed With Image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġif Ġ( entry . has Image Path ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġif Ġ(! entry . has Image Path ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Date () Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Date Spinner ( selected Date Item ) ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . date . after ( startDate ) Ġ&& Ġentry . date . before ( endDate )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Sport Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Sport Type Ġ= Ġselected Sport Type Spinner ( selected Sport Type Item ) ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Sport Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . sport Type Ġ== Ġselected Sport Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Participants () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Participants Ġ= Ġparticipants . chip Values ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Participants . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( participant Ġin Ġselected Participants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( participant Ġin Ġentry . participants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselected Sport Type Spinner ( selected ItemId : ĠInt ): ĠS port Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( selected ItemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠS port Type . B ic ycle ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠS port Type . R acer ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠS port Type . Mount ain bi ke ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠS port Type . Bi ke And Hi ke ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠS port Type . Cli mb ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> ĠS port Type . Hi ke ĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> ĠS port Type . Running ĊĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> ĠS port Type . S kit our ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> ĠS port Type . Other ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Km () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġval Ġext re ma Values Ġ= Ġext re ma Values Filtered Sum mit s ĊĠĠĠĠĠĠĠ Ġif Ġ( ext re ma Values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . ki lo meters Ġ>= Ġext re ma Values . min K ilo meters Ġ&& Ġentry . ki lo meters Ġ<= Ġext re ma Values . max K ilo meters Ce il Ġ|| Ġext re ma Values . min K ilo meters Ġ== Ġ 0 . 0 Ġ&& Ġentry . ki lo meters Ġ== Ġ- 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Hm () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġval Ġext re ma Values Ġ= Ġext re ma Values Filtered Sum mit s ĊĠĠĠĠĠĠĠ Ġif Ġ( ext re ma Values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . elevation Data . elevation Gain Ġ>= Ġext re ma Values . min Height Met ers Ġ&& Ġentry . elevation Data . elevation Gain Ġ<= Ġext re ma Values . max Height Met ers Ġ|| Ġext re ma Values . min Height Met ers Ġ== Ġ 0 Ġ&& Ġentry . elevation Data . elevation Gain Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Top Speed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġval Ġext re ma Values Ġ= Ġext re ma Values Filtered Sum mit s ĊĠĠĠĠĠĠĠ Ġif Ġ( ext re ma Values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . velocity Data . max Velocity Ġ>= Ġext re ma Values . min Top Speed Ġ&& Ġentry . velocity Data . max Velocity Ġ<= Ġext re ma Values . max Top Speed Ce il Ġ|| Ġext re ma Values . min Top Speed Ġ== Ġ 0 . 0 Ġ&& Ġentry . velocity Data . max Velocity Ġ== Ġ- 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Average Speed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġval Ġext re ma Values Ġ= Ġext re ma Values Filtered Sum mit s ĊĠĠĠĠĠĠĠ Ġif Ġ( ext re ma Values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . velocity Data . avg Velocity Ġ>= Ġext re ma Values . min Average Speed Ġ&& Ġentry . velocity Data . avg Velocity Ġ<= Ġext re ma Values . max Average Speed Ce il Ġ|| Ġext re ma Values . min Average Speed Ġ== Ġ 0 . 0 Ġ&& Ġentry . velocity Data . avg Velocity Ġ== Ġ- 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter By Top Elevation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Sum mit >() ĊĠĠĠĠĠĠĠ Ġval Ġext re ma Values Ġ= Ġext re ma Values Filtered Sum mit s ĊĠĠĠĠĠĠĠ Ġif Ġ( ext re ma Values Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġfiltered Entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . elevation Data . max Elevation Ġ>= Ġext re ma Values . min Top Elevation Ġ&& Ġentry . elevation Data . max Elevation Ġ<= Ġext re ma Values . max Top Elevation Ġ|| Ġext re ma Values . min Top Elevation Ġ== Ġ 0 Ġ&& Ġentry . elevation Data . max Elevation Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . add ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset All Entries ( entries : ĠArrayList < Sum mit >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġthis . filtered Entries Ġ= Ġentries ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( entries : ĠArrayList < Sum mit >) Ġ{ ĊĠĠĠĠĠĠĠ ĠMainActivity . ext re ma Values All Sum mit s Ġ= ĠEx tre ma Values Sum mit s ( entries ) ĊĠĠĠĠĠĠĠ Ġset All Entries ( entries ) ĊĠĠĠĠĠĠĠ Ġset Ext reme Values () ĊĠĠĠĠĠĠĠ Ġsort And Filter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselected Date Spinner ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= ĠSum mit . parse Date ( String . format ("% s - 0 1 - 0 1 ", Ġif Ġ( unique Years Of Sum mit . size Ġ== Ġ 0 ) Ġ" 1 9 0 0 " Ġelse ĠCollections . min ( unique Years Of Sum mit ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= ĠSum mit . parse Date ( String . format ("% s - 1 2 - 3 1 ", Ġif Ġ( unique Years Of Sum mit . size Ġ== Ġ 0 ) Ġ" 2 2 0 0 " Ġelse ĠCollections . max ( unique Years Of Sum mit ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Year Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġif Ġ( startDate Text . text . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSum mit . parse Date ( startDate Text . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSum mit . parse Date ( String . format ("% s - 0 1 - 0 1 ", ĠCollections . min ( unique Years Of Sum mit ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġif Ġ( endDate Text . text . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSum mit . parse Date ( endDate Text . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSum mit . parse Date ( String . format ("% s - 1 2 - 3 1 ", Ġunique Years Of Sum mit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Year Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Date From Position ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġset Date From Position ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Year Ġ= Ġunique Years Of Sum mit [ position Ġ- Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġdf : ĠDate Format Ġ= ĠSimpleDateFormat ( Sum mit . DATETIME _ FORMAT , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠ Ġdf . is Len ient Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġdf . parse ( String . format ("% s - 0 1 - 0 1 Ġ 0 0 : 0 0 : 0 0 ", Ġselected Year )) ĊĠĠĠĠĠĠĠ ĠendDate Ġ= Ġdf . parse ( String . format ("% s - 1 2 - 3 1 Ġ 2 3 : 5 9 : 5 9 ", Ġselected Year )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetSelected Date Item Default ( selected Date Item Default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . selected Date Item Default Ġ= Ġselected Date Item Default ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprepare () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprepare () Ġ{ ĊĠĠĠĠĠĠĠ Ġfiltered Entries Ġ= Ġentries ĊĠĠĠĠĠĠĠ Ġset Ext reme Values () ĊĠĠĠĠĠĠĠ Ġmulti Slider K ilo meters Ġ= Ġfilter And Sort View . findViewById ( R . id . range _ slider _ ki lo meters ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Height Met ers Ġ= Ġfilter And Sort View . findViewById ( R . id . range _ slider _ height _ meter ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Elevation Ġ= Ġfilter And Sort View . findViewById ( R . id . range _ slider _ top Elevation ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Top Speed Ġ= Ġfilter And Sort View . findViewById ( R . id . range _ slider _ top Speed ) ĊĠĠĠĠĠĠĠ Ġmulti Slider Average Speed Ġ= Ġfilter And Sort View . findViewById ( R . id . range _ slider _ average Speed ) ĊĠĠĠĠĠĠĠ Ġset Multi Sl iders () ĊĠĠĠĠĠĠĠ Ġval Ġs port Types : ĠArrayList < String > Ġ= Ġarray ListOf (" ALL ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠS port Type . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port Types . add ( context . getString ( value . sport Name String Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġs port Type Spinner Ġ= Ġfilter And Sort View . findViewById ( R . id . spinner _ sport s _ type ) ĊĠĠĠĠĠĠĠ Ġval Ġs port Type Adapter : ĠArray Adapter < *> Ġ= ĠArray Adapter ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ spinner _ item , Ġs port Types ) ĊĠĠĠĠĠĠĠ Ġs port Type Spinner . adapter Ġ= Ġs port Type Adapter ĊĠĠĠĠĠĠĠ Ġs port Type Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠOn ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Sport Type Item Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Another Ġinterface Ġcallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Date Spinner () ĊĠĠĠĠĠĠĠ Ġoverview Ġ= ĠMainActivity . main Activity !!. findViewById ( R . id . overview ) ĊĠĠĠĠĠĠĠ Ġset Overview Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ SELECTED _ YEAR , Ġselected Date Item ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ SELECTED _ SORT _ ASC _ DESC , Ġselected Segment ed Sort Asc Desc ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ SELECTED _ SORT _ BY , Ġselected Segment ed Sort By ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ SELECTED _ SP ORT _ TYPE , Ġselected Sport Type Item ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ POSITION _ SELECTED , Ġselected Segment ed With Position ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ GP X _ SELECTED , Ġselected Segment ed With G px ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SORT _ FILTER _ HELPER _ IMAGE _ SELECTED , Ġselected Segment ed With Image ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SORT _ FILTER _ HELPER _ UNIQUE _ YEAR S , Ġunique Years Of Sum mit . join ToString ("," )) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ AVG _ SPEED , Ġmulti Slider ToString ( multi Slider Average Speed )) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ HEIGHT _ METER S , Ġmulti Slider ToString ( multi Slider Height Met ers )) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ KI LO METER S , Ġmulti Slider ToString ( multi Slider K ilo meters )) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ E LE V ATION , Ġmulti Slider ToString ( multi Slider Top Elevation )) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ SPEED , Ġmulti Slider ToString ( multi Slider Top Speed )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmulti Slider ToString ( multi Slider : ĠMulti Slider ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ multi Slider . min }, ${ multi Slider . get Thumb ( 0 ). value }, ${ multi Slider . get Thumb ( 1 ). value }, ${ multi Slider . max }" ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext , Ġentries : ĠArrayList < Sum mit >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase : ĠApp Database , ĠsavedInstanceState : ĠBundle ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences : ĠSharedPreferences ?, ĊĠĠĠĠĠĠĠ Ġ): ĠSort Filter Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter And Sort View Ġ= Ġfactory . inflate ( R . layout . dialog _ filter _ and _ sort , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsort Filter Helper Ġ= ĠSort Filter Helper ( filter And Sort View , Ġcontext , Ġentries , Ġdatabase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! sort Filter Helper . are Shared Pref Initialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . are Shared Pref Initialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shared Preferences ?. getBoolean (" current _ year _ switch ", Ġfalse ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . setSelected Date Item Default ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . setSelected Date Item Default ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunique Years Ġ= ĠsavedInstanceState . getString ( SORT _ FILTER _ HELPER _ UNIQUE _ YEAR S )?. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . unique Years Of Sum mit Ġ= Ġunique Years Ġas ĠArrayList < String > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Date Item Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ SELECTED _ YEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Date Item Ġ= Ġselected Date Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . date Spinner . setSelection ( selected Date Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Segment ed Sort Asc Desc Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ SELECTED _ SORT _ ASC _ DESC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Segment ed Sort By Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ SELECTED _ SORT _ BY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Sport Type Item Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ SELECTED _ SP ORT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Segment ed With Position Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ POSITION _ SELECTED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Segment ed With G px Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ GP X _ SELECTED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . selected Segment ed With Image Ġ= ĠsavedInstanceState . getInt ( SORT _ FILTER _ HELPER _ POSITION _ SELECTED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Multi Slider ( savedInstanceState , Ġsort Filter Helper . multi Slider Average Speed , ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ AVG _ SPEED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Multi Slider ( savedInstanceState , Ġsort Filter Helper . multi Slider Top Speed , ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ SPEED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Multi Slider ( savedInstanceState , Ġsort Filter Helper . multi Slider Height Met ers , ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ HEIGHT _ METER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Multi Slider ( savedInstanceState , Ġsort Filter Helper . multi Slider K ilo meters , ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ KI LO METER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Multi Slider ( savedInstanceState , Ġsort Filter Helper . multi Slider Top Elevation , ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ E LE V ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . set Segment ed Button Group () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Filter Helper . setData Spinner To Default () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsort Filter Helper ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Multi Slider ( savedInstanceState : ĠBundle , Ġmulti Slider : ĠMulti Slider , Ġmulti Slider Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs liver Values Ġ= ĠsavedInstanceState . getString ( multi Slider Key )?. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s liver Values Ġ!= Ġnull Ġ&& Ġs liver Values . size Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Slider . min Ġ= Ġs liver Values [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Slider . get Thumb ( 0 ). value Ġ= Ġs liver Values [ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Slider . get Thumb ( 1 ). value Ġ= Ġs liver Values [ 2 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Slider . max Ġ= Ġs liver Values [ 3 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Slider . re position Thumb s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ SELECTED _ YEAR Ġ= Ġ" SORT _ FILTER _ HELPER _ SELECTED _ YEAR " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ SELECTED _ SORT _ ASC _ DESC Ġ= Ġ" SORT _ FILTER _ HELPER _ SELECTED _ SORT _ ASC _ DESC " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ SELECTED _ SORT _ BY Ġ= Ġ" SORT _ FILTER _ HELPER _ SELECTED _ SORT _ BY " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ SELECTED _ SP ORT _ TYPE Ġ= Ġ" SORT _ FILTER _ HELPER _ SELECTED _ SP ORT _ TYPE " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ POSITION _ SELECTED Ġ= Ġ" SORT _ FILTER _ HELPER _ POSITION _ SELECTED " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ GP X _ SELECTED Ġ= Ġ" SORT _ FILTER _ HELPER _ GPS _ SELECTED " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ IMAGE _ SELECTED Ġ= Ġ" SORT _ FILTER _ HELPER _ IMAGE _ SELECTED " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ UNIQUE _ YEAR S Ġ= Ġ" SORT _ FILTER _ HELPER _ UNIQUE _ YEAR S " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ AVG _ SPEED Ġ= Ġ" SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ AVG _ SPEED " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ SPEED Ġ= Ġ" SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ SPEED " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ HEIGHT _ METER S Ġ= Ġ" SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ HEIGHT _ METER S " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ KI LO METER S Ġ= Ġ" SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ KI LO METER S " ĊĠĠĠĠĠĠĠ Ġvar ĠSORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ E LE V ATION Ġ= Ġ" SORT _ FILTER _ HELPER _ MULTI _ SL IDER _ TOP _ E LE V ATION " ĊĊĠĠĠ Ġ} Ċ }