package Ġcom . Ar j ix Was Taken . cloud stream 3 . ui . download Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . R Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . is Movie Type Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . mv vm . observe Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . ui . download . Download Button Setup . handle Download Click Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . utils . DOWNLOAD _ E PI SO DE _ CACHE Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . utils . DataStore . get Folder Name Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . utils . UI Helper . fix Padding Status bar Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . utils . UI Helper . hide Keyboard Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . utils . Video Download Helper Ċ import Ġcom . Ar j ix Was Taken . cloud stream 3 . utils . Video Download Manager Ċ import Ġkotlinx . android . synt hetic . main . fragment _ downloads .* Ċ Ċ const Ġval ĠDOWN LOAD _ NAV IG ATE _ TO Ġ= Ġ" download page " Ċ Ċ class ĠDownload Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdownloads ViewModel : ĠDownload ViewModel ĊĊĠĠĠ Ġprivate Ġfun Ġget Bytes As Text ( bytes : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"% . 1 f ". format ( bytes Ġ/ Ġ 1 0 0 0 0 0 0 0 0 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . setLayout Width ( weight : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Of (( weight Ġ/ Ġ 1 0 0 0 0 0 0 0 0 0 f ), Ġ 0 . 1 f ) Ġ// Ġ 1 0 0 mb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġthis . layout Params Ġ= Ġparam ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset List ( list : ĠList < Visual Download Header Cached >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( download _ list ?. adapter Ġas ĠDownload Header Adapter ?) ?. card List Ġ= Ġlist ĊĠĠĠĠĠĠĠ Ġdownload _ list ?. adapter ?. notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( download _ list ?. adapter Ġas ĠDownload Header Adapter ?) ?. kill Adapter () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdownload Delete EventListener ?. let Ġ{ ĠVideo Download Manager . download Delete Event Ġ-= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġdownloads ViewModel Ġ= ĠViewModel Provider ( this ). get ( Download ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġobserve ( downloads ViewModel . no Downloads Text ) Ġ{ Ġtext _ no _ downloads . text Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ( downloads ViewModel . header Cards ) Ġ{ Ġset List ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ( downloads ViewModel . available Bytes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ free _ txt ?. text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . storage _ size _ format ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( getString ( R . string . free _ storage ), Ġget Bytes As Text ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ free ?. setLayout Width ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ( downloads ViewModel . used Bytes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ used _ txt ?. text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . storage _ size _ format ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( getString ( R . string . used _ storage ), Ġget Bytes As Text ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ used ?. setLayout Width ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ( downloads ViewModel . download Bytes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ app _ txt ?. text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . storage _ size _ format ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( getString ( R . string . app _ storage ), Ġget Bytes As Text ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ app ?. setLayout Width ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload _ storage _ app bar ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ downloads , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdownload Delete EventListener : Ġ(( Int ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter : ĠRecyclerView . Adapter < RecyclerView . ViewHolder > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDownload Header Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclick Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( click . data . type . is Movie Type ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġw ont Ġbe Ġcalled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Folder Name ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDOWN LOAD _ E PI SO DE _ CACHE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick . data . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. find Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ download _ child , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" folder ", Ġfolder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" name ", Ġclick . data . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġdownload Click Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( download Click Event . data Ġ! is ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Download Helper . Download Episode Cached ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Download Header Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Download Click ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Click Event . data . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Click Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( download Click Event . action Ġ== ĠDOWN LOAD _ ACTION _ DELETE _ FILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġctx Ġ-> Ġdownloads ViewModel . update List ( ctx ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdownload Delete EventListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġ( download _ list ?. adapter Ġas ĠDownload Header Adapter ?) ?. card List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . any Ġ{ Ġit . data . id Ġ== Ġid Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġctx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset List ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownloads ViewModel . update List ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdownload Delete EventListener ?. let Ġ{ ĠVideo Download Manager . download Delete Event Ġ+= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġdownload _ list . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġdownload _ list . layout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġdownloads ViewModel . update List ( require Context ()) ĊĊĠĠĠĠĠĠĠ Ġcontext ?. fix Padding Status bar ( download _ root ) ĊĠĠĠ Ġ} Ċ } Ċ