package Ġb zh . z ely on . music . ui . view . fragment . edit Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . media . Media Scanner Connection Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . isVisible Ċ import Ġb zh . z ely on . lib . extension . back Ċ import Ġb zh . z ely on . lib . extension . show Snackbar Ċ import Ġb zh . z ely on . music . R Ċ import Ġb zh . z ely on . music . db . model . Artist Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġkotlinx . android . synt hetic . main . fragment _ edit _ artist .* Ċ import Ġkotlinx . android . synt hetic . main . view _ art work . view .* Ċ import Ġorg . ja ud iot agger . audio . Audio File IO Ċ import Ġorg . ja ud iot agger . tag . Field Key Ċ import Ġjava . io . File Ċ Ċ class ĠEdit Artist Fragment : ĠAbs Edit Fragment < Artist >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpaths Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġfragment _ edit _ artist _ input view _ name . text Ġ= Ġabs Model . name ĊĊĠĠĠĠĠĠĠ Ġabs Model . mus ics . forEach Ġ{ Ġmusic Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaths . add ( music . path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit ViewModel . get Artist ( abs Model . name ). observe ( abs Activity ) Ġ{ Ġartist Response Fr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo From Last FM Ġ= Ġartist Response Fr ?. artist ?. bio ?. content . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info From Last FM . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit ViewModel . get Artist ( abs Model . name , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( view Lifecycle Owner ) Ġ{ Ġmusic Response En Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo From Last FM Ġ= Ġmusic Response En ?. artist ?. bio ?. content . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetId Form Layout () Ġ= ĠR . layout . fragment _ edit _ artist ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Artwork () Ġ{ ĊĠĠĠĠĠĠĠ ĠBottom Sheet Dialog ( abs Activity ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( LayoutInflater . from ( abs Activity ). inflate ( R . layout . view _ art work , Ġnull , Ġfalse ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview _ art work _ device . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage On Device () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview _ art work _ download . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview _ art work _ delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Artwork () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave () Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġpaths . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio File Ġ= ĠAudio File IO . read ( File ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġaudio File ?. tag OrCreate AndSet Default ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag ?. setField ( Field Key . AR TI ST , Ġfragment _ edit _ artist _ input view _ name . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delete Current Artwork ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag ?. delete Artwork Field () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Artwork ?. let Ġ{ Ġart work Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag ?. setField ( art work ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio File ?. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMedia Scanner Connection . scan File ( abs Activity , Ġpaths . to Typed Array (), Ġnull ) Ġ{ Ġ_, Ġ_ Ġ-> Ġabs Activity . back () Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġabs Activity . show Snackbar ( getString ( R . string . fragment _ edit _ sn ackbar _ failed )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( artist : ĠArtist , Ġart work : ĠBitmap ?) Ġ= ĠEdit Artist Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( ARG _ ABS _ MODEL , Ġartist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( ARG _ ART WORK , Ġart work ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }