/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠCar los ĠRen Ã© ĠR amos ĠL Ã³ pe z . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . c rr l . beat player . models Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . support . v 4 . media . Media Browser Compat Ċ import Ġandroid . support . v 4 . media . Media Description Compat Ċ import Ġcom . c rr l . beat player . extensions . fix Ċ import Ġcom . c rr l . beat player . repository . F avorites Repository Implementation . Companion . COLUMN _ FA V OR ITE Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ AL BU M Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ AL BU M _ ID Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ AR TI ST Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ AR TI ST _ ID Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ DURATION Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ ID Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ PLAY LIST Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ TITLE Ċ import Ġcom . c rr l . beat player . repository . Playlist Repository Implementation . Companion . COLUMN _ TRACK Ċ import Ġcom . c rr l . beat player . utils . Beat Constants . FA V OR ITE _ TYPE Ċ import Ġcom . c rr l . beat player . utils . Beat Constants . SON G _ ID _ DEFAULT Ċ import Ġcom . c rr l . beat player . utils . Beat Constants . SON G _ TYPE Ċ import Ġcom . c rr l . beat player . utils . General Utils . get Album Art Uri Ċ import Ġcom . c rr l . beat player . utils . General Utils . getS ong Uri Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . ja ud iot agger . audio . Audio File Ċ import Ġorg . ja ud iot agger . tag . Field Key Ċ import Ġjava . io . File Ċ Ċ data Ġclass ĠSong ( ĊĠĠĠ Ġval Ġid : ĠLong Ġ= Ġ- 1 , ĊĠĠĠ Ġvar Ġalbum Id : ĠLong Ġ= Ġ 0 , ĊĠĠĠ Ġvar Ġartist Id : ĠLong Ġ= Ġ 0 , ĊĠĠĠ Ġvar Ġtitle : ĠString Ġ= Ġ" Title ", ĊĠĠĠ Ġval Ġartist : ĠString Ġ= Ġ" Artist ", ĊĠĠĠ Ġval Ġalbum : ĠString Ġ= Ġ" Album ", ĊĠĠĠ Ġval Ġduration : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġval Ġtrack Number : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġval Ġpath : ĠString Ġ= Ġ"", ĊĠĠĠ Ġvar Ġis Fav : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar Ġis Selected : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar Ġplay List Id : ĠLong Ġ= Ġ- 1 , ĊĠĠĠ Ġvar Ġplayed : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠMedia Item ( id ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate From Cursor ( cursor : ĠCursor , Ġalbum _ id : ĠLong Ġ= Ġ 0 ): ĠSong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSong ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcursor . getLong ( 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcursor . getString ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Ġ= Ġcursor . getString ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Ġ= Ġcursor . getString ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġcursor . getInt ( 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Number Ġ= Ġcursor . getInt ( 5 ). fix (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Id Ġ= Ġcursor . getLong ( 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġif Ġ( album _ id Ġ== Ġ 0 L ) Ġcursor . getLong ( 7 ) Ġelse Ġalbum _ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġget Song Uri ( cursor . getLong ( 0 )). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate From Playlist Cursor ( cursor : ĠCursor ): ĠSong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSong ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcursor . getLong ( 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcursor . getString ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Ġ= Ġcursor . getString ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Ġ= Ġcursor . getString ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġcursor . getInt ( 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Number Ġ= Ġcursor . getInt ( 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Id Ġ= Ġcursor . getLong ( 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġcursor . getLong ( 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay List Id Ġ= Ġcursor . getLong ( 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġget Song Uri ( cursor . getLong ( 0 )). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate From Folder Cursor ( cursor : ĠCursor ): ĠSong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSong ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcursor . getLong ( 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcursor . getString ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Ġ= Ġcursor . getString ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Ġ= Ġcursor . getString ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġcursor . getInt ( 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Number Ġ= Ġcursor . getInt ( 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Id Ġ= Ġcursor . getLong ( 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġcursor . getLong ( 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= ĠFile ( cursor . getString ( 8 )). parent !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate From Audio File ( audio File : ĠAudio File ): ĠSong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSong ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠS ONG _ ID _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġaudio File . tag . getFirst ( Field Key . TITLE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Ġ= Ġaudio File . tag . getFirst ( Field Key . AR TI ST ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Ġ= Ġaudio File . tag . getFirst ( Field Key . AL BU M ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġaudio File . audio Header . track Length Ġ* Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrack Number Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio File . tag . getFirst ( Field Key . TRACK ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Id Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġaudio File . file . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompare ( other : ĠMedia Item ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġother Ġas ĠSong ĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġother . id Ġ&& Ġtitle Ġ== Ġother . title Ġ&& Ġartist Ġ== Ġother . artist Ġ&& Ġalbum Ġ== Ġother . album ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġduration Ġ== Ġother . duration Ġ&& Ġtrack Number Ġ== Ġother . track Number Ġ&& Ġartist Id Ġ== Ġother . artist Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġalbum Id Ġ== Ġother . album Id Ġ&& Ġpath Ġ== Ġother . path ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcolumns ( type : ĠString ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ AR TI ST , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ AL BU M , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ DURATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ TRACK , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ AR TI ST _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOLUMN _ AL BU M _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF AV OR ITE _ TYPE Ġ-> ĠCOLUMN _ FA V OR ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCOLUMN _ PLAY LIST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalues (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartist , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalbum , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ duration ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ track Number ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ artist Id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ album Id ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ play List Id " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Media Item (): ĠMedia Browser Compat . Media Item Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMedia Browser Compat . Media Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Description Compat . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Media Id ( Media Id ( SON G _ TYPE , Ġid . toString (), Ġnull ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIcon Uri ( get Album Art Uri ( album Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Subtitle ( artist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĠMedia Browser Compat . Media Item . FLAG _ PLAY ABLE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). toJson ( this ) ĊĠĠĠ Ġ} Ċ } Ċ