package Ġcom . w ada 8 1 1 . rx view model . properties Ċ Ċ import Ġandroid . databinding . Observable Field Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Subject Ċ import Ġjava . util .* Ċ Ċ open Ġclass ĠReadOnly Rx Property < T >( source : ĠObservable < T >, Ġinitial Value : ĠT , Ġmode : ĠEnum Set < Rx Property Mode > Ġ= ĠRx Property Mode . DEFAULT ) Ġ: ĠObservable Field < T >( initial Value ), ĠDis posable Ġ{ ĊĠĠĠ Ġopen Ġvar Ġvalue : ĠT Ġ= Ġinitial Value ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsuper . get () ĊĠĠĠĠĠĠĠ Ġprotected Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . set ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . onNext ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! is Distinct Until Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . onNext ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Deprecated (" For ĠData - Binding ", ĠReplace With (" value "), ĠDeprec ation Level . HIDDEN ) ĊĠĠĠ Ġoverride Ġfun Ġget (): ĠT Ġ= Ġvalue ĊĠĠĠĠĊĠĠĠ Ġ@ Deprecated (" For ĠData - Binding ", ĠReplace With (" this . value Ġ= Ġvalue "), ĠDeprec ation Level . HIDDEN ) ĊĠĠĠ Ġoverride Ġfun Ġset ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" DO ĠNOT ĠUSE ĠReadOnly Rx Property Ġfor Ġtwo - way Ġbinding , ĠPlease Ġuse ĠRx Property Ġinstead .") ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprotected Ġval Ġis Distinct Until Changed : ĠBoolean Ġ= Ġmode . contains ( Rx Property Mode . DIST INCT _ UNT IL _ CHANGED ) ĊĠĠĠ Ġprotected Ġval Ġsubject : ĠSubject < T > Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( mode . contains ( Rx Property Mode . RAI SE _ LATE ST _ VALUE _ ON _ SUB SCR IBE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBehavior Subject . create Default ( initial Value ). to Serialized () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Subject . create < T >(). to Serialized () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġsource Disposable : ĠDis posable Ġ= Ġsource . subscribe ({ Ġvalue Ġ= Ġit Ġ}, Ġ{ Ġsubject . onError ( it ) Ġ}, Ġ{ Ġsubject . onComplete () Ġ}) ĊĠĠĠĠĊĠĠĠ Ġfun Ġto Observable (): ĠObservable < T > Ġ= Ġsubject ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġis Disposed (): ĠBoolean Ġ= Ġsource Disposable . is Disposed ĊĠĠĠ Ġoverride Ġfun Ġdispose (): ĠUnit Ġ= Ġsource Disposable . dispose () Ċ } Ċ Ċ fun Ġ< T > ĠObservable < T >. to ReadOnly Rx Property ( initial Value : ĠT , Ġmode : ĠEnum Set < Rx Property Mode > Ġ= ĠRx Property Mode . DEFAULT ) Ġ= ĠReadOnly Rx Property ( this , Ġinitial Value , Ġmode )