/* Ċ Ġ* ĠĠĠĠ ĠThis Ġfile Ġis Ġpart Ġof ĠL awn ch air ĠLaunch er . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠL awn ch air ĠLaunch er Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* ĠĠĠĠ Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠL awn ch air ĠLaunch er Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith ĠL awn ch air ĠLaunch er . Ġ ĠIf Ġnot , Ġsee Ġ< https :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ Ċ package Ġorg . zim mob . zim lx . settings . ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Options Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġcom . android . launcher 3 . Inset table Frame Layout Ċ import Ġcom . android . launcher 3 . R Ċ import Ġcom . android . launcher 3 . Utilities Ċ import Ġorg . zim mob . zim lx . Z im LayoutInflater Ċ import Ġorg . zim mob . zim lx . getBoolean Attr Ċ import Ġorg . zim mob . zim lx . launcher AppState Ċ import Ġorg . zim mob . zim lx . theme . Theme Manager Ċ import Ġorg . zim mob . zim lx . theme . Theme Override Ċ Ċ @ Suppress Lint (" Registered ") Ċ open Ġclass ĠSettings Base Activity Ġ: ĠAppCompatActivity (), ĠTheme Manager . Theme able Activity Ġ{ ĊĠĠĠ Ġval Ġdrag Layer Ġby Ġlazy Ġ{ ĠSettings Drag Layer ( this , Ġnull ) Ġ} ĊĠĠĠ Ġval Ġdecor Layout Ġby Ġlazy Ġ{ ĠDecor Layout ( this , Ġwindow ) Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġval Ġtheme Set : ĠTheme Override . Theme Set Ġget () Ġ= ĠTheme Override . Settings () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtheme Override : ĠTheme Override ĊĠĠĠ Ġprivate Ġvar Ġcurrent Theme Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġpaused Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġcustom LayoutInflater Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠZ im LayoutInflater ( super . getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfrom Settings Ġby Ġlazy Ġ{ Ġintent . getBoolean Extra ( EXTRA _ FROM _ SETTINGS , Ġfalse ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( layout Inflater Ġas ĠZ im LayoutInflater ). install Factory ( delegate ) ĊĠĠĠĠĠĠĠ Ġtheme Override Ġ= ĠTheme Override ( theme Set , Ġthis ) ĊĠĠĠĠĠĠĠ Ġtheme Override . apply Theme ( this ) ĊĠĠĠĠĠĠĠ Ġcurrent Theme Ġ= Ġtheme Override . get Theme ( this ) ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState Ġ?: Ġintent . get Bundle Extra (" state ")) ĊĠĠĠĠĠĠĠ Ġdrag Layer . addView ( decor Layout , ĠIn set table Frame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT )) ĊĠĠĠĠĠĠĠ Ġsuper . set ContentView ( drag Layer ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠUtilities . getZ im Prefs ( this ) ĊĠĠĠĠĠĠĠ Ġvar Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set BackgroundColor ( prefs . primary Color ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setTitle TextColor ( resources . getColor ( R . color . white )) ĊĠĠĠĠĠĠĠ Ġtoolbar . navigation Icon Ġ= Ġresources . get Drawable ( R . drawable . ic _ arrow _ back _ white _ 2 4 px ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġflags Ġ= Ġwindow . decor View . system Ui Visibility ĊĠĠĠĠĠĠĠ Ġif Ġ( Utilities . AT LE AST _ MAR SH M ALLOW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse Light Bars Ġ= Ġget Boolean Attr ( R . attr . use Light System Bars ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠUtilities . set Flag ( flags , ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR , Ġuse Light Bars ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Utilities . AT LE AST _ ORE O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠUtilities . set Flag ( flags , ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ NAV IG ATION _ BAR , Ġuse Light Bars ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġflags ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= Ġdark ( Utilities . getZ im Prefs ( application Context ). primary Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdark ( color : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠColor . alpha ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠColor . red ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= ĠColor . green ( color ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠColor . blue ( color ) ĊĠĠĠĠĠĠĠ Ġreturn ĠColor . arg b ( a , ĠMath . max (( r Ġ* Ġ 0 . 8 ). toInt (), Ġ 0 ), ĠMath . max (( g Ġ* Ġ 0 . 8 ). toInt (), Ġ 0 ), ĠMath . max (( b Ġ* Ġ 0 . 8 ). toInt (), Ġ 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġoverride Open Anim () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( from Settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition (" activity _ open _ enter ", Ġ" activity _ open _ exit ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġoverride Close Anim () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( from Settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition (" activity _ close _ enter ", Ġ" activity _ close _ exit ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Android Anim Res ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresources . getIdentifier ( name , Ġ" anim ", Ġ" android ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoverride Pending Transition ( enter : ĠString , Ġexit : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenter Res Ġ= Ġget Android Anim Res ( enter ) ĊĠĠĠĠĠĠĠ Ġval Ġexit Res Ġ= Ġget Android Anim Res ( exit ) ĊĠĠĠĠĠĠĠ Ġif Ġ( enter Res Ġ!= Ġ 0 Ġ&& Ġexit Res Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition ( enter Res , Ġexit Res ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġdrag Layer . get Top Open View ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . close ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Parent Ġ= ĠgetContent Frame () ĊĠĠĠĠĠĠĠ Ġcontent Parent . removeAll Views () ĊĠĠĠĠĠĠĠ Ġcontent Parent . addView ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Parent Ġ= ĠgetContent Frame () ĊĠĠĠĠĠĠĠ Ġcontent Parent . removeAll Views () ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( this ). inflate ( res Id , Ġcontent Parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( v : ĠView , Ġlp : ĠViewGroup . LayoutParams ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Parent Ġ= ĠgetContent Frame () ĊĠĠĠĠĠĠĠ Ġcontent Parent . removeAll Views () ĊĠĠĠĠĠĠĠ Ġcontent Parent . addView ( v , Ġlp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetContent Frame (): ĠViewGroup Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdecor Layout . findViewById ( android . R . id . content ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġpaused Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġpaused Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġcreate Rel a unch Intent (): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġon Save InstanceState ( state ) ĊĠĠĠĠĠĠĠ Ġreturn Ġintent . putExtra (" state ", Ġstate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġget Rel a unch InstanceState ( savedInstanceState : ĠBundle ?): ĠBundle ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠsavedInstanceState Ġ?: Ġintent . get Bundle Extra (" state ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Theme Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Theme Ġ== Ġtheme Override . get Theme ( this )) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecreate () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( create Rel a unch Intent (), ĠActivity Options . make Custom Animation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġandroid . R . anim . fade _ in , Ġandroid . R . anim . fade _ out ). to Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget System Service ( name : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== ĠContext . LAYOUT _ IN FL ATER _ SERVICE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcustom LayoutInflater ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getSystem Service ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġlauncher AppState . launcher ?. on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ FROM _ SETTINGS Ġ= Ġ" from Settings " ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetActivity ( context : ĠContext ): ĠSettings Base Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext Ġas ? ĠSettings Base Activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ( context Ġas ĠContext Wrapper ). base Context Ġas ĠSettings Base Activity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ