package Ġcom . k yle cor ry . trail _ sense . navigation . domain Ċ Ċ import Ġcom . k yle cor ry . trail _ sense . shared . User Preferences Ċ import Ġkotlin . math . round Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠA Ġhelper Ġobject Ġfor Ġcoordinate Ġrelated Ġmath Ċ Ġ*/ Ċ object ĠLocation Math Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġmeters Ġto Ġfeet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconvert Met ers To Fe et ( meters : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmeters Ġ* Ġ 3 . 2 8 0 8 4 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġfeet Ġto Ġm iles ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconvert Fe et To M iles ( fe et : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeet Ġ/ Ġ 5 2 8 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠconvertTo Base Unit ( meters : ĠFloat , Ġunits : ĠUser Preferences . Distance Units ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( units Ġ== ĠUser Preferences . Distance Units . Fe et ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Met ers To Fe et ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeters ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠconvertTo Base Unit ( meters : ĠFloat , Ġunits : ĠString ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( units Ġ== Ġ" fe et _ m iles "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Met ers To Fe et ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeters ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdistance To Readable String ( meters : ĠFloat , Ġunits : ĠUser Preferences . Distance Units ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( units Ġ== ĠUser Preferences . Distance Units . Fe et ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeet Threshold Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeet Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Met ers To Fe et ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fe et Ġ>= Ġfeet Threshold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġm iles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ round ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Fe et To M iles ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ* Ġ 1 0 0 f ) Ġ/ Ġ 1 0 0 f } Ġmi " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġfeet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ fe et . round ToInt ()} Ġft " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeter Threshold Ġ= Ġ 9 9 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( meters Ġ>= Ġmeter Threshold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġkm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkm Ġ= Ġmeters Ġ/ Ġ 1 0 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ round ( Ġkm Ġ* Ġ 1 0 0 f ) Ġ/ Ġ 1 0 0 f } Ġkm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġmeters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ meters . round ToInt ()} Ġm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġa Ġdistance Ġin Ġmeters Ġto Ġa Ġreadable Ġstring Ġin Ġthe Ġgiven Ġunit Ġsystem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdistance To Readable String ( meters : ĠFloat , Ġunits : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( units Ġ== Ġ" fe et _ m iles "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeet Threshold Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeet Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Met ers To Fe et ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fe et Ġ>= Ġfeet Threshold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġm iles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ round ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Fe et To M iles ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ* Ġ 1 0 0 f ) Ġ/ Ġ 1 0 0 f } Ġmi " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġfeet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ fe et . round ToInt ()} Ġft " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeter Threshold Ġ= Ġ 9 9 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( meters Ġ>= Ġmeter Threshold ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġkm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkm Ġ= Ġmeters Ġ/ Ġ 1 0 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ round ( Ġkm Ġ* Ġ 1 0 0 f ) Ġ/ Ġ 1 0 0 f } Ġkm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġas Ġmeters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ meters . round ToInt ()} Ġm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }