package Ġcom . k yle cor ry . trail _ sense . calibration . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . preference .* Ċ import Ġcom . k yle cor ry . trail _ sense . R Ċ import Ġcom . k yle cor ry . trail _ sense . shared .* Ċ import Ġcom . k yle cor ry . trail _ sense . shared . sensors .* Ċ import Ġcom . k yle cor ry . trail _ sense . weather . domain .* Ċ import Ġcom . k yle cor ry . tr ails ense core . domain . units . Pressure Units Ċ import Ġcom . k yle cor ry . tr ails ense core . domain . units . Temperature Units Ċ import Ġcom . k yle cor ry . tr ails ense core . domain . weather . Pressure Alt itude Reading Ċ import Ġcom . k yle cor ry . tr ails ense core . infrastructure . sensors . al time ter . I Al time ter Ċ import Ġcom . k yle cor ry . tr ails ense core . infrastructure . sensors . bar ometer . I Bar ometer Ċ import Ġcom . k yle cor ry . tr ails ense core . infrastructure . sensors . temperature . IT her mo meter Ċ import Ġcom . k yle cor ry . tr ails ense core . infrastructure . time . Throttle Ċ import Ġjava . time . Instant Ċ import Ġkotlin . math . round ToInt Ċ Ċ class ĠCal ibrate Bar ometer Fragment Ġ: ĠPreference Fragment Compat () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprefs : ĠUser Preferences ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsensor Service : ĠSensor Service ĊĠĠĠ Ġprivate Ġval Ġthrottle Ġ= ĠTh rottle ( 2 0 ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpressure Txt : ĠPreference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtemperature Txt : ĠPreference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsea Level Switch : ĠSwitch Preference Compat ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġc Seek Bar : ĠSeek Bar Preference ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf Seek Bar : ĠSeek Bar Preference ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbar ometer : ĠI Bar ometer ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġal time ter : ĠI Al time ter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġther mo meter : ĠI Th er mo meter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweather Service : ĠWeather Service ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġunits : ĠPress ure Units ĊĠĠĠ Ġprivate Ġval Ġformat Service Ġby Ġlazy Ġ{ ĠFormat Service ( require Context ()) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Preferences From Resource ( R . xml . bar ometer _ calibration , Ġroot Key ) ĊĊĠĠĠĠĠĠĠ Ġprefs Ġ= ĠUser Preferences ( require Context ()) ĊĠĠĠĠĠĠĠ Ġsensor Service Ġ= ĠSensor Service ( require Context ()) ĊĠĠĠĠĠĠĠ Ġunits Ġ= Ġprefs . pressure Units ĊĊĠĠĠĠĠĠĠ Ġbar ometer Ġ= Ġsensor Service . get Bar ometer () ĊĠĠĠĠĠĠĠ Ġal time ter Ġ= Ġsensor Service . get Al time ter () ĊĠĠĠĠĠĠĠ Ġther mo meter Ġ= Ġsensor Service . get Th er mo meter () ĊĊĠĠĠĠĠĠĠ Ġbind Preferences () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Weather Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġweather Service Ġ= ĠWeather Service ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . weather . storm Alert Threshold , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . weather . daily Forecast Change Threshold , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . weather . hourly Forecast Change Threshold , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . weather . sea Level Factor In R apid Changes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . weather . sea Level Factor In Temp ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġpressure Txt Ġ= Ġfind Preference ( getString ( R . string . pref _ holder _ pressure )) !! ĊĠĠĠĠĠĠĠ Ġsea Level Switch Ġ= Ġfind Preference ( getString ( R . string . pref _ use _ sea _ level _ pressure )) !! ĊĠĠĠĠĠĠĠ Ġtemperature Txt Ġ= Ġfind Preference ( getString ( R . string . pref _ temperature _ holder )) !! ĊĠĠĠĠĠĠĠ Ġc Seek Bar Ġ= Ġfind Preference ( getString ( R . string . pref _ temperature _ adjust ment _ c )) !! ĊĠĠĠĠĠĠĠ Ġf Seek Bar Ġ= Ġfind Preference ( getString ( R . string . pref _ temperature _ adjust ment _ f )) !! ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . temperature Units Ġ== ĠTemperature Units . C ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Seek Bar . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Seek Bar . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Seek Bar . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Seek Bar . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( f Seek Bar . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Seek Bar . setOn Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġ( newValue Ġas ĠInt ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . weather . temperature Adjustment Ġ= Ġ( temp Ġ* Ġ 5 Ġ/ Ġ 9 f ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( c Seek Bar . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Seek Bar . setOn Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġ( newValue Ġas ĠInt ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference Manager . shared Preferences . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . pref _ temperature _ adjust ment _ f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( temp Ġ* Ġ 9 Ġ/ Ġ 5 f ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsea Level Switch . setOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! al time ter . has Valid Reading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġal time ter . start ( this :: update Alt itude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Weather Service () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġrefresh Weather Service () ĊĠĠĠĠĠĠĠ Ġstart Bar ometer () ĊĠĠĠĠĠĠĠ Ġther mo meter . start ( this :: update Temperature ) ĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . weather . use Sea Level Pressure Ġ&& Ġ! al time ter . has Valid Reading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġal time ter . start ( this :: update Alt itude ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġstop Bar ometer () ĊĠĠĠĠĠĠĠ Ġal time ter . stop ( this :: update Alt itude ) ĊĠĠĠĠĠĠĠ Ġther mo meter . stop ( this :: update Temperature ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Alt itude (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Temperature (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Bar ometer () Ġ{ ĊĠĠĠĠĠĠĠ Ġbar ometer . start ( this :: on Pressure Update ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Bar ometer () Ġ{ ĊĠĠĠĠĠĠĠ Ġbar ometer . stop ( this :: on Pressure Update ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠonPress ure Update (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( throttle . is Th rott led ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsea Level Pressure Ġ= Ġprefs . weather . use Sea Level Pressure ĊĊĠĠĠĠĠĠĠ Ġval Ġpressure Ġ= Ġif Ġ( sea Level Pressure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPress ure Alt itude Reading ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar ometer . pressure , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġal time ter . altitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġther mo meter . temperature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). sea Level ( prefs . weather . sea Level Factor In Temp ). value ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar ometer . pressure ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpressure Txt . summary Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat Service . format Pressure ( Pressure Unit Utils . convert ( pressure , Ġunits ), Ġunits ) ĊĠĠĠĠĠĠĠ Ġtemperature Txt . summary Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat Service . format Temperature ( ther mo meter . temperature , Ġprefs . temperature Units ) ĊĠĠĠ Ġ} ĊĊ Ċ }