package Ġcom . d ams ky . d anny . lib rem usic . ui . splash Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġcom . d ams ky . d anny . lib rem usic . App Ċ import Ġcom . d ams ky . d anny . lib rem usic . R Ċ import Ġcom . d ams ky . d anny . lib rem usic . data . db . model . Dao Session Ċ import Ġcom . d ams ky . d anny . lib rem usic . ui . intro . Intro Activity Ċ import Ġcom . d ams ky . d anny . lib rem usic . ui . main . MainActivity Ċ import Ġcom . d ams ky . d anny . lib rem usic . utils . Constants Ċ import Ġcom . d ams ky . d anny . lib rem usic . utils . C ue Parser Ċ import Ġcom . d ams ky . d anny . lib rem usic . utils . Song Loader Ċ import Ġkotlinx . android . synt hetic . main . activity _ splash .* Ċ import Ġkotlinx . coroutines . experimental . async Ċ import Ġkotlinx . coroutines . experimental . launch Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ Ċ /** Ċ Ġ* ĠThe Ġfirst Ġactivity Ġto Ġstart Ġwhen Ġthe Ġapp Ġis Ġlaunched . Ċ Ġ* ĠThis Ġactivity Ġis Ġin Ġcharge Ġof Ġmaking Ġsure Ġthe ĠDB Ġand Ġpreferences Ġare Ġset - up Ġbefore Ġcontinuing . Ċ Ġ* Ċ Ġ* Ġ@ author ĠD anny ĠD ams ky Ċ Ġ*/ Ċ class ĠSpl ash Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Reference : ĠApp ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ splash ) ĊĊĠĠĠĠĠĠĠ Ġapp Reference Ġ= Ġapplication Ġas ĠApp ĊĊĠĠĠĠĠĠĠ Ġif Ġ( app Reference . preferences Helper . is First Run ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( Intent ( this , ĠIntro Activity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . REQUEST _ START _ INT RO ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Activity Result ( Constants . REQUEST _ START _ INT RO , ĠActivity . RESULT _ OK , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ!= ĠActivity . RESULT _ OK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠConstants . REQUEST _ START _ MAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . delete All () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġscan S ongs () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAs ynchronously Ġruns Ġasync Loading () Ġin Ġorder Ġto Ġset Ġup Ġthe ĠDB Ġbefore Ġcontinuing Ġand ĊĠĠĠĠ Ġ* Ġstarting Ġthe ĠMainActivity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġscan S ongs () Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠ Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĠprogressBar . visibility Ġ= ĠView . VISIBLE Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ Ġasync Loading () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this @ Splash Activity , ĠMainActivity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . REQUEST _ START _ MAIN ) ĊĠĠĠĠĠĠĠ Ġ}. await () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġup Ġthe Ġdatabase Ġafter Ġloading Ġit Ġif Ġit Ġwas Ġinitially Ġempty . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġasync Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdao Session Ġ= Ġapp Reference . app Db Helper . get Dao Session () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( app Reference . app Db Helper . songs Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc ue Parser Ġ= ĠC ue Parser ( app Reference . preferences Helper . get Encoding ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Audio ( cue Parser , Ġdao Session ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . set S ongs ( dao Session ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . set Album s ( dao Session ) ĊĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . set Art ists ( dao Session ) ĊĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . set Gen res ( dao Session ) ĊĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . set Play lists ( dao Session ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠQueries Ġfor Ġsongs Ġusing Ġa ĠSong Loader Ġobject . ĊĠĠĠĠ Ġ* Ġ@ param Ġc ue Parser ĠC ue Parser Ġobject Ġthat Ġis Ġpassed Ġto Ġthe ĠSong Loader . ĊĠĠĠĠ Ġ* Ġ@ param Ġdao Session ĠDatabase Ġsession Ġcaching Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġload Audio ( cue Parser : ĠC ue Parser , Ġdao Session : ĠDao Session ) Ġ= ĠSong Loader ( content Resolver ). use Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . is Ab le ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . getData () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . text Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( resources . getString ( R . string . loading )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": Ġ"). append ( data ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcover Ġ= Ġit . get Cover () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġit . get Duration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc ue Sheet Ġ= Ġit . get Parsed C ue ( cue Parser , Ġduration , Ġdata , Ġcover ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cue Sheet Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartist Ġ= Ġit . get Artist () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalbum Ġ= Ġit . get Album () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġit . get Year () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenre Ġ= Ġit . get Genre () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Song ( data , Ġit . getTitle (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum , Ġartist , Ġgenre , Ġit . get Track Num (), Ġyear , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġduration , Ġduration , Ġcover , Ġdao Session ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Album ( album , Ġartist , Ġyear , Ġcover , Ġdao Session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Artist ( artist , Ġdao Session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Genre ( genre , Ġdao Session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġc ue Sheet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Song ( i . data , Ġi . title , Ġi . album , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . artist , Ġi . genre , Ġi . track , Ġi . year , Ġi . startTime , Ġi . endTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . duration , Ġi . cover , Ġdao Session ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Genre ( i . genre , Ġdao Session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Ġ= Ġc ue Sheet [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Album ( song . album , Ġsong . artist , Ġsong . year , Ġcover , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdao Session ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Reference . app Db Helper . insert Artist ( song . artist , Ġdao Session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ