/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 , ĠL awn ch air Ċ Ġ* Ċ Ġ* Ġ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 Ġapp . l awn ch air . util Ċ Ċ import Ġandroid . app . Alarm Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . Pending Intent . FLAG _ CANCEL _ CURRENT Ċ import Ġandroid . app . Pending Intent . FLAG _ IM MUT ABLE Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . os . User Manager Compat Ċ import Ġandroidx . core . view . children Ċ import Ġapp . l awn ch air . preferences . Preference Manager Ċ import Ġcom . android . launcher 3 . R Ċ import Ġcom . android . launcher 3 . util . Executors . MAIN _ EXECUT OR Ċ import Ġcom . android . launcher 3 . util . Themes Ċ import Ġcom . android . system ui . shared . system . Quick Step Contract Ċ import Ġorg . json . JSONArray Ċ import Ġjava . util . concurrent . Callable Ċ import Ġjava . util . concurrent . ExecutionException Ċ import Ġkotlin . system . exit Process Ċ Ċ fun Ġ< T , ĠA > Ġensure On MainThread ( creator : Ġ( A ) Ġ-> ĠT ): Ġ( A ) Ġ-> ĠT Ġ= Ġ{ Ġit Ġ-> ĊĠĠĠ Ġif Ġ( Looper . my Looper () Ġ== ĠL ooper . get Main Looper ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreator ( it ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMAIN _ EXECUT OR . submit ( Callable Ġ{ Ġcreator ( it ) Ġ}). get () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠExecution Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > Ġuse ApplicationContext ( creator : Ġ( Context ) Ġ-> ĠT ): Ġ( Context ) Ġ-> ĠT Ġ= Ġ{ Ġit Ġ-> ĊĠĠĠ Ġcreator ( it . application Context ) Ċ } Ċ Ċ fun Ġrestart Launcher ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġpm Ġ= Ġcontext . package Manager ĊĠĠĠ Ġvar Ġintent : ĠIntent ? Ġ= ĠIntent ( Intent . ACTION _ MAIN ) ĊĠĠĠ Ġintent !!. add Category ( Intent . CATEGORY _ HOME ) ĊĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠ Ġval Ġcomponent Name Ġ= Ġintent . resolve Activity ( pm ) ĊĠĠĠ Ġif Ġ( context . packageName Ġ!= Ġcomponent Name . packageName ) Ġ{ ĊĠĠĠĠĠĠĠ Ġintent Ġ= Ġpm . get Launch Intent For Package ( context . packageName ) ĊĠĠĠĠĠĠĠ Ġintent !!. add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġrestart Launcher ( context , Ġintent ) Ċ } Ċ Ċ fun Ġrestart Launcher ( context : ĠContext , Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠ Ġcontext . startActivity ( intent ) ĊĊĠĠĠ Ġ// ĠCreate Ġa Ġpending Ġintent Ġso Ġthe Ġapplication Ġis Ġrestarted Ġafter ĠSystem . exit ( 0 ) Ġwas Ġcalled . ĊĠĠĠ Ġ// ĠWe Ġuse Ġan ĠAlarm Manager Ġto Ġcall Ġthis Ġintent Ġin Ġ 1 0 0 ms ĊĠĠĠ Ġval Ġm Pending Intent Ġ= ĠPending Intent . getActivity ( context , Ġ 0 , Ġintent , ĠFLAG _ CANCEL _ CURRENT Ġor ĠFLAG _ IM MUT ABLE ) ĊĠĠĠ Ġval Ġmgr Ġ= Ġcontext . getSystem Service ( Context . ALARM _ SERVICE ) Ġas ĠAlarm Manager ĊĠĠĠ Ġmgr [ Alarm Manager . RTC , ĠSystem . currentTimeMillis () Ġ+ Ġ 1 0 0 ] Ġ= Ġm Pending Intent ĊĊĠĠĠ Ġ// ĠKill Ġthe Ġapplication ĊĠĠĠ Ġkill Launcher () Ċ } Ċ Ċ fun Ġkill Launcher () Ġ{ ĊĠĠĠ Ġexit Process ( 0 ) Ċ } Ċ Ċ fun Ġget Prefs If Unlock ed ( context : ĠContext ): ĠPreference Manager ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( User Manager Compat . is User Unlock ed ( context )) Ġ{ ĊĠĠĠĠĠĠĠ ĠPreference Manager . getInstance ( context ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Window Corner Radius ( context : ĠContext ): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġprefs Ġ= Ġget Prefs If Unlock ed ( context ) ĊĠĠĠ Ġif Ġ( prefs Ġ!= Ġnull Ġ&& Ġprefs . override Window Corner Radius . get ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . window Corner Radius . get (). toFloat () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠQuick Step Contract . getWindow Corner Radius ( context . resources ) Ċ } Ċ Ċ fun Ġsupports Rounded C orners On Windows ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( get Prefs If Unlock ed ( context )?. override Window Corner Radius ?. get () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠQuick Step Contract . supports Rounded C orners On Windows ( context . resources ) Ċ } Ċ Ċ fun Ġoverride All Apps TextColor ( textView : ĠTextView ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠtextView . context ĊĠĠĠ Ġval Ġopacity Ġ= ĠPreference Manager . getInstance ( context ). drawer Opacity . get () ĊĠĠĠ Ġif Ġ( opacity Ġ<= Ġ 0 . 3 f ) Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView . setTextColor ( Themes . get Attr Color ( context , ĠR . attr . all Apps Alternate TextColor )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< T > ĠJSONArray . to ArrayList (): ĠArrayList < T > Ġ{ ĊĠĠĠ Ġval Ġarray List Ġ= ĠArrayList < T >() ĊĠĠĠ Ġfor Ġ( i Ġin Ġ( 0 Ġuntil Ġlength ())) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray List . add ( get ( i ) Ġas ĠT ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarray List Ċ } Ċ Ċ val ĠViewGroup . recursive Children : ĠSequence < View > Ġget () Ġ= Ġchildren . flatMap Ġ{ ĊĠĠĠ Ġif Ġ( it Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . recursive Children Ġ+ Ġsequence Of ( it ) ĊĠĠĠ Ġ} Ġelse Ġsequence Of ( it ) Ċ } Ċ Ċ private Ġval Ġpending Intent Tag Id Ġ= ĠResources . getSystem (). getIdentifier (" pending _ intent _ tag ", Ġ" id ", Ġ" android ") Ċ Ċ val ĠView ?. pending Intent Ġget () Ġ= Ġthis ?. getTag ( pending Intent Tag Id ) Ġas ? ĠPending Intent Ċ