package Ġeu . kan ade . t ach iy omi . ui . setting Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . preference . Xp Preference Fragment Ċ import Ġandroid . view . View Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġeu . kan ade . t ach iy omi . Build Config Ċ import Ġeu . kan ade . t ach iy omi . R Ċ import Ġeu . kan ade . t ach iy omi . data . updater . Github Update Checker Ċ import Ġeu . kan ade . t ach iy omi . data . updater . Github Update Result Ċ import Ġeu . kan ade . t ach iy omi . data . updater . Update Checker Service Ċ import Ġeu . kan ade . t ach iy omi . data . updater . Update Downloader Service Ċ import Ġeu . kan ade . t ach iy omi . util . toast Ċ import Ġnet . x pe ce . android . support . preference . Switch Preference Ċ import Ġrx . Subscription Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . schedul ers . Schedulers Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . text . DateFormat Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠSettings About Fragment Ġ: ĠSettings Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( root Key : ĠString ): ĠSettings About Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( Xp Preference Fragment . ARG _ PREFER ENCE _ ROOT , Ġroot Key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSettings About Fragment (). apply Ġ{ Ġarguments Ġ= Ġargs Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġfor Ġnew Ġreleases ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġupdate Checker Ġby Ġlazy Ġ{ ĠGithub Update Checker () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġsub scri bt ion Ġservice Ġof Ġthe Ġobtained Ġrelease Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġrelease Subscription : ĠSubscription ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġautomatic Updates : ĠSwitch Preference Ġby Ġbind Pref ( R . string . pref _ enable _ automatic _ updates _ key ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , Ġsaved State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , Ġsaved State ) ĊĊĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġfind Preference ( getString ( R . string . pref _ version )) ĊĠĠĠĠĠĠĠ Ġval Ġbuild Time Ġ= Ġfind Preference ( getString ( R . string . pref _ build _ time )) ĊĊĠĠĠĠĠĠĠ Ġversion . summary Ġ= Ġif Ġ( Build Config . DEBUG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" r " Ġ+ ĠBuild Config . COMMIT _ COUNT ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Config . VERSION _ NAME ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Build Config . DEBUG Ġ&& ĠBuild Config . INCLUDE _ UP DAT ER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Set ĠonClick Listener Ġto Ġcheck Ġfor Ġnew Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion . setOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Version () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġautomatic Updates . setOn Preference ChangeListener Ġ{ Ġpreference , Ġany Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchecked Ġ= Ġany Ġas ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Checker Service . setup Task ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Checker Service . cancel Task ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġautomatic Updates . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuild Time . summary Ġ= Ġget Formatted Build Time () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelease Subscription ?. unsubscribe () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Formatted Build Time (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Df Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ' T ' HH : mm ' Z '") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Df . time Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġinput Df . parse ( Build Config . BUILD _ TIME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Df Ġ= ĠDate Format . get DateTime Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Format . MEDIUM , ĠDate Format . SHORT , ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Df . time Zone Ġ= ĠTime Zone . getDefault () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoutput Df . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuild Config . BUILD _ TIME ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġversion Ġand Ġshows Ġa Ġuser Ġprompt Ġif Ġan Ġupdate Ġis Ġavailable . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Version () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelease Subscription ?. unsubscribe () ĊĊĠĠĠĠĠĠĠ Ġcontext . toast ( R . string . update _ check _ look _ for _ updates ) ĊĊĠĠĠĠĠĠĠ Ġrelease Subscription Ġ= Ġupdate Checker . check For Update () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGithub Update Result . New Update Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresult . release . change Log ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġresult . release . download Link ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġconfirmation Ġwindow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial Dialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( R . string . update _ check _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Text ( getString ( R . string . update _ check _ confirm )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Text ( getString ( R . string . update _ check _ ignore )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Positive Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġdownload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Downloader Service . download Update ( context , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGithub Update Result . No New Update Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . toast ( R . string . update _ check _ no _ new _ updates ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } Ċ