/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 7 - 2 0 1 9 ĠWire Guard ĠLLC . Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 8 - 2 0 1 9 ĠHar sh ĠSh and ily a Ġ< ms f jar vis @ gmail . com >. ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ package Ġcom . wire guard . android . preference Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . preference . Preference Ċ import Ġcom . wire guard . android . R Ċ import Ġcom . wire guard . android . di . ext . get Async Worker Ċ import Ġcom . wire guard . android . di . ext . get Tools Installer Ċ import Ġcom . wire guard . android . util . Tools Installer Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠPreference Ġimplementing Ġa Ġbutton Ġthat Ġasynchronously Ġruns Ġ` Tools Installer ` Ġand Ġdisplays Ġthe Ċ Ġ* Ġresult Ġas Ġthe Ġpreference Ġsummary . Ċ Ġ*/ Ċ Ċ class ĠTools Installer Preference ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠPreference ( context , Ġattrs ), ĠK oin Component Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġstate Ġ= ĠState . INITIAL ĊĠĠĠ Ġprivate Ġval Ġasync Worker Ġ= Ġget Async Worker () ĊĠĠĠ Ġprivate Ġval Ġtools Installer Ġ= Ġget Tools Installer () ĊĊĠĠĠ Ġoverride Ġfun Ġget Summary (): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . getString ( state . message ResourceId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Title (): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . getString ( R . string . tools _ installer _ title ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached () ĊĠĠĠĠĠĠĠ Ġasync Worker . supply Async < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtools Installer . are Installed () ĊĠĠĠĠĠĠĠ Ġ}. when Complete ( this :: on Check Result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Check Result ( state : ĠInt , Ġthrowable : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( throwable Ġ!= Ġnull Ġ|| Ġstate Ġ== ĠTools Installer . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( State . INITIAL ) ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( state Ġand ĠTools Installer . YES Ġ== ĠTools Installer . YES ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( State . AL READY ) ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( state Ġand Ġ( Tools Installer . MAG IS K Ġor ĠTools Installer . NO ) Ġ== ĠTools Installer . MAG IS K Ġor ĠTools Installer . NO ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( State . INITIAL _ MAG IS K ) ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( state Ġand Ġ( Tools Installer . SYSTEM Ġor ĠTools Installer . NO ) Ġ== ĠTools Installer . SYSTEM Ġor ĠTools Installer . NO ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( State . INITIAL _ SYSTEM ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( State . INITIAL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetState ( State . WORK ING ) ĊĠĠĠĠĠĠĠ Ġasync Worker . supply Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtools Installer . install () ĊĠĠĠĠĠĠĠ Ġ}. when Complete ( this :: on Install Result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Install Result ( result : ĠInt , Ġthrowable : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( State . FAILURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġand Ġ( Tools Installer . YES Ġor ĠTools Installer . MAG IS K ) Ġ== ĠTools Installer . YES Ġor ĠTools Installer . MAG IS K Ġ-> ĠsetState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . SUCCESS _ MAG IS K ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġand Ġ( Tools Installer . YES Ġor ĠTools Installer . SYSTEM ) Ġ== ĠTools Installer . YES Ġor ĠTools Installer . SYSTEM Ġ-> ĠsetState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . SUCCESS _ SYSTEM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠsetState ( State . FAILURE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetState ( state : ĠState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . state Ġ== Ġstate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġthis . state Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled Ġ!= Ġstate . should Enable View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġstate . should Enable View ĊĠĠĠĠĠĠĠ Ġnotify Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠState ( val Ġmessage ResourceId : ĠInt , Ġval Ġshould Enable View : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠINITIAL ( R . string . tools _ installer _ initial , Ġtrue ), ĊĠĠĠĠĠĠĠ ĠAL READY ( R . string . tools _ installer _ already , Ġfalse ), ĊĠĠĠĠĠĠĠ ĠFAILURE ( R . string . tools _ installer _ failure , Ġtrue ), ĊĠĠĠĠĠĠĠ ĠWORK ING ( R . string . tools _ installer _ working , Ġfalse ), ĊĠĠĠĠĠĠĠ ĠINITIAL _ SYSTEM ( R . string . tools _ installer _ initial _ system , Ġtrue ), ĊĠĠĠĠĠĠĠ ĠSUCCESS _ SYSTEM ( R . string . tools _ installer _ success _ system , Ġfalse ), ĊĠĠĠĠĠĠĠ ĠINITIAL _ MAG IS K ( R . string . tools _ installer _ initial _ mag isk , Ġtrue ), ĊĠĠĠĠĠĠĠ ĠSUCCESS _ MAG IS K ( R . string . tools _ installer _ success _ mag isk , Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ