package Ġcom . gu o yi . list ening love . ui . download Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . gu o yi . list ening love . Music App Ċ import Ġcom . gu o yi . list ening love . R Ċ import Ġcom . gu o yi . list ening love . data . db . Dao Lite pal Ċ import Ġcom . gu o yi . list ening love . bean . Music Ċ import Ġcom . gu o yi . list ening love . utils . Log Util Ċ import Ġcom . gu o yi . list ening love . utils . Mp 3 Util Ċ import Ġcom . gu o yi . list ening love . utils . Toast Utils Ċ import Ġcom . li ul ish uo . file downloader . util . File Download Utils Ċ import Ġorg . lite pal . Lite Pal Ċ Ċ object ĠDownload Loader Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Play Queue Loader " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å·² ä¸ĭè½½ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Download List ( is Cached : ĠBoolean Ġ= Ġfalse ): ĠMutable List < Music > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ= Ġmutable ListOf < Music >() ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠLite Pal . where (" finish Ġ= Ġ 1 Ġand Ġcache Ġ= Ġ?", Ġif Ġ( is Cached ) Ġ" 1 " Ġelse Ġ" 0 "). find ( Tasks Manager Model :: class . java ) ĊĠĠĠĠĠĠĠ Ġdata . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġit . mid ?. let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDao Lite pal . get Music Info ( it 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmusic ?. forEach Ġ{ Ġorigin Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( origin . uri Ġ!= Ġnull Ġ|| Ġorigin . uri ?. startsWith (" http :") !! ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin . uri Ġ= Ġit . path Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin . is Online Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSong Loader . update Music ( music Ġ= Ġorigin ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmusic ?. let Ġ{ Ġit 1 Ġ-> Ġmusic List . add ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmusic List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å·² ä¸ĭè½½ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Download List (): ĠMutable List < Music > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ= Ġmutable ListOf < Music >() ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠLite Pal . where (" finish Ġ= Ġ 1 "). find ( Tasks Manager Model :: class . java ) ĊĠĠĠĠĠĠĠ Ġdata . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġit . mid ?. let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDao Lite pal . get Music Info ( it 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmusic ?. forEach Ġ{ Ġorigin Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( origin . uri Ġ!= Ġnull Ġ|| Ġorigin . uri ?. startsWith (" http :") !! ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin . uri Ġ= Ġit . path Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin . is Online Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSong Loader . update Music ( music Ġ= Ġorigin ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmusic ?. let Ġ{ Ġit 1 Ġ-> Ġmusic List . add ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmusic List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä¸ĭè½½ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Downloading List (): ĠMutable List < Tasks Manager Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLite Pal . where (" finish Ġ= Ġ 0 "). find ( Tasks Manager Model :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¸ ħ ç©º ä¸ĭè½½ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear Download List (): ĠMutable List < Music > Ġ{ ĊĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Tasks Manager Model :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Download List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å·² åľ¨ ä¸ĭè½½ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Has Music ( mid : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLite Pal . is Exist ( Tasks Manager Model :: class . java , Ġ" mid Ġ= Ġ?", Ġmid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Task ( tid : ĠInt , Ġmid : ĠString ?, Ġname : ĠString ?, Ġurl : ĠString ?, Ġpath : ĠString , Ġcached : ĠBoolean ): ĠTasks Manager Model ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( url ) Ġ|| ĠText Utils . isEmpty ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// åĪ¤æĸŃ æĺ¯åĲ¦ å·² ä¸ĭè½½ è¿ĩ ĊĠĠĠĠĠĠĠ Ġif Ġ(! cached Ġ&& Ġis Has Music ( mid )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Utils . show ( Music App . get AppContext (). getString ( R . string . download _ ex its , Ġname )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġhave Ġto Ġuse ĠFile Download Utils . generate Id Ġto Ġassociate ĠTasks Manager Model Ġwith ĠFile Downloader ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠFile Download Utils . generate Id ( url , Ġpath ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠTasks Manager Model () ĊĠĠĠĠĠĠĠ Ġmodel . tid Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġmodel . mid Ġ= Ġmid ĊĠĠĠĠĠĠĠ Ġmodel . name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġmodel . url Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġmodel . path Ġ= Ġpath ĊĠĠĠĠĠĠĠ Ġmodel . finish Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmodel . cache Ġ= Ġcached ĊĠĠĠĠĠĠĠ Ġmodel . save OrUpdate (" tid Ġ= Ġ?", Ġtid . toString ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġmodel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´æĸ° æķ°æį®åºĵ ä¸ĭè½½ ä»»åĬ¡ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Task ( tid : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠLite Pal . where (" tid Ġ= Ġ?", Ġtid . toString ()). findFirst ( Tasks Manager Model :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġmodel . mid ?. let Ġ{ ĠDao Lite pal . get Music Info ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġmodel . finish Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmodel . save OrUpdate (" tid Ġ= Ġ?", Ġtid . toString ()) ĊĠĠĠĠĠĠĠ Ġ// æĽ´æĸ° mp 3 æĸĩä»¶ æłĩçŃ¾ ĊĠĠĠĠĠĠĠ Ġmusic ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . path ?. let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . e ( it 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM p 3 Util . update Tag Info ( it 1 , Ġmusic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM p 3 Util . getTag Info ( it 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ