package Ġio . n ich ij ou . o ops . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . annotation . Nullable Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Registry Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġio . n ich ij ou . o ops . O ops Life And Live Ċ import Ġio . n ich ij ou . o ops . O ops ViewModel Ċ import Ġio . n ich ij ou . o ops . R Ċ import Ġio . n ich ij ou . o ops . ext . activity Ċ import Ġio . n ich ij ou . o ops . ext . adjust Alpha Ċ import Ġio . n ich ij ou . o ops . ext . color Res Ċ import Ġio . n ich ij ou . o ops . ext . is Color Light ĊĊ Ċ open Ġclass ĠO ops Bottom Navigation View Ġ: ĠBottom Navigation View , ĠO ops Life And Live Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġ@ Nullable Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġ@ Nullable Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Icon Text ( selected Color : ĠInt , Ġbg Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Color Ġ= Ġthis . activity (). color Res ( if Ġ( bgColor . is Color Light ()) ĠR . color . md _ icon _ light Ġelse ĠR . color . md _ icon _ dark ) ĊĠĠĠĠĠĠĠ Ġval Ġun selected Icon TextColor Ġ= Ġbase Color . adjust Alpha (. 8 7 f ) ĊĠĠĠĠĠĠĠ Ġval Ġicon Color Ġ= ĠColor State List ( array Of ( int ArrayOf (- android . R . attr . state _ checked ), Ġint ArrayOf ( android . R . attr . state _ checked )), Ġint ArrayOf ( un selected Icon TextColor , Ġselected Color )) ĊĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= ĠColor State List ( array Of ( int ArrayOf (- android . R . attr . state _ checked ), Ġint ArrayOf ( android . R . attr . state _ checked )), Ġint ArrayOf ( un selected Icon TextColor , Ġselected Color )) ĊĠĠĠĠĠĠĠ Ġitem Icon Tint List Ġ= Ġicon Color ĊĠĠĠĠĠĠĠ Ġitem TextColor Ġ= ĠtextColor ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġbinding Live () Ġ{ ĊĠĠĠĠĠĠĠ Ġo vm . bottom Nav State Color . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbg Color Ġ= Ġwhen Ġ( it . background Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Background Mode . ACC ENT Ġ-> Ġit . accent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Background Mode . PRIMARY Ġ-> Ġit . primary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Background Mode . PRIMARY _ DARK Ġ-> Ġit . primary Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Background Mode . AUTO Ġ-> Ġthis . activity (). color Res ( if Ġ( it . is Dark ) ĠR . color . md _ bottom _ nav _ default _ dark _ bg Ġelse ĠR . color . md _ bottom _ nav _ default _ light _ bg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set BackgroundColor ( bgColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġicon TextColor Ġ= Ġwhen Ġ( it . icon Text Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Icon Text Mode . ACC ENT Ġ-> Ġit . accent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Icon Text Mode . PRIMARY Ġ-> Ġit . primary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation View Icon Text Mode . AUTO Ġ-> ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon TextColor Ġ== ĠColor . TRANSP ARENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon TextColor Ġ= Ġif Ġ( bgColor . is Color Light ()) ĠColor . BLACK Ġelse ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Icon Text ( icon TextColor , Ġbg Color ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġo vm Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this . activity ()). get ( O ops ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm View Lifecycle Registry : ĠLifecycle Registry Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLifecycle Registry ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ= Ġm View Lifecycle Registry ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġbinding Live () ĊĠĠĠĠĠĠĠ Ġm View Lifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ START ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Window Focus Changed ( has Window Focus : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Window Focus Changed ( has Window Focus ) ĊĠĠĠĠĠĠĠ Ġif Ġ( has Window Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Lifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Lifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ PAUSE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Lifecycle Registry . handle Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠBottom Navigation View Background Mode Ġ{ ĊĠĠĠ ĠACC ENT , ĠPRIMARY , ĠPRIMARY _ DARK , ĠAUTO Ċ } Ċ Ċ enum Ġclass ĠBottom Navigation View Icon Text Mode Ġ{ ĊĠĠĠ ĠACC ENT , ĠPRIMARY , ĠAUTO Ċ }