package Ġcom . example . s unk ai . herit age . activity . base Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . Request Manager Ċ import Ġcom . example . s unk ai . herit age . tools . forEach And Tint Views Ċ import Ġcom . example . s unk ai . herit age . tools . get Dark Theme Color Ċ import Ġcom . example . s unk ai . herit age . tools . get Theme Color Ċ import Ġcom . example . s unk ai . herit age . value . CHANGE _ THEME Ċ Ċ abstract Ġclass ĠBase G lide Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġg lide : ĠRequest Manager ĊĠĠĠ Ġprivate Ġvar Ġignore Toolbar Ġ= Ġfalse ĊĠĠĠ Ġprotected Ġval ĠTAG : ĠString Ġ= Ġjava Class . name ĊĠĠĠ Ġprivate Ġval Ġbroad Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( p 0 : ĠContext ?, Ġp 1 : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange W idge Theme () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( this ). register Receiver ( broad Receiver , ĠIntent Filter ( CHANGE _ THEME )) ĊĠĠĠĠĠĠĠ Ġg lide Ġ= ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġchange W idge Theme () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġchange W idge Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecor view Ġ= Ġwindow . decor View ĊĠĠĠĠĠĠĠ Ġif Ġ( decor view Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠforEach And Tint Views ( decor view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġchange Specific View Theme () ĊĠĠĠĠĠĠĠ Ġif Ġ(! ignore Toolbar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setBackground Drawable ( Color Drawable ( get Theme Color ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġget Dark Theme Color () ĊĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= Ġget Theme Color () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġchange Specific View Theme () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( this ). unregister Receiver ( broad Receiver ) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprotected Ġfun Ġset Ignore Toolbar ( ignore : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ignore Toolbar Ġ= Ġignore ĊĠĠĠ Ġ} ĊĊ Ċ }