package Ġcom . mob app home . android app updater Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġset tar Ġon Ġ 7 / 1 2 / 1 6 . Ċ Ġ*/ ĊĊ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Dialog Fragment Ċ import Ġandroid . support . v 7 . widget . PopupMenu Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . mob app home . android app updater . commons . set Controller Font Ċ import Ġcom . mob app home . android app updater . tools . Constants Ċ import Ġcom . mob app home . android app updater . tools . Dlg Mode Enum Ċ import Ġcom . mob app home . android app updater . tools . Program Info Ċ import Ġkotlinx . android . synt hetic . main . aa updater _ dlg .* Ċ Ċ class ĠAA Updater Dlg Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġprogram Info : ĠProgram Info ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġtype : ĠD lg Mode Enum ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġbtn Info Visibility : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġinternal Ġvar Ġbtn Info MenuItem Title : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġbtn Info Action URL : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Style ( Dialog Fragment . STYLE _ NORMAL , ĠR . style . MA H Updater Dlg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( Constants . MA H _ ANDROID _ UP DAT ER _ LOG _ TAG , Ġ" MA H ĠD ld Ġexit ĠCreated Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġarguments ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġprogram Info Ġ= Ġgson . fromJson ( arg !!. getString (" program Info "), ĠProgram Info :: class . java ) ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġarg . get Serializable (" type ") Ġas ĠD lg Mode Enum ĊĠĠĠĠĠĠĠ Ġbtn Info Visibility Ġ= Ġarg . getBoolean (" btn Info Visibility ") ĊĠĠĠĠĠĠĠ Ġbtn Info MenuItem Title Ġ= Ġarg . getString (" btn Info MenuItem Title ") ĊĠĠĠĠĠĠĠ Ġbtn Info Action URL Ġ= Ġarg . getString (" btn Info Action URL ") ĊĊĠĠĠĠĠĠĠ ĠLog . i ( Constants . MA H _ ANDROID _ UP DAT ER _ LOG _ TAG , Ġ" Update info Ġfrom Ġbundle Ġ" Ġ+ Ġprogram Info ?. update Info ) ĊĊĠĠĠĠĠĠĠ Ġdialog . window !!. attributes . window Animations Ġ= ĠR . style . MA H Updater Dialog Animation ĊĠĠĠĠĠĠĠ Ġdialog . window !!. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠ Ġ// get Dialog (). getWindow (). request Feature ( Window . FEATURE _ NO _ TITLE ); ĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . setOn Key Listener Ġ{ Ġdialog , ĠkeyCode , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠKeyEvent . ACTION _ DOWN Ġ&& ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ BACK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon No () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . aa updater _ dlg , Ġcontainer ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġtv Update Info . text Ġ= Ġprogram Info ?. update Info ĊĠĠĠĠĠĠĠ Ġbtn Dont Update . text Ġ= Ġresources . getText ( R . string . android _ app _ upd _ dlg _ btn _ no _ later _ txt ) ĊĊĠĠĠĠĠĠĠ Ġtv Update Info . visibility Ġ= Ġif Ġ( program Info ?. update Info Ġ!= Ġnull ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġimg Btn Info . visibility Ġ= Ġif Ġ( btn Info Visibility ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠ Ġbtn Update . setOnClickListener Ġ{ Ġon Yes () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Dont Update . setOnClickListener Ġ{ Ġon No () Ġ} ĊĠĠĠĠĠĠĠ Ġimg Btn Cancel . setOnClickListener Ġ{ Ġon No () Ġ} ĊĠĠĠĠĠĠĠ Ġimg Btn Info . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemId For Info Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpopup Ġ= ĠPopup Menu ( context !! , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup . menu . add ( Menu . NONE , ĠitemId For Info , Ġ 1 , Ġbtn Info MenuItem Title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġregistering Ġpopup Ġwith ĠOn MenuItem ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠitemId For Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow MA H lib () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup . show () // Ġshowing Ġpopup Ġmenu ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD lg Mode Enum . UPDATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Update . text Ġ= Ġresources . getText ( R . string . cm nd _ verb _ android _ app _ upd _ dlg _ btn _ yes _ update _ txt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Info Txt . text Ġ= Ġresources . getText ( R . string . android _ app _ upd _ updater _ info _ update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD lg Mode Enum . INSTALL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Update . text Ġ= Ġresources . getText ( R . string . cm nd _ verb _ android _ app _ upd _ dlg _ btn _ yes _ install _ txt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Info Txt . text Ġ= Ġresources . getText ( R . string . android _ app _ upd _ updater _ info _ install ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD lg Mode Enum . TEST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Update . text Ġ= Ġresources . getText ( R . string . cm nd _ verb _ android _ app _ upd _ dlg _ btn _ yes _ update _ txt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Info Txt . text Ġ= Ġresources . getText ( R . string . android _ app _ upd _ updater _ info _ update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv Title . set Controller Font () ĊĠĠĠĠĠĠĠ Ġtv Info Txt . set Controller Font () ĊĠĠĠĠĠĠĠ Ġbtn Update . set Controller Font () ĊĠĠĠĠĠĠĠ Ġbtn Dont Update . set Controller Font () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Yes () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD lg Mode Enum . TEST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġif Ġ(! program Info ?. uri Current !!. isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarket Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarket Intent . data Ġ= ĠUri . parse (" market :// details ? id =" Ġ+ Ġprogram Info ?. uri Current ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. startActivity ( market Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠgetString ( R . string . android _ app _ upd _ play _ service _ not _ found ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( Constants . MA H _ ANDROID _ UP DAT ER _ LOG _ TAG , ĠgetString ( R . string . android _ app _ upd _ play _ service _ not _ found ) Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġon No () Ġ= Ġdismiss Allow ing State Loss () ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow MA H lib () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbrowser Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( btn Info Action URL )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !!. startActivity ( browser Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( n fe : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġ" You Ġhaven 't Ġset Ġcorrect Ġurl Ġto Ġbtn Info Action URL , Ġyour Ġurl Ġ= Ġ" Ġ+ Ġbtn Info Action URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġstr , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Constants . MA H _ ANDROID _ UP DAT ER _ LOG _ TAG , Ġstr , Ġn fe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( program Info : ĠProgram Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠD lg Mode Enum , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Info Visibility : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Info MenuItem Title : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Info Action URL : ĠString ?): ĠAA Updater Dlg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAA Updater Dlg () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" program Info ", Ġgson . toJson ( program Info )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Serializable (" type ", Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Boolean (" btn Info Visibility ", Ġbtn Info Visibility ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" btn Info MenuItem Title ", Ġbtn Info MenuItem Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString (" btn Info Action URL ", Ġbtn Info Action URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }// ĠEmpty Ġconstructor Ġrequired Ġfor ĠDialog Fragment