/* Ċ Ġ* Ġ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 . travel mode Ċ Ċ import Ġd ji . common . flight controller . Landing Gear Mode Ċ import Ġd ji . key sdk . Flight Controller Key Ċ import Ġio . reactivex . rx java 3 . functions . Consumer Ċ import Ġio . reactivex . rx java 3 . core . Flow able Ċ import Ġd ji . ux . beta . core . base . DJ IS DK Model Ċ import Ġd ji . ux . beta . core . base . Widget Model Ċ import Ġd ji . ux . beta . core . communication . Observable InMemory Key ed Store Ċ import Ġd ji . ux . beta . core . util . Data Processor Ċ import Ġio . reactivex . rx java 3 . core . Comp letable Ċ Ċ /** Ċ Ġ* ĠWidget ĠModel Ġfor Ġthe Ġ[ Travel Mode ListItem Widget ] Ġused Ġto Ġdefine Ċ Ġ* Ġthe Ġunderlying Ġlogic Ġand Ġcommunication Ċ Ġ*/ Ċ class ĠTr avel Mode ListItem Widget Model ( ĊĠĠĠĠĠĠĠ Ġd ji Sdk Model : ĠD J IS DK Model , ĊĠĠĠĠĠĠĠ Ġkey ed Store : ĠObservable InMemory Key ed Store Ċ ) Ġ: ĠWidget Model ( d ji Sdk Model , Ġkey ed Store ) Ġ{ ĊĊĠĠĠ Ġ// region ĠFields ĊĊĠĠĠ Ġprivate Ġval Ġtravel Mode State Processor : ĠData Processor < Travel Mode State > Ġ= ĠData Processor . create ( Travel Mode State . Product Disconnected ) ĊĊĠĠĠ Ġprivate Ġval Ġtravel Mode Mov able Processor : ĠData Processor < Boolean > Ġ= ĠData Processor . create ( false ) ĊĊĠĠĠ Ġprivate Ġval Ġlanding Gear Mode Processor : ĠData Processor < Landing Gear Mode > Ġ= ĠData Processor . create ( Landing Gear Mode . UNKNOWN ) ĊĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠData ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġtravel Ġmode Ġstate Ġprocessor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtravel Mode State : ĠFlow able < Travel Mode State > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtravel Mode State Processor . to Flow able () ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠLifecycle ĊĠĠĠ Ġoverride Ġfun Ġin Setup () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlanding Gear Mov able Key Ġ= ĠFlight Controller Key . create ( Flight Controller Key . IS _ LAND ING _ GE AR _ MOV ABLE ) ĊĠĠĠĠĠĠĠ Ġbind Data Processor ( landing Gear Mov able Key , Ġtravel Mode Mov able Processor ) ĊĠĠĠĠĠĠĠ Ġval Ġlanding Gear Mode Key Ġ= ĠFlight Controller Key . create ( Flight Controller Key . LAND ING _ GE AR _ MODE ) ĊĠĠĠĠĠĠĠ Ġbind Data Processor ( landing Gear Mode Key , Ġlanding Gear Mode Processor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġin Cleanup () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNo ĠClean Ġup ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate States () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( product Connection Processor . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( travel Mode Mov able Processor . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( landing Gear Mode Processor . value Ġ== ĠLand ing Gear Mode . TRANSPORT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Mode State Processor . onNext ( Travel Mode State . Active ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Mode State Processor . onNext ( Travel Mode State . Inactive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Mode State Processor . onNext ( Travel Mode State . NotSupported ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Mode State Processor . onNext ( Travel Mode State . Product Disconnected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnter Ġtravel Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenter Travel Mode (): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenter Transport Mode Key Ġ= ĠFlight Controller Key . create ( Flight Controller Key . ENTER _ TRANSPORT _ MODE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġd ji Sdk Model . perform Action ( enter Transport Mode Key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExit Ġtravel Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexit Travel Mode (): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenter Transport Mode Key Ġ= ĠFlight Controller Key . create ( Flight Controller Key . EXIT _ TRANSPORT _ MODE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġd ji Sdk Model . perform Action ( enter Transport Mode Key ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClass Ġto Ġrepresent Ġstates Ġof Ġtravel Ġmode Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsealed Ġclass ĠTr avel Mode State Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġproduct Ġis Ġdisconnected ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġobject ĠProduct Disconnected Ġ: ĠTr avel Mode State () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġproduct Ġis Ġconnected Ġand Ġtravel Ġmode Ġis Ġnot Ġsupported ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġobject ĠNot Supported Ġ: ĠTr avel Mode State () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġproduct Ġis Ġconnected Ġand Ġlanding Ġge ar Ġis Ġin Ġtransport Ġmode ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġobject ĠActive Ġ: ĠTr avel Mode State () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġproduct Ġis Ġconnected Ġand Ġlanding Ġge ar Ġis Ġnot Ġin Ġtransport Ġmode ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġobject ĠIn active Ġ: ĠTr avel Mode State () ĊĠĠĠ Ġ} Ċ } Ċ // endregion