package Ġcom . k ier on qu inn . app . t apt ap . ui . screens . setup . battery Ċ Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . drawable . Anim atable 2 Ċ import Ġandroid . graphics . drawable . Animated Vector Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . view . update LayoutParams Ċ import Ġandroidx . core . widget . TextView Compat Ċ import Ġcom . k ier on qu inn . app . t apt ap . R Ċ import Ġcom . k ier on qu inn . app . t apt ap . ui . activities . Modal Activity Ċ import Ġcom . k ier on qu inn . app . t apt ap . databinding . Fragment Setup Battery Binding Ċ import Ġcom . k ier on qu inn . app . t apt ap . utils . extensions . observe Ċ import Ġcom . k ier on qu inn . app . t apt ap . utils . extensions . resolve Color Attribute Ċ import Ġcom . k ier on qu inn . app . t apt ap . components . base . Bound Fragment Ċ import Ġdev . chr is ban es . in setter . apply System Window Insets To Margin Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ import Ġkotlin . math . round ToInt Ċ Ċ class ĠSetup Battery Fragment : ĠBound Fragment < Fragment Setup Battery Binding >( Fragment Setup Battery Binding :: class . java ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Setup Battery ViewModel >() ĊĊĠĠĠ Ġprivate Ġval Ġbutton Height Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġresources . get Dimension ( R . dim en . configuration _ button _ height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġwith ( binding ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbattery Toolbar . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply System Window Insets To Margin ( top Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation Icon ( R . drawable . ic _ back ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Next . setOn Apply Window Insets Listener Ġ{ Ġview , Ġwindow Insets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . update LayoutParams < Frame Layout . LayoutParams > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ( button Height Ġ+ Ġwindow Insets . system Window Inset Bottom ). round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Padding ( view . padding Left , Ġview . padding Top , Ġview . padding Right , Ġwindow Insets . system Window Inset Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Insets ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Next . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . onNext Clicked ( this @ Setup Battery Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Battery Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Battery Button Clicked ( it . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Battery Button Mi ui . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Mi ui Battery Button Clicked ( it . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Battery Button Dont Kill . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Dont Kill Button Clicked ( it . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Battery Button O em . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on O em Battery Button Clicked ( it . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġav d . apply System Window Insets To Margin ( top Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( activity Ġis ĠModal Activity ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Hide Ġbottom Ġnav ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration Navigation Container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( viewModel ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbattery Optim isation Disabled . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setup Battery Button . isEnabled Ġ= Ġ! it ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . configuration Next . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġif ( it ) ĠContext Compat . getColor ( context , ĠR . color . color Accent ) Ġelse ĠColor Utils . set Alpha Component ( Context Compat . getColor ( context , Ġcontext . resolve Color Attribute ( android . R . attr . textColor Secondary No Disable )), Ġ 1 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTextView Compat . set Compound Drawable Tint List ( this , Ġif ( it ) ĠColor State List . valueOf ( textColor ) Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setup Battery Button . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . setup _ battery _ button _ disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon Resource ( R . drawable . ic _ check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . setup _ battery _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon Resource ( R . drawable . ic _ next ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Show Mi ui Button . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setup Battery Button Mi ui . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Show O em Button . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setup Battery Button O em . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Show Dont Kill Button . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setup Battery Button Dont Kill . isVisible Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmi ui Optim isation Disabled . observe ( view Lifecycle Owner ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setup Battery Button Mi ui . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . setup _ battery _ button _ mi ui _ disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon Resource ( R . drawable . ic _ check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠgetString ( R . string . setup _ battery _ button _ mi ui ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon Resource ( R . drawable . ic _ next ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Mi ui Optim isation ( require Context ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġwith ( binding ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġav d . let Ġ{ ĠimageView Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( imageView . drawable Ġas ĠAnimated Vector Drawable ). let Ġ{ Ġav d Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav d . register Animation Callback ( object : ĠAnim atable 2 . Animation Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav d . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġav d . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( viewModel ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Battery Optim isation ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck O em ( require Context ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed (): ĠBoolean Ġ= ĠviewModel . on Back Pressed ( this ) Ċ Ċ }