package Ġio . homeassistant . comp anion . android . settings Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . preference . EditText Preference Ċ import Ġandroidx . preference . Preference Ċ import Ġandroidx . preference . Preference Fragment Compat Ċ import Ġandroidx . preference . Switch Preference Ċ import Ġio . homeassistant . comp anion . android . Build Config Ċ import Ġio . homeassistant . comp anion . android . D agger Presenter Component Ċ import Ġio . homeassistant . comp anion . android . Presenter Module Ċ import Ġio . homeassistant . comp anion . android . R Ċ import Ġio . homeassistant . comp anion . android . common . d agger . Graph Component Accessor Ċ import Ġio . homeassistant . comp anion . android . sensors . Sensor Worker Ċ import Ġio . homeassistant . comp anion . android . util . Permission Manager Ċ import Ġjavax . inject . Inject Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ Ċ class ĠSettings Fragment Ġ: ĠPreference Fragment Compat (), ĠSettings View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠSettings Presenter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠD agger Presenter Component ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. app Component (( activity ?. application Ġas ĠGraph Component Accessor ). app Component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. presenter Module ( Presenter Module ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġpreference Manager . preference DataStore Ġ= Ġpresenter . get Preference DataStore () ĊĊĠĠĠĠĠĠĠ Ġset Preferences From Resource ( R . xml . preferences , Ġroot Key ) ĊĊĠĠĠĠĠĠĠ Ġval ĠonChange Url Validator Ġ= ĠPreference . On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisValid Ġ= ĠnewValue . toString (). isBlank () Ġ|| ĠnewValue . toString (). to Http Url OrNull () Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isValid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . url _ invalid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . url _ parse _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfind Preference < EditText Preference >(" connection _ internal ") ?. on Preference ChangeListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Url Validator ĊĊĠĠĠĠĠĠĠ Ġfind Preference < EditText Preference >(" connection _ external ") ?. on Preference ChangeListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonChange Url Validator ĊĊĠĠĠĠĠĠĠ Ġfind Preference < Preference >(" version ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . summary Ġ= ĠBuild Config . VERSION _ NAME ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpresenter . onCreate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Location Setting Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Permission Manager . has Location Permissions ( context !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Manager . request Location Permissions ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠPermission Manager . restart Location Tracking ( context !! , Ġactivity !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisable Internal Connection () Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Preference < EditText Preference >(" connection _ internal ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Internal Connection () Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Preference < EditText Preference >(" connection _ internal ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrestart Sensor Worker () Ġ{ ĊĠĠĠĠĠĠĠ ĠSensor Worker . start ( context !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Permission Manager . validate Location Permissions ( request Code , Ġpermissions , Ġgrant Results )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Manager . restart Location Tracking ( context !! , Ġactivity !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġdon 't Ġhave Ġpermissions , Ġdon 't Ġlet Ġthem Ġin ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Preference < Switch Preference >(" location _ zone ") !!. isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Preference < Switch Preference >(" location _ background ") !!. isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠSettings Fragment () ĊĠĠĠ Ġ} Ċ } Ċ