package Ġcom . music player . a ow . ui . main . library . home . podcast Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . view . MenuItem Compat Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġcom . music player . a ow . R Ċ import Ġcom . music player . a ow . ui . base . Base Activity Ċ import Ġcom . music player . a ow . ui . main . library . home . podcast . adapter . Pod cast Adapter Ċ import Ġcom . music player . a ow . ui . main . library . home . podcast . model . Playlist Ċ import Ġcom . rx 2 android networking . Rx 2 Android Networking Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ podcast .* Ċ import Ġorg . json . JSONArray Ċ import Ġjava . util .* Ċ import Ġcom . android networking . error . AN Error Ċ import Ġcom . android networking . interfaces . JSONArray RequestListener Ċ import Ġcom . android networking . Android Networking Ċ import Ġcom . android networking . common . Priority ĊĊ Ċ class ĠPod cast Activity Ġ: ĠBase Activity (), ĠSearch View . On Query Text Listener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ podcast ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġwindow Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġresources . getColor ( R . color . black ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup Toolbar () ĊĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation Icon ( R . drawable . ic _ arrow _ back _ black ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġback Ġbutton Ġpressed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcall Playlist () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Main Section Data ( section : ĠArrayList < Playlist > ){ ĊĠĠĠĠĠĠĠ Ġpod cast . layout Manager Ġ= ĠGrid LayoutManager ( application Context , Ġ 2 ) Ġas ĠRecyclerView . LayoutManager ? ĊĠĠĠĠĠĠĠ Ġpod cast . adapter Ġ= ĠPod cast Adapter ( application Context , Ġthis , section ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetTitle ( title : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Title Enabled ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . search _ menu , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu . find Item ( R . id . action _ search ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= ĠMenuItem Compat . getAction View ( search Item ) Ġas ĠSearch View ĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHere Ġis Ġwhere Ġwe Ġare Ġgoing Ġto Ġimplement Ġthe Ġfilter Ġlogic ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent ( application Context , ĠPod cast Search Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" query ", Ġquery ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ// Toast . makeText ( this , Ġ" Searching ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcall Playlist (){ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" http :// api . ot tor ad io . com / v 1 / podcast s ? count = 5 0 " ĊĠĠĠĠĠĠĠ Ġvar Ġ__ section __ Ġ= ĠArrayList < Playlist >() ĊĠĠĠĠĠĠĠ Ġ// Ġprepare Ġthe ĠRequest ĊĊĠĠĠĠĠĠĠ ĠAndroid Networking . get ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Priority . LOW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getAs JSONArray ( object Ġ: ĠJSONArray RequestListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠJSONArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġanything Ġwith Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. ( data . length () Ġ- Ġ 1 )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġdata . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplaylist Section Ġ= ĠPlaylist () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . id Ġ= Ġitem . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . title Ġ= Ġitem . getString (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . audio Url Ġ= Ġitem . getString (" audio _ url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . audio Duration Ġ= Ġitem . getDouble (" audio _ duration ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . category Ġ= Ġitem . getString (" category ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . imageUrl Ġ= Ġitem . getString (" image _ url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . published At Ġ= Ġitem . getString (" published _ at ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . description Ġ= Ġitem . getString (" description ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . source ImageUrl Ġ= Ġitem . getString (" source _ image _ url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . source Ġ= Ġitem . getString (" source ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ__ section __. add ( playlist Section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Main Section Data (__ section __) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ bar . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠAN Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhandle Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ċ Ċ // ĠĠĠĠĠĠĠ ĠRx 2 Android Networking . get ( url ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Array Observable Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObservable < JSONArray >() Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ?) Ġ{ Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġlayout Inflater Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Layout Ġ= Ġinflater . inflate ( R . layout . custom _ toast , ĠfindViewById < View >( R . id . custom _ toast _ layout ) Ġas ĠViewGroup ) Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast ( application Context ) Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . duration Ġ= ĠToast . LENGTH _ SHORT Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . view Ġ= Ġtoast Layout Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . setText ( e !!. localized Message ) Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠJSONArray ?) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= Ġt !! Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 .. ( data . length () Ġ- Ġ 1 )){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Ġ= Ġdata . getJSONObject ( i ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġplaylist Section Ġ= ĠPlaylist () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . id Ġ= Ġitem . getString (" id ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . title Ġ= Ġitem . getString (" title ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . audio Url Ġ= Ġitem . getString (" audio _ url ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . audio Duration Ġ= Ġitem . getDouble (" audio _ duration ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . category Ġ= Ġitem . getString (" category ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . imageUrl Ġ= Ġitem . getString (" image _ url ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . published At Ġ= Ġitem . getString (" published _ at ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . description Ġ= Ġitem . getString (" description ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . source ImageUrl Ġ= Ġitem . getString (" source _ image _ url ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist Section . source Ġ= Ġitem . getString (" source ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ__ section __. add ( playlist Section ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Main Section Data (__ section __) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress _ bar . visibility Ġ= ĠView . IN VISIBLE Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} Ċ } Ċ