package Ġcom . h xb reak . animal cross ing tools . ui . settings Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . google . android . material . transition . Material Shared Axis Ċ import Ġcom . h xb reak . animal cross ing tools . R Ċ import Ġcom . h xb reak . animal cross ing tools . Runner Type Ċ import Ġcom . h xb reak . animal cross ing tools . combined LiveData Ċ import Ġcom . h xb reak . animal cross ing tools . data . prefs . Preference Storage Ċ import Ġcom . h xb reak . animal cross ing tools . i 1 8 n . Resource Language Setting Dialog Fragment Ċ import Ġcom . h xb reak . animal cross ing tools . theme . Theme Setting Dialog Fragment Ċ import Ġcom . h xb reak . animal cross ing tools . ui . settings . prefs . ui . H emis phere Choose Dialog Fragment Ċ import Ġcom . h xb reak . animal cross ing tools . ui . settings . prefs . ui . Time Zero Choose Dialog Fragment Ċ import Ġcom . h xb reak . animal cross ing tools . ui . settings . prefs . ui . to Localization String Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ import Ġkotlinx . android . synt hetic . main . fragment _ settings .* Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . isActive Ċ import Ġjava . time .* Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠSettings Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigator Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpreference : ĠPreference Storage ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġformatter : ĠDateTime Formatter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġforward Ġ= ĠMaterial Shared Axis ( Material Shared Axis . X , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġenter Transition Ġ= Ġforward ĊĊĠĠĠĠĠĠĠ Ġval Ġbackward Ġ= ĠMaterial Shared Axis ( Material Shared Axis . X , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Transition Ġ= Ġbackward ĊĊĠĠĠĠĠĠĠ Ġre enter Transition Ġ= Ġbackward ĊĊĠĠĠĠĠĠĠ Ġexit Transition Ġ= Ġforward ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ settings , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠAppCompatActivity ). set Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). on Back Pressed Dispatcher . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsettings _ choose _ theme . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Setting Dialog Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( child FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsettings _ choose _ resource _ language . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource Language Setting Dialog Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( child FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsettings _ choose _ is land _ he mis phere . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH emis phere Choose Dialog Fragment . newInstance (). show ( child FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsettings _ choose _ timezone . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Zero Choose Dialog Fragment . newInstance (). show ( child FragmentManager , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsettings _ about _ software . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . navigate ( Settings Fragment Directions . action Global Flutter Fragment ("/ about ", Ġcached Engine Id Ġ= Ġ" only ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpreference . observable Locale . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocale _ value . text Ġ= Ġit . get DisplayName ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpreference . observable H emis phere . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhe mis phere . text Ġ= Ġit . to Localization String ( resources ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ: ĠLive Data < Unit > Ġ= Ġcombined LiveData ( view Lifecycle Owner . lifecycle Scope . coroutine Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġpreference . dateTime Formatter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġpreference . observable TimeZone , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunner Type Ġ= ĠRunner Type . CANCEL _ PRE _ AND _ RUN ){ Ġx , Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġx Ġ!= Ġnull Ġ&& Ġy Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isActive ) Ġreturn @ combined LiveData ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Clock Ġ= ĠClock . system ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclock . text Ġ= ĠLocalDateTime . now ( time Clock ). format ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstant Ġ= Ġtime Clock . instant () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġalways Ġupdate Ġtime Ġafter Ġa Ġsecond Ġleft ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay (( 1 0 0 0 L Ġ- Ġ( instant . to Epoch Milli () Ġ- Ġ( instant . epoch Second Ġ* Ġ 1 0 0 0 L )))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdatetime Ġ= ĠgetString ( resources . getIdentifier ("_ build _ date ", Ġ" string ", Ġrequire Context (). packageName )). to Long () ĊĠĠĠĠĠĠĠ Ġval Ġinstant Ġ= ĠInstant . of Epoch Milli ( datetime ) ĊĊĠĠĠĠĠĠĠ Ġsettings _ build _ version . text Ġ= ĠgetString ( R . string . build _ version _ hash , ĠgetString ( resources . getIdentifier ("_ internal _ version ", Ġ" string ", Ġrequire Context (). packageName ))) ĊĠĠĠĠĠĠĠ Ġsettings _ build _ date . text Ġ= ĠgetString ( R . string . build _ date , ĠDateTime Formatter . ISO _ LOCAL _ DATE . format ( instant . at Offset ( Zone Offset . UTC ))) ĊĠĠĠĠĠĠĠ ĠView Compat . set Transition Name ( settings _ data _ usage , Ġ" settings _ data _ usage _ transition ") ĊĠĠĠĠĠĠĠ Ġsettings _ data _ usage . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . navigate ( Settings Fragment Directions . action Settings Fragment To Data Usage Fragment (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Navigator Extras ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings _ data _ usage Ġto Ġ" root " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġobserve Ġtwo Ġ# LiveData Ġstream ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġstream . observe ( view Lifecycle Owner ){} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠAppCompatActivity ). set Support ActionBar ( null ) ĊĠĠĠ Ġ} Ċ }