package Ġfr . uge . sound roid . fragments Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġfr . uge . sound roid . R Ċ import Ġfr . uge . sound roid . activities . others . Album Activity Ċ import Ġfr . uge . sound roid . activities . others . Player Activity Ċ import Ġfr . uge . sound roid . activities . others . Playlist Activity Ċ import Ġfr . uge . sound roid . adapters . Search ListAdapter Ċ import Ġfr . uge . sound roid . models . Album Ċ import Ġfr . uge . sound roid . models . Playlist Ċ import Ġfr . uge . sound roid . models . Sound roid Search able Ċ import Ġfr . uge . sound roid . models . Sound track Ċ import Ġfr . uge . sound roid . repositories . Playlist Repository Ċ import Ġfr . uge . sound roid . utils . Searching Service ĊĊ Ċ class ĠSearch ing Fragment () Ġ: ĠFragment (), ĠView . OnClickListener , ĠCreate Research Playlist Dialog Fragment . Confirm Create Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsearch List : ĠArrayList < Sound roid Search able > Ġ= ĠArrayList () ĊĊĠĠĠ Ġval Ġadapter Ġ= ĠSearch ListAdapter ( search List , Ġthis ) ĊĊĠĠĠ Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĊĠĠĠ Ġlateinit Ġvar Ġradio Group : ĠRadio Group ĊĊĠĠĠ Ġlateinit Ġvar Ġfloating action button : ĠFloating ActionButton ĊĊĠĠĠ Ġlateinit Ġvar Ġauto Complete TextView : ĠAuto Complete TextView ĊĊĠĠĠ Ġvar Ġmode : ĠInt Ġ= ĠSearch ing Service . ALPH AB ET ICAL ĊĊĠĠĠ Ġvar Ġminimal Note : ĠFloat Ġ= Ġ 0 . 0 F ĊĊĠĠĠ Ġclass ĠSearch Text Change ( val Ġadapter : ĠSearch ListAdapter , Ġprivate Ġval Ġsearch List : ĠArrayList < Sound roid Search able >, Ġval Ġfragment : ĠSearch ing Fragment ) Ġ: ĠText Watcher Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch List . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġs != Ġnull Ġ&& Ġs . length Ġ> Ġ 0 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= ĠSearch ing Service . search ( s . toString (), Ġfragment . mode , Ġfragment . minimal Note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch List . addAll ( search Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ search ing , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġauto Complete TextView Ġ= Ġview . findViewById ( R . id . fragment _ search ing _ autocomplete ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġview . findViewById ( R . id . fragment _ search ing _ recycler _ view ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġauto Complete TextView . add TextChanged Listener ( Search Text Change ( adapter , Ġsearch List , Ġthis )) ĊĊĠĠĠĠĠĠĠ Ġradio Group Ġ= Ġview . findViewById ( R . id . fragment _ search ing _ radio _ group ) ĊĠĠĠĠĠĠĠ Ġradio Group . setOn Checked ChangeListener Ġ{ Ġgroup , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchecked RadioButton Ġ= Ġgroup . findViewById ( checked Id ) Ġas ĠRadio Button ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Checked Ġ= Ġchecked RadioButton . isChecked ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch List . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġchecked Id Ġ== ĠR . id . fragment _ search ing _ radio _ alpha Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= ĠSearch ing Service . ALPH AB ET ICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Ġchecked Id Ġ== ĠR . id . fragment _ search ing _ radio _ list ening _ number Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= ĠSearch ing Service . NUMBER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Ġchecked Id Ġ== ĠR . id . fragment _ search ing _ radio _ note Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode Ġ= ĠSearch ing Service . NOTE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch List . addAll ( Searching Service . search ( auto Complete TextView . text . toString (), Ġmode , Ġminimal Note )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfloating action button Ġ= Ġview . findViewById ( R . id . fragment _ search ing _ create _ playlist ) ĊĠĠĠĠĠĠĠ Ġfloating action button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠCreate Research Playlist Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . listener Ġ= Ġobject Ġ: ĠCreate Research Playlist Dialog Fragment . Confirm Create Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dialog Confirm Create Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditable Ġ= Ġfragment . dialog ?. findViewById < EditText >( R . id . dialog _ create _ playlist _ edit _ text )?. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġeditable . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Playlist Ġ= ĠPlaylist ( null , Ġtitle ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( Ġelement Ġin Ġsearch List Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġelement Ġis ĠSound track Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Playlist . add Sound track ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Playlist . init PrimaryKey () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlaylist Repository . save Playlist ( new Playlist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show ( parent FragmentManager , Ġ" confirm Create ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrating Bar Ġ= Ġview . findViewById < Rating Bar >( R . id . fragment _ search ing _ rating _ bar ) ĊĠĠĠĠĠĠĠ Ġrating Bar . setOn Rating Bar ChangeListener Ġ{ Ġrating Bar , Ġrating , Ġfrom User Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminimal Note Ġ= Ġrating ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch List . addAll ( Searching Service . search ( auto Complete TextView . text . toString (), Ġmode , Ġminimal Note )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġv . tag Ġ== Ġnull Ġ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġv . tag Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġselected Search Ġ= Ġsearch List [ index ] ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( Ġselected Search Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSound track Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠPlayer Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" sound track Id ", Ġselected Search . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPlaylist Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠPlaylist Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" playlist Id ", Ġselected Search . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAlbum Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠAlbum Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" album Id ", Ġselected Search . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dialog Confirm Create Click () Ġ{ ĊĊĠĠĠ Ġ} Ċ Ċ }