package Ġcom . va ud ib ert . can id rive . ui . fragment Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . va ud ib ert . can id rive . Keyboard Utils Ċ import Ġcom . va ud ib ert . can id rive . R Ċ import Ġcom . va ud ib ert . can id rive . domain . dr ink . Ingest ed Dr ink Ċ import Ġcom . va ud ib ert . can id rive . ui . Can ID rive Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ preset .* Ċ import Ġkotlinx . android . synt hetic . main . linear _ content _ add _ dr ink _ custom _ pick ers .* Ċ import Ġjava . text . Decimal Format Ċ Ċ class ĠEdit Preset Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġvolume Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġdegree Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġprivate Ġval Ġdouble Format Ġ: ĠDecimal Format Ġ= ĠDecimal Format (" 0 .# ") ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ add _ preset , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdrink Repository Ġ= ĠCan ID rive . instance . main Repository . dr ink Repository ĊĠĠĠĠĠĠĠ Ġval Ġpreset Service Ġ= Ġdrink Repository . preset Service ĊĠĠĠĠĠĠĠ Ġval Ġselected Preset Ġ= Ġpreset Service . selected Preset ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selected Preset Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ= Ġselected Preset . volume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegree Ġ= Ġselected Preset . degree ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text New Pre setName . setText ( selected Preset . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton Validate New Preset . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit Text New Pre setName . text . toString (). isBlank ()) Ġreturn @ setOnClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Preset Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreset Service . update Selected Preset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text New Pre setName . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdegree ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreset Service . add New Preset ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text New Pre setName . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdegree ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Utils . hide Keyboard ( this . activity Ġas ĠActivity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEdit Preset Fragment Directions . action Add Preset Fragment ToAdd Dr ink Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Volume Picker () ĊĊĠĠĠĠĠĠĠ Ġset Degree Picker () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġset Degree Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdegree Labels Ġ= ĠIn gest ed Dr ink . degrees . map Ġ{ Ġdeg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ double Format . format ( deg )} Ġ% " ĊĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġnumber Picker Degree . min Value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġnumber Picker Degree . max Value Ġ= Ġdegree Labels . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġnumber Picker Degree . display ed Values Ġ= Ġdegree Labels ĊĠĠĠĠĠĠĠ Ġval ĠindexOf Degree Ġ= ĠIn gest ed Dr ink . degrees . indexOf ( degree ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Degree Ġ= Ġif Ġ( indexOf Degree Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegree Labels . size Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Degree ĊĠĠĠĠĠĠĠ Ġdegree Ġ= ĠIn gest ed Dr ink . degrees [ start Degree ] ĊĠĠĠĠĠĠĠ Ġnumber Picker Degree . value Ġ= Ġstart Degree ĊĠĠĠĠĠĠĠ Ġnumber Picker Degree . setOn ValueChanged Listener Ġ{ Ġ_, Ġ_, ĠnewVal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdegree Ġ= ĠIn gest ed Dr ink . degrees [ new Val ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Volume Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvolume Labels Ġ= ĠIn gest ed Dr ink . volumes . map Ġ{ Ġvol Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vol Ġ< Ġ 1 0 0 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ double Format . format ( vol Ġ/ Ġ 1 0 . 0 )} Ġc L " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ double Format . format ( vol Ġ/ Ġ 1 0 0 0 . 0 )} ĠL " ĊĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġnumber Picker Volume . min Value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġnumber Picker Volume . max Value Ġ= Ġvolume Labels . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġnumber Picker Volume . display ed Values Ġ= Ġvolume Labels ĊĠĠĠĠĠĠĠ Ġval ĠindexOf Volume Ġ= ĠIn gest ed Dr ink . volumes . indexOf ( volume ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Volume Ġ= Ġif Ġ( indexOf Volume Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Labels . size Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Volume ĊĠĠĠĠĠĠĠ Ġnumber Picker Volume . value Ġ= Ġstart Volume ĊĠĠĠĠĠĠĠ Ġvolume Ġ= ĠIn gest ed Dr ink . volumes [ start Volume ] ĊĠĠĠĠĠĠĠ Ġnumber Picker Volume . setOn ValueChanged Listener Ġ{ Ġ_, Ġ_, ĠnewVal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ= ĠIn gest ed Dr ink . volumes [ new Val ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ