/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 . Ċ Ġ* ĠCreated Ġby ĠJ os ua ĠL eng wen ath Ċ Ġ*/ Ċ Ċ package Ġde . der typ 7 2 1 4 . apk mirror . common Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . der typ 7 2 1 4 . theme able components . components . Theme able ProgressBar Ċ import Ġde . der typ 7 2 1 4 . apk mirror . R Ċ import Ġde . der typ 7 2 1 4 . apk mirror . common . Network Tools . Companion . drawable From Url Ċ import Ġde . der typ 7 2 1 4 . apk mirror . objects . App Variant Ċ import Ġjava . io . File Ċ Ċ @ Suppress (" DE PREC ATION ") Ċ class ĠVariant Adapter ( private Ġvar Ġcontext : ĠActivity , Ġprivate Ġvar Ġitems : ĠArrayList < App Variant >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Variant Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . item _ variant , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġvar Ġheight : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconvert Dp To Pixel ((( if Ġ( item Count Ġ> Ġ 5 ) Ġ 5 . 5 F Ġelse Ġitem Count Ġ- Ġ 0 . 5 F ) Ġ* Ġ 6 5 )). toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Static Field Leak ") ĊĠĠĠĠĠĠĠ Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġitems [ position ] ĊĊĠĠĠĠĠĠĠ Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġcontext . window Manager . default Display . get Metrics ( display Metrics ) ĊĊĠĠĠĠĠĠĠ Ġholder . card . layout Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams ( display Metrics . width Pixels , ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġapp . app . title ĊĠĠĠĠĠĠĠ Ġholder . version . text Ġ= Ġapp . version ĊĠĠĠĠĠĠĠ Ġholder . dpi . text Ġ= Ġapp . dpi ĊĠĠĠĠĠĠĠ Ġholder . android Version . text Ġ= Ġapp . android Version ĊĠĠĠĠĠĠĠ Ġholder . architecture . text Ġ= Ġapp . arch ĊĠĠĠĠĠĠĠ Ġholder . icon . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġdrawable From Url ( context , Ġapp . app . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . icon . setImage Drawable ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . icon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . progress Bar . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĊĠĠĠĠĠĠĠ Ġholder . ly . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( android . R . string . ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( android . R . string . no ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Download ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content (" Do Ġyou Ġwant Ġto Ġdownload Ġ\" ${ app . app . title }\" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog . show ( context , Ġ"", Ġ" Download Ġ( 0 % )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. set In determinate Drawable ( Theme able ProgressBar ( context ). in determinate Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Parser Ġ= ĠHtml Parser ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġhtml Parser . get A pk Url ( html Parser . get Download Page ( app ). variants [ 0 ]. url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setMessage (" Download Ġ( 1 % )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Parser . open Installer ( url , Ġobject Ġ: ĠHtml Parser . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( progress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ> Ġ 0 ) Ġprogress Dialog !!. setMessage (" Download Ġ($ progress % )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstop ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Parser . install A pk ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Negative Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( v : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( v ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcard : ĠCard View Ġ= Ġv . findViewById ( R . id . card ) ĊĠĠĠĠĠĠĠ Ġvar Ġly : ĠLinearLayout Ġ= Ġv . findViewById ( R . id . ly ) ĊĠĠĠĠĠĠĠ Ġval ĠprogressBar : ĠProgress Bar Ġ= Ġv . findViewById ( R . id . progress Bar ) ĊĠĠĠĠĠĠĠ Ġval Ġicon : ĠImageView Ġ= Ġv . findViewById ( R . id . img _ icon ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠTextView Ġ= Ġv . findViewById ( R . id . txt _ title ) ĊĠĠĠĠĠĠĠ Ġval Ġversion : ĠTextView Ġ= Ġv . findViewById ( R . id . txt _ version ) ĊĠĠĠĠĠĠĠ Ġval Ġdpi : ĠTextView Ġ= Ġv . findViewById ( R . id . txt _ dpi ) ĊĠĠĠĠĠĠĠ Ġval Ġandroid Version : ĠTextView Ġ= Ġv . findViewById ( R . id . txt _ android version ) ĊĠĠĠĠĠĠĠ Ġval Ġarchitecture : ĠTextView Ġ= Ġv . findViewById ( R . id . txt _ architecture ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Dp To Pixel ( dp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĠĠĠĠĠĠĠ Ġreturn Ġdp Ġ* Ġ( metrics . density D pi . toFloat () Ġ/ ĠDisplay Metrics . D ENS ITY _ DEFAULT ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ