package Ġcom . gar on . m vi Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġcom . gar on . m vi . common . Initial Int ention Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ import Ġtim ber . log . Tim ber Ċ Ċ sealed Ġclass ĠV eh icles Intent Ġ{ ĊĊĠĠĠ Ġobject ĠInitial Intent Ġ: ĠV eh icles Intent (), ĠInitial Int ention ĊĠĠĠ Ġobject ĠLast Int ention Ġ: ĠV eh icles Intent () ĊĠĠĠ Ġobject ĠRefresh Intent Ġ: ĠV eh icles Intent () ĊĠĠĠ Ġobject ĠLoad Next Intent Ġ: ĠV eh icles Intent () ĊĠĠĠ Ġdata Ġclass ĠView Vehicle Intent ( val Ġvehicle ViewModel : ĠVehicle ViewModel ) Ġ: ĠV eh icles Intent () Ċ } Ċ Ċ sealed Ġclass ĠV eh icles Action Ġ{ ĊĊĠĠĠ Ġobject ĠLoad First Batch Ġ: ĠV eh icles Action () ĊĠĠĠ Ġobject ĠLast Action Ġ: ĠV eh icles Action () ĊĠĠĠ Ġobject ĠRefresh Action Ġ: ĠV eh icles Action () ĊĠĠĠ Ġobject ĠLoad Next Batch Ġ: ĠV eh icles Action () ĊĠĠĠ Ġdata Ġclass ĠView Vehicle Action ( val Ġvehicle ViewModel : ĠVehicle ViewModel ) Ġ: ĠV eh icles Action () Ċ } Ċ Ċ sealed Ġclass ĠV eh icles Result Ġ{ ĊĊĠĠĠ Ġobject ĠIn Progress Ġ: ĠV eh icles Result () ĊĊĠĠĠ Ġdata Ġclass ĠSuccess ( ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠList < Vehicle ViewModel >, ĊĠĠĠĠĠĠĠ Ġval Ġis Ref reshed : ĠBoolean ĊĠĠĠ Ġ) Ġ: ĠV eh icles Result () ĊĊĠĠĠ Ġobject ĠLast Result Ġ: ĠV eh icles Result () ĊĊĠĠĠ Ġobject ĠError Ġ: ĠV eh icles Result () Ċ } Ċ Ċ data Ġclass ĠV eh icles State ( ĊĠĠĠ Ġval ĠisLoading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġval Ġis Ref reshed : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġval Ġlist : ĠList < Vehicle ViewModel > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġis Error : ĠBoolean Ġ= Ġfalse Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdefault () Ġ= ĠV eh icles State () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠVehicle ViewModel ( ĊĠĠĠ Ġval Ġregistration Country : ĠString , ĊĠĠĠ Ġval Ġregistration Number : ĠString , ĊĠĠĠ Ġval Ġcolor : ĠColor , ĊĠĠĠ Ġval Ġtype : ĠType Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġenum Ġclass ĠType ( val Ġtype : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCAR (" Car "), ĠTR U CK (" Tr uck "), ĠR V (" RV "); ĊĊĠĠĠĠĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom String ( value : ĠString ): ĠType Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( rel : ĠType Ġin Ġvalues ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rel . type Ġ== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Failed Ġto Ġfind Ġthe Ġgiven Ġvehicle Ġtype ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠColor ( val Ġcolor : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBL UE (" Blue "), ĠWH ITE (" White "), ĠRED (" Red "), ĠBLACK (" Black "), ĠGREEN (" Green "); ĊĊĠĠĠĠĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom String ( value : ĠString ): ĠColor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( rel : ĠColor Ġin ĠColor . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rel . color Ġ== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Failed Ġto Ġfind Ġthe Ġvehicle Ġcolor .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠColor . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ