/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠMar c ĠD onal d Ċ Ġ* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ċ Ġ* Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ċ Ġ* Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ċ Ġ* Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ċ Ġ* Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ċ Ġ* Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS Ċ Ġ* ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR Ċ Ġ* ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER Ċ Ġ* ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN Ċ Ġ* ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . mar cd onal d . ear w orm . setting ss creen . updated ialog Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ 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 . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . mar cd onal d . ear w orm . R Ċ import Ġcom . mar cd onal d . ear w orm . internal . base . E ar w orm Dialog Fragment Ċ import Ġorg . kode in . di . K ode in Ċ import Ġorg . kode in . di . K ode in Aware Ċ import Ġorg . kode in . di . android . x . closest K ode in Ċ import Ġorg . kode in . di . generic . instance Ċ Ċ class ĠUpdate Dialog Ġ: ĠE ar w orm Dialog Fragment (), ĠK ode in Aware Ġ{ Ċ ĉ override Ġval Ġk ode in : ĠK ode in Ġby Ġclosest K ode in () ĊĊ ĉ // Ġ< editor - fold Ġdesc =" View ĠModel "> Ċ ĉ private Ġval ĠviewModel Factory : ĠUpdate Dialog ViewModel Factory Ġby Ġinstance () Ċ ĉ private Ġlateinit Ġvar ĠviewModel : ĠUpdate Dialog ViewModel Ċ ĉ // Ġ</ editor - fold > ĊĊ ĉ // Ġ< editor - fold Ġdesc =" UI ĠComponents "> Ċ ĉ private Ġlateinit Ġvar Ġno Update Available : ĠImageView Ċ ĉ private Ġlateinit Ġvar Ġerror Display : ĠImageView Ċ ĉ private Ġlateinit Ġvar Ġupdate Available : ĠImageView Ċ ĉ private Ġlateinit Ġvar Ġno Connection : ĠLinearLayout Ċ ĉ private Ġlateinit Ġvar Ġloading ProgressBar : ĠProgress Bar Ċ ĉ private Ġlateinit Ġvar Ġopen Button : ĠMaterial Button Ċ ĉ private Ġlateinit Ġvar Ġdismiss Button : ĠMaterial Button Ċ ĉ private Ġlateinit Ġvar Ġtitle : ĠTextView Ċ ĉ private Ġlateinit Ġvar Ġmessage : ĠTextView Ċ ĉ // Ġ</ editor - fold > ĊĊ ĉ override Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ Ċĉ ĉ super . onCreate ( savedInstanceState ) Ċĉ ĉ viewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Update Dialog ViewModel :: class . java ) Ċ ĉ } ĊĊ ĉ override Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ Ċĉ ĉ val Ġview Ġ= Ġinflater . inflate ( R . layout . dialog _ update , Ġcontainer , Ġfalse ) Ċĉ ĉ bind Views ( view ) Ċĉ ĉ setup Observer s () Ċĉ ĉ viewModel . check () Ċĉ ĉ return Ġview Ċ ĉ } ĊĊ ĉ private Ġfun Ġbind Views ( view : ĠView ) Ġ{ Ċĉ ĉ title Ġ= Ġview . findViewById ( R . id . txt _ update _ title ) Ċĉ ĉ message Ġ= Ġview . findViewById ( R . id . txt _ update _ message ) Ċĉ ĉ message . visibility Ġ= ĠView . GONE Ċĉ ĉ no Connection Ġ= Ġview . findViewById ( R . id . lin _ update _ no _ connection ) Ċĉ ĉ no Update Available Ġ= Ġview . findViewById ( R . id . img _ no _ update _ available ) Ċĉ ĉ update Available Ġ= Ġview . findViewById ( R . id . img _ update _ available ) Ċĉ ĉ update Available . visibility Ġ= ĠView . GONE Ċĉ ĉ error Display Ġ= Ġview . findViewById ( R . id . img _ update _ error ) Ċĉ ĉ error Display . visibility Ġ= ĠView . GONE Ċĉ ĉ loading ProgressBar Ġ= Ġview . findViewById ( R . id . prog _ update ) Ċĉ ĉ dismiss Button Ġ= Ġview . findViewById ( R . id . btn _ update _ dismiss ) Ċĉ ĉ dismiss Button . setOnClickListener Ġ{ Ċĉĉ ĉ dismiss () Ċĉ ĉ } Ċĉ ĉ open Button Ġ= Ġview . findViewById ( R . id . btn _ update _ open ) Ċĉ ĉ open Button . setOnClickListener Ġ{ Ċĉĉ ĉ val Ġuri Url Ġ= ĠUri . parse (" https :// github . com / Mar c D onal d / E ar w orm / releases / latest ") Ċĉĉ ĉ val Ġlaunch Browser Ġ= ĠIntent ( Intent . ACTION _ VIEW ) Ċĉĉ ĉ launch Browser . data Ġ= Ġuri Url Ċĉĉ ĉ startActivity ( launch Browser ) ĊĊĉ ĉ } Ċ ĉ } ĊĊ ĉ private Ġfun Ġsetup Observer s () Ġ{ Ċĉ ĉ viewModel . display Dismiss . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġdisplay Ġ-> Ċĉĉĉ ĉ dismiss Button . visibility Ġ= Ġif ( display ) ĠView . VISIBLE Ġelse ĠView . GONE Ċĉĉ ĉ } Ċĉ ĉ }) ĊĊĉ ĉ viewModel . display Loading . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġdisplay Ġ-> Ċĉĉĉ ĉ loading ProgressBar . visibility Ġ= Ġif ( display ) ĠView . VISIBLE Ġelse ĠView . GONE Ċĉĉĉ ĉ if ( display ) Ċĉĉĉĉ ĉ title . text Ġ= Ġresources . getString ( R . string . checking _ for _ updates ) Ċĉĉ ĉ } Ċĉ ĉ }) ĊĊĉ ĉ viewModel . display Open Button . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġdisplay Ġ-> Ċĉĉĉ ĉ open Button . visibility Ġ= Ġif ( display ) ĠView . VISIBLE Ġelse ĠView . GONE Ċĉĉ ĉ } Ċĉ ĉ }) ĊĊĉ ĉ viewModel . display No Update Available . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġdisplay Ġ-> Ċĉĉĉ ĉ no Update Available . visibility Ġ= Ġif ( display ) ĠView . VISIBLE Ġelse ĠView . GONE Ċĉĉĉ ĉ if ( display ) Ġ{ Ċĉĉĉĉ ĉ title . text Ġ= Ġresources . getString ( R . string . no _ update _ title ) Ċĉĉĉĉ ĉ message . text Ġ= Ġresources . getString ( R . string . no _ update _ message ) Ċĉĉĉĉ ĉ message . visibility Ġ= ĠView . VISIBLE Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ }) ĊĊĉ ĉ viewModel . display No Connection . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġdisplay Ġ-> Ċĉĉĉ ĉ no Connection . visibility Ġ= Ġif ( display ) ĠView . VISIBLE Ġelse ĠView . GONE Ċĉĉĉ ĉ if ( display ) Ġ{ Ċĉĉĉĉ ĉ title . text Ġ= Ġresources . getString ( R . string . no _ connection _ warning ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ }) ĊĊĉ ĉ viewModel . new Version Name . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġversion Name Ġ-> Ċĉĉĉ ĉ title . text Ġ= Ġresources . getString ( R . string . new _ version _ available _ title ) Ċĉĉĉ ĉ message . text Ġ= Ġresources . getString ( R . string . new _ version _ available _ message , Ġversion Name ) Ċĉĉĉ ĉ message . visibility Ġ= ĠView . VISIBLE Ċĉĉĉ ĉ update Available . visibility Ġ= ĠView . VISIBLE Ċĉĉ ĉ } Ċĉ ĉ }) ĊĊĉ ĉ viewModel . display Error . observe ( this , ĠObserver Ġ{ Ġvalue Ġ-> Ċĉĉ ĉ value ?. let Ġ{ Ġdisplay Ġ-> Ċĉĉĉ ĉ error Display . visibility Ġ= Ġif ( display ) ĠView . VISIBLE Ġelse ĠView . GONE Ċĉĉĉ ĉ if ( display ) Ċĉĉĉĉ ĉ title . text Ġ= Ġresources . getString ( R . string . error ) Ċĉĉ ĉ } Ċĉ ĉ }) Ċ ĉ } Ċ }