package Ġcom . el ton k ola . kid z tv . ui . open Video Plugin Ċ Ċ import Ġandroid . app . Download Manager Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . el ton k ola . kid z tv . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ sample _ video .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel ĊĊ Ċ class ĠSample Video Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġvm : ĠSample Video ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ sample _ video ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġresources . getString ( R . string . open _ videos _ title ) ĊĊĠĠĠĠĠĠĠ Ġvideo _ list . layout Manager Ġ= ĠLinearLayoutManager ( this , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġvideo _ list . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdivider Item Decoration Ġ= ĠDiv ider Item Decoration ( this , ĠRecyclerView . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġvideo _ list . addItem Decoration ( divider Item Decoration ) ĊĊĠĠĠĠĠĠĠ Ġvideo _ list . adapter Ġ= ĠOpen Video ListAdapter ( this ) Ġ{ Ġvideo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video . already Downloaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" This Ġvideo Ġis Ġalready Ġdownloaded !! ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Video ( video ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvm . videos . observe ( this , ĠObserver Ġ{ Ġvideos Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( video _ list . adapter Ġas ĠOpen Video ListAdapter ). set Open Video Elements ( videos ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġvm . error . observe ( this , ĠObserver Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Error Ġloading Ġvideos !! ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġvm . loading . observe ( this , ĠObserver Ġ{ Ġloading Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ videos . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ videos . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġregister Receiver ( onComplete , ĠIntent Filter ( Download Manager . ACTION _ DOWNLOAD _ COMPLETE )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( onComplete ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠonComplete : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( ctxt : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvm . reload Videos () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠDOWN LOAD _ URL Ġ= Ġ" com . el ton k ola . kid z tv . DOWNLOAD _ URL " ĊĠĠĠ Ġval ĠTITLE Ġ= Ġ" com . el ton k ola . kid z tv . TITLE " ĊĠĠĠ Ġval ĠFILE _ NAME Ġ= Ġ" com . el ton k ola . kid z tv . FILE _ NAME " ĊĠĠĠ Ġval ĠACTION Ġ= Ġ" com . el ton k ola . kid z tv . action . START _ DOWNLOAD _ SERVICE " ĊĊĠĠĠ Ġfun Ġdownload Video ( video : ĠOpen Video Element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ACTION ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( DOWNLOAD _ URL , Ġvideo . getUrl ()) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( TITLE , Ġvideo . title ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( FILE _ NAME , Ġvideo . get FileName ()) ĊĠĠĠĠĠĠĠ Ġsend Broadcast ( intent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ