package Ġde . der typ 7 2 1 4 . r board theme manager . helper Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . downloader . Error Ċ import Ġcom . downloader . On Download Listener Ċ import Ġcom . downloader . PR Downloader Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . google . android . material . switch material . Switch Material Ċ import Ġde . der typ 7 2 1 4 . r board theme manager . R Ċ import Ġde . der typ 7 2 1 4 . r board theme manager . component . Material Bottom Sheet Ċ import Ġde . der typ 7 2 1 4 . r board theme manager . data . Pack Item Ċ import Ġjava . io . File ĊĊ Ċ class ĠDownload Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfrom Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġto Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar ĠfileName Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠDownload Listener Ġ= Ġobject Ġ: ĠDownload Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstart () Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprogress ( progress : ĠInt , Ġcurrent : ĠLong , Ġtotal : ĠLong ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġerror ( error : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġend ( path : ĠString ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfrom ( url : ĠString ): ĠDownload Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġfrom Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto ( path : ĠString ): ĠDownload Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġto Ġ= Ġpath ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfileName ( name : ĠString ): ĠDownload Helper Ġ{ ĊĠĠĠĠĠĠĠ ĠfileName Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Listener ( l : ĠDownload Listener ): ĠDownload Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġlistener Ġ= Ġl ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ ĠPR Downloader . download ( from , Ġto , ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Start Or Resume Listener Ġ{ Ġlistener . start () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Progress Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress Ġ= Ġ( it . current Bytes . toFloat () Ġ/ Ġit . total Bytes . toFloat ()) Ġ* Ġ 1 0 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . progress ( progress . toInt (), Ġit . current Bytes , Ġit . total Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start ( object Ġ: ĠOn Download Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Download Complete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . end ( File ( to , ĠfileName ). absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠError ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . error ( error ?. connection Exception ?. localized Message Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġpreview Dialog ( ĊĠĠĠ Ġactivity : ĠFragment Activity , ĊĠĠĠ Ġpreview Path : ĠString , ĊĠĠĠ Ġtheme Pack : ĠPack Item , ĊĠĠĠ Ġclick Download : Ġ( over ro de Theme : ĠBoolean , Ġclose Dialog : Ġ() Ġ-> ĠUnit ) Ġ-> ĠUnit Ġ= Ġ{ Ġ_, Ġit Ġ-> Ġit () Ġ}, ĊĠĠĠ ĠonClose : Ġ() Ġ-> ĠUnit Ġ= Ġ{ Ġ}, ĊĠĠĠ Ġon Show : Ġ( Pair < ProgressBar , ĠMaterial Bottom Sheet >) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠMaterial Bottom Sheet (). show ( activity . support FragmentManager , ĠR . layout . preview ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprogressBar Ġ= ĠfindViewById < ProgressBar >( R . id . progress Bar ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠfindViewById < TextView >( R . id . dialog _ title ) ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= ĠfindViewById < TextView >( R . id . author ) ĊĠĠĠĠĠĠĠ Ġval Ġoverride Themes Ġ= ĠfindViewById < Switch Material >( R . id . override Theme ) ĊĠĠĠĠĠĠĠ Ġtitle ?. text Ġ= Ġtheme Pack . name ĊĠĠĠĠĠĠĠ Ġauthor ?. text Ġ= Ġtheme Pack . author ĊĊĠĠĠĠĠĠĠ Ġdialog ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠBottom Sheet Dialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehavior . state Ġ= ĠBottom Sheet Behavior . STATE _ HALF _ EXP AN DED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdownload Button : ĠMaterial Button ? Ġ= ĠfindViewById ( R . id . download _ button ) ĊĊĠĠĠĠĠĠĠ Ġdownload Button ?. isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġdownload Button ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Download ( override Themes ?. isChecked Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset On Cancel Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( preview Path ). delete Re cursively () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClose () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( progress Bar Ġ!= Ġnull ) Ġon Show ( Pair ( progress Bar , Ġthis )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdownload Dialog ( context : ĠContext ): ĠPair < ProgressBar , ĠMaterial Dialog > Ġ{ ĊĠĠĠ Ġlateinit Ġvar ĠprogressBar : ĠProgress Bar ĊĠĠĠ Ġval Ġdialog Ġ= ĠMaterial Dialog ( context ). show Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . download _ alert ) ĊĠĠĠĠĠĠĠ Ġcancel able ( false ) ĊĠĠĠĠĠĠĠ Ġcancel On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ ĠprogressBar Ġ= ĠfindViewById ( R . id . progressbar _ download ing ) ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= ĠfindViewById < ImageView >( R . id . dialog _ image _ view ) ĊĠĠĠĠĠĠĠ ĠimageView . view Tree Observer . add On Global Layout Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . scale Y Ġ= ĠimageView . meas ured Height . toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠPair ( progress Bar , Ġdialog ) Ċ } Ċ Ċ interface ĠDownload Listener Ġ{ ĊĠĠĠ Ġfun Ġstart () ĊĠĠĠ Ġfun Ġprogress ( progress : ĠInt , Ġcurrent : ĠLong , Ġtotal : ĠLong ) ĊĠĠĠ Ġfun Ġerror ( error : ĠString ) ĊĠĠĠ Ġfun Ġend ( path : ĠString ) Ċ }