/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 . ĠZ ac ĠS we ers Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . s we ers . catch up . base . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Color Int Ċ import Ġio . s we ers . catch up . util . clear Light NavBar Ċ import Ġio . s we ers . catch up . util . isIn Night Mode Ċ import Ġio . s we ers . catch up . util . sdk Ċ import Ġio . s we ers . catch up . util . set Light NavBar Ċ Ċ private Ġtype alias ĠMaterial Attr Ġ= Ġcom . google . android . material . R . attr Ċ Ċ fun ĠActivity . update NavBar Color ( ĊĠ Ġ@ Color Int Ġcolor : ĠInt ? Ġ= Ġnull , ĊĠ Ġcontext : ĠContext Ġ= Ġthis , ĊĠ Ġrecreate : ĠBoolean Ġ= Ġfalse , ĊĠ Ġui Preferences : ĠUi Preferences Ċ ) Ġ{ ĊĠ Ġ// ĠUpdate Ġthe Ġnav Ġbar Ġwith Ġwhatever Ġprefs Ġwe Ġhad ĊĠ Ġ@ Suppress (" Cascade If ") Ġ// ĠBecause ĠI Ġthink Ġif - else Ġmakes Ġmore Ġsense Ġread ability - wise ĊĠ Ġif Ġ( color Ġ!= Ġnull Ġ&& Ġui Preferences . theme NavigationBar ) Ġ{ ĊĠĠĠ Ġwindow . navigation Bar Color Ġ= Ġcolor ĊĠĠĠ Ġwindow . navigation Bar Divider Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠ Ġwindow . decor View . clear Light NavBar () Ġ// ĠTODO Ġwhy Ġdo ĠI Ġneed Ġto Ġdo Ġthis Ġevery Ġtime ? ĊĠ Ġ} Ġelse Ġif Ġ( re create ) Ġ{ ĊĠĠĠ Ġrecreate () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġval Ġcurrent Color Ġ= Ġwindow . navigation Bar Color ĊĠĠĠ Ġval Ġis Dark Ġ= ĠColor Utils . is Dark ( currentColor ) ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 6 ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠSO ME Ġdevices Ġhave Ġn atur ally Ġlight Ġstatus Ġbars , Ġtry Ġto Ġcover Ġfor Ġthat Ġhere Ġif Ġwe 're Ġin ĊĠĠĠĠĠ Ġ// Ġnight Ġmode ĊĠĠĠĠĠ Ġif Ġ( context . isIn Night Mode () Ġ&& Ġ! is Dark ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= ĠMaterial Colors . getColor ( context , ĠMaterial Attr . color Primary Dark , Ġ" No Ġcolor Primary Dark Ġfound !") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġif Ġ( context . isIn Night Mode ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= ĠMaterial Colors . getColor ( context , ĠMaterial Attr . color Primary Dark , Ġ" No Ġcolor Primary Dark Ġfound !") ĊĠĠĠĠĠĠĠ Ġsdk ( 2 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwindow . navigation Bar Divider Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow . decor View . clear Light NavBar () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= ĠMaterial Colors . getColor ( context , ĠMaterial Attr . color Primary , Ġ" No Ġcolor Primary Dark Ġfound !") ĊĠĠĠĠĠĠĠ Ġsdk ( 2 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwindow . navigation Bar Divider Color Ġ= ĠMaterial Colors . getColor ( context , ĠMaterial Attr . color Primary Dark , Ġ" No Ġcolor Primary Dark Ġfound !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow . decor View . set Light NavBar () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ