/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 2 0 ĠD JI Ċ Ġ* Ċ Ġ* Ġ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 Ġd ji . ux . beta . core . panel . list item . nov ic em ode Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . annotation . Style Res Ċ import Ġandroidx . core . content . res . use Ċ import Ġd ji . log . DJ I Log Ċ import Ġd ji . third party . io . reactivex . Flow able Ċ import Ġd ji . ux . beta . core . R Ċ import Ġd ji . ux . beta . core . base . DJ IS DK Model Ċ import Ġd ji . ux . beta . core . base . Scheduler Provider Ċ import Ġd ji . ux . beta . core . base . UX SDK Error Ċ import Ġd ji . ux . beta . core . base . Widget Size Description Ċ import Ġd ji . ux . beta . core . base . panel . list item . ListItem Switch Widget Ċ import Ġd ji . ux . beta . core . base . panel . list item . ListItem Switch Widget . UIState .* Ċ import Ġd ji . ux . beta . core . communication . Observable InMemory Key ed Store Ċ import Ġd ji . ux . beta . core . extension .* Ċ import Ġd ji . ux . beta . core . panel . list item . nov ic em ode . No vice Mode ListItem Widget . Dialog Type . No vice Mode Disable Confirmation Ċ import Ġd ji . ux . beta . core . panel . list item . nov ic em ode . No vice Mode ListItem Widget . Dialog Type . No vice Mode Enabled Ċ import Ġd ji . ux . beta . core . panel . list item . nov ic em ode . No vice Mode ListItem Widget . Model State Ċ import Ġd ji . ux . beta . core . panel . list item . nov ic em ode . No vice Mode ListItem Widget . Model State . No vice Mode State Updated Ċ import Ġd ji . ux . beta . core . panel . list item . nov ic em ode . No vice Mode ListItem Widget . Model State . Product Connected Ċ import Ġd ji . ux . beta . core . panel . list item . nov ic em ode . No vice Mode ListItem Widget Model . No vice Mode State Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" No vice Mode ListItem W " Ċ Ċ /** Ċ Ġ* ĠWidget Ġshows Ġthe Ġcurrent Ġstatus Ġof Ġthe ĠNo vice ĠMode , Ġalso Ġknown Ċ Ġ* Ġas ĠBegin ner ĠMode . Ċ Ġ* ĠIt Ġalso Ġprovides Ġan Ġoption Ġto Ġswitch Ġbetween ĠON / OFF Ġstate Ċ Ġ*/ Ċ open Ġclass ĠNo vice Mode ListItem Widget Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdef Style Arr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠListItem Switch Widget < Model State >( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Arr , ĊĠĠĠĠĠĠĠ ĠR . style . UX SDK No vice Mode ListItem Ċ ) Ġ{ ĊĊĠĠĠ Ġ// region ĠFields ĊĠĠĠ Ġprivate Ġval Ġwidget Model : ĠNo vice Mode ListItem Widget Model Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠNo vice Mode ListItem Widget Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD J IS DK Model . getInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable InMemory Key ed Store . getInstance ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIcon Ġfor Ġconfirmation Ġdialog ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġconfirmation Dialog Icon : ĠDrawable ? Ġ= Ġget Drawable ( R . drawable . ux sdk _ ic _ alert _ yellow ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIcon Ġfor Ġsuccess Ġdialog ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsuccess Dialog Icon : ĠDrawable ? Ġ= Ġget Drawable ( R . drawable . ux sdk _ ic _ alert _ good ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTheme Ġfor Ġthe Ġdialog s Ġshown Ġin Ġthe Ġwidget ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Style Res ĊĠĠĠ Ġvar Ġdialog Theme : ĠInt Ġ= ĠR . style . UX SDK Dialog Theme ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠConstructor ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Attributes ( context , Ġattrs ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠLifecycle ĊĠĠĠ Ġoverride Ġfun Ġreact To Model Changes () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Reaction ( widget Model . product Connection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Scheduler Provider . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġwidget State Data Processor . onNext ( Product Connected ( it )) Ġ}) ĊĠĠĠĠĠĠĠ Ġadd Reaction ( widget Model . no vice Mode State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Scheduler Provider . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidget State Data Processor . onNext ( No vice Mode State Updated ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġif Ġ(! isIn Edit Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidget Model . setup () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isIn Edit Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidget Model . cleanup () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Switch Toggle ( isChecked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle No vice Mode ( isChecked ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow No vice Mode Confirmation Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠRe actions Ġto ĠModel ĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( no vice Mode State : ĠNo vice Mode State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( no vice Mode State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNo vice Mode State . Product Disconnected Ġ-> Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNo vice Mode State . Enabled Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNo vice Mode State . Disabled Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate State ( no vice Mode Enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset Checked ( no vice Mode Enabled ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠHelpers ĊĠĠĠ Ġprivate Ġfun Ġtoggle No vice Mode ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( widget Model . toggle No vice Mode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Scheduler Provider . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Enabled Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD JI Log . d ( TAG , Ġ" Ġtoggle Ġsuccess Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠUX SDK Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD JI Log . e ( TAG , Ġit . d ji Error . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Switch State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow No vice Mode Confirmation Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Listener Ġ= ĠDialog Interface . OnClickListener Ġ{ Ġdialog Interface , Ġbutton Id : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Id Ġ== ĠDialog Interface . BUTTON _ POSITIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle No vice Mode ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Update State Processor . onNext ( Dialog Action Confirmed ( No vice Mode Disable Confirmation )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Update State Processor . onNext ( Dialog Action Canceled ( No vice Mode Disable Confirmation )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Switch State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Interface . dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog Dismiss Listener Ġ= ĠDialog Interface . On Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Update State Processor . onNext ( Dialog Dis missed ( No vice Mode Disable Confirmation )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshow Confirmation Dialog ( dialog Theme Ġ= Ġdialog Theme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġconfirmation Dialog Icon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . ux sdk _ list _ item _ no vice _ mode ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠgetString ( R . string . ux sdk _ no vice _ mode _ disabled _ message ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ClickListener Ġ= Ġdialog Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Dismiss Listener Ġ= Ġdialog Dismiss Listener ) ĊĠĠĠĠĠĠĠ Ġui Update State Processor . onNext ( Dialog Displayed ( No vice Mode Disable Confirmation )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Enabled Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Dismiss Listener Ġ= ĠDialog Interface . On Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Update State Processor . onNext ( Dialog Dis missed ( No vice Mode Enabled )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshow AlertDialog ( dialog Theme Ġ= Ġdialog Theme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġsuccess Dialog Icon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠgetString ( R . string . ux sdk _ list _ item _ no vice _ mode ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠgetString ( R . string . ux sdk _ no vice _ mode _ enabled _ message ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Dismiss Listener Ġ= Ġdialog Dismiss Listener ) ĊĠĠĠĠĠĠĠ Ġui Update State Processor . onNext ( Dialog Displayed ( No vice Mode Enabled )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Switch State () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( widget Model . no vice Mode State . first Or Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Scheduler Provider . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD JI Log . e ( TAG , Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠCustom ization ĊĠĠĠ Ġoverride Ġfun Ġget Ide al Dimension Ratio String (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġwidget Size Description : ĠWidget Size Description Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWidget Size Description ( Widget Size Description . Size Type . OTHER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Dimension Ġ= ĠWidget Size Description . Dimension . EXPAND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Dimension Ġ= ĠWidget Size Description . Dimension . WRAP ) ĊĊĠĠĠ Ġ@ Suppress Lint (" Re cycle ") ĊĠĠĠ Ġprivate Ġfun Ġinit Attributes ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . No vice Mode ListItem Widget , Ġ 0 , Ġdefault Style ). use Ġ{ Ġtyped Array Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . get Drawable And Use ( R . style able . No vice Mode ListItem Widget _ ux sdk _ list _ item _ confirmation _ dialog _ icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmation Dialog Icon Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . get Drawable And Use ( R . style able . No vice Mode ListItem Widget _ ux sdk _ list _ item _ success _ dialog _ icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Dialog Icon Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtyped Array . getResource Id And Use ( R . style able . No vice Mode ListItem Widget _ ux sdk _ list _ item _ dialog _ theme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Theme Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠHooks ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ ListItem Switch Widget . UIState ] Ġupdates ĊĠĠĠĠ Ġ* ĠThe Ġinfo Ġparameter Ġis Ġinstance Ġof Ġ[ Dialog Type ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget UIState Updates (): ĠFlow able < UIState > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġui Update State Processor . on Back pressure Buffer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ Model State ] Ġupdates ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ SuppressWarnings ĊĠĠĠ Ġoverride Ġfun Ġget Widget State Update (): ĠFlow able < Model State > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Widget State Update () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNo vice Ġmode Ġdialog Ġidentifiers ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsealed Ġclass ĠDialog Type Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDialog Ġshown Ġwhen Ġno vice Ġmode Ġis Ġenabled Ġsuccessfully ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġobject ĠNo vice Mode Enabled Ġ: ĠDialog Type () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDialog Ġshown Ġwhen Ġswitching Ġfrom Ġenabled Ġto Ġdisabled ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġobject ĠNo vice Mode Disable Confirmation Ġ: ĠDialog Type () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClass Ġdefines Ġwidget Ġstate Ġupdates ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsealed Ġclass ĠModel State Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠProduct Ġconnection Ġupdate ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠProduct Connected ( val Ġis Connected : ĠBoolean ) Ġ: ĠModel State () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCurrent Ġno vice Ġmode Ġstate ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠNo vice Mode State Updated ( val Ġno vice Mode State : ĠNo vice Mode State ) Ġ: ĠModel State () ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ }