package Ġcom . m ichael po hl . lo opy player 2 . ui . medi astore browser . adapter Ċ Ċ import Ġcom . m ichael po hl . deleg ation adapter . Sorting Ċ import Ġcom . m ichael po hl . lo opy player 2 . ui . medi astore browser . Media Store Browser ViewModel Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMedia Store Browser Sorting Ġ: ĠSort ing . Custom < Media Store Item Model , ĠMedia Store Browser ViewModel . UIState >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġsort ( input : ĠMedia Store Browser ViewModel . UIState ): ĠList < Media Store Item Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsorted Ġ= Ġwith ( input . items To Display ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . contains Only < Media Store Item Model . Album >() Ġ-> Ġthis . sorted By Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . contains Only < Media Store Item Model . Artist >() Ġ-> Ġthis . sorted By Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . contains Only < Media Store Item Model . Track >() Ġ-> Ġsort Tracks ( this Ġas ĠList < Media Store Item Model . Track >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . d ("${ input . items To Display }") ĊĠĠĠĠĠĠĠ ĠTim ber . d ("${ input . selected Items }") ĊĠĠĠĠĠĠĠ Ġreturn Ġsorted . map Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Ġis ĠMedia Store Item Model . Track ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . copy ( isSelected Ġ= Ġ( input . selected Items Ġ?: ĠlistOf ()). map Ġ{ Ġit . path Ġ}. contains ( model . path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġmodel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsort Tracks ( input : ĠList < Media Store Item Model . Track >): ĠList < Media Store Item Model . Track > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnumber ed Tracks Ġ= Ġinput . filter Ġ{ Ġit . track No Ġ!= Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġother Tracks Ġ= Ġinput . filter Ġ{ Ġit . track No Ġ== Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnumber ed Tracks . sorted By Ġ{ Ġit . track No Ġ} Ġ+ Ġother Tracks . sorted By Ġ{ Ġit . name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠT > ĠList < Media Store Item Model >. contains Only (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . forEach Ġ{ Ġif Ġ( it Ġ! is ĠT ) Ġreturn Ġfalse Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ