package Ġcom . san del lo . nd scal cul ator Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . compose . ui . unit . Duration Ċ import Ġandroidx . compose . ui . unit . in Milliseconds Ċ import Ġandroidx . core . view . update Padding Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . google . android . gms . ads . Ad Request Ċ import Ġcom . google . android . gms . ads . Load Ad Error Ċ import Ġcom . google . android . gms . ads . Mobile Ads Ċ import Ġcom . google . android . gms . ads . Request Configuration Ċ import Ġcom . google . android . gms . ads . inter stitial . Inter stitial Ad Ċ import Ġcom . google . android . gms . ads . inter stitial . Inter stitial Ad Load Callback Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ Ċ var Ġrates Received : ĠBoolean Ġ= Ġfalse Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġnav Controller : ĠNav Controller ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Inter stitial Ad : ĠInter stitial Ad ĊĊĠĠĠ Ġ@ Experimental Std lib Api ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Locale () ĊĠĠĠĠĠĠĠ Ġset Night Mode () ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġmain _ container . setOn Apply Window Insets Listener Ġ{ Ġ_, Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Bar Layout . update Padding ( top Ġ= Ġin sets . system Window Inset Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin sets ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= ĠNavigation . find Nav Controller ( this , ĠR . id . fragment ) ĊĠĠĠĠĠĠĠ Ġnav Controller !!. add On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination . id Ġ== ĠR . id . vat Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= ĠgetString ( R . string . vat ). capitalize ( Locale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination . id Ġ== ĠR . id . settings Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= ĠgetString ( R . string . settings ). capitalize ( Locale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar . setup With Nav Controller ( nav Controller !! , ĠApp Bar Configuration ( nav Controller !!. graph )) ĊĊĠĠĠĠĠĠĠ Ġval Ġad Dialog Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġad Dialog . setTitle ( getString ( R . string . ad )) ĊĠĠĠĠĠĠĠ Ġad Dialog . setMessage ( getString ( R . string . ad Message )) ĊĠĠĠĠĠĠĠ Ġad Dialog . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġad Dialog . set Positive Button ( getString ( R . string . ad Watch )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad . show ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġad Dialog . set Neutral Button ( android . R . string . cancel ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġad Request Ġ= ĠAd Request . Builder (). build () ĊĊĠĠĠĠĠĠĠ ĠMobile Ads . setRequest Configuration ( Request Configuration . Builder (). set Test Device Ids ( listOf (" E 3 9 1 F 9 7 E 4 B 9 B 6 4 A 0 1 1 F DE E 1 1 C 5 8 A EE CF ")). build ()) ĊĠĠĠĠĠĠĠ ĠInter stitial Ad . load ( this , Ġ" ca - app - pub - 3 5 9 1 7 0 0 0 4 6 1 8 4 2 1 7 / 4 3 7 2 5 4 0 6 1 8 ", Ġad Request , Ġobject Ġ: ĠInter stitial Ad Load Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed To Load ( ad Error : ĠLoad Ad Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" ad Mob ", Ġad Error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Loaded ( inter stitial Ad : ĠInter stitial Ad ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" ad Mob ", Ġ" Ad Ġwas Ġloaded .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad Ġ= Ġinter stitial Ad ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( Duration ( seconds Ġ= Ġ 3 0 ). in Milliseconds ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Dialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġset Night Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Night Mode Ġ= Ġthis . resources . configuration . ui Mode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( Configuration . UI _ MODE _ N IGHT _ MASK ) Ġ== ĠConfiguration . UI _ MODE _ N IGHT _ YES ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Night Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ NAV IG ATION _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtheme Pref Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( theme Pref . getString (" theme ", Ġ" 2 ") Ġ== Ġ" 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . local Night Mode Ġ= ĠAppCompat Delegate . MODE _ N IGHT _ YES ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( theme Pref . getString (" theme ", Ġ" 2 ") Ġ== Ġ" 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . local Night Mode Ġ= ĠAppCompat Delegate . MODE _ N IGHT _ NO ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( theme Pref . getString (" theme ", Ġ" 2 ") Ġ== Ġ" 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ AUTO _ B ATTER Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . local Night Mode Ġ= ĠAppCompat Delegate . MODE _ N IGHT _ AUTO _ B ATTER Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . local Night Mode Ġ= ĠAppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġset Locale () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocale Pref Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġlocale Pref . getString (" language ", Ġ" en ") ĊĠĠĠĠĠĠĠ Ġif Ġ( language . toString () Ġ!= Ġ" en ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . setDefault ( Locale . for Language Tag ( language . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . configuration . set Locale ( Locale . for Language Tag ( language . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . update Configuration ( resources . configuration , Ġresources . display Metrics ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }