package Ġcom . k ier on qu inn . app . dar q . components . settings Ċ Ċ import Ġcom . k ier on qu inn . app . dar q . model . settings . IPC Setting Ċ import Ġcom . k ier on qu inn . app . dar q . model . settings . Settings Backup Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . json . JSONArray Ċ Ċ abstract Ġclass ĠDar q SharedPreferences : ĠBase SharedPreferences () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ENABLED Ġ= Ġ" enabled " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ENABLED Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ AUTO _ DARK _ THEME Ġ= Ġ" auto _ dark _ theme " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ AUTO _ DARK _ THEME Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ SEND _ APP _ CLOSE S Ġ= Ġ" send _ app _ clo ses " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ SEND _ APP _ CLOSE S Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ O XY GEN _ FORCE _ DARK Ġ= Ġ" oxy gen _ force _ dark " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ O XY GEN _ FORCE _ DARK Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ALWAYS _ FORCE _ DARK Ġ= Ġ" always _ force _ dark " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ALWAYS _ FORCE _ DARK Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ USE _ LOCATION Ġ= Ġ" use _ location " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ USE _ LOCATION Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ DE VELO PER _ OPTIONS Ġ= Ġ" developer _ options " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ DE VELO PER _ OPTIONS Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ X POSE D _ AGG RESS IVE _ DARK Ġ= Ġ" x posed _ ag gressive _ dark " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ X POSE D _ AGG RESS IVE _ DARK Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ X POSE D _ IN VERT _ STATUS _ BAR Ġ= Ġ" x posed _ invert _ status _ bar " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ X POSE D _ IN VERT _ STATUS _ BAR Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ UI _ MON ET _ COLOR Ġ= Ġ" mon et _ color " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ ENABLED _ APPS Ġ= Ġ" enabled _ apps " ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġval Ġchanged : ĠFlow < IPC Setting > ĊĊĠĠĠ Ġvar Ġenabled Ġby Ġthis . shared ( KEY _ ENABLED , ĠDEFAULT _ ENABLED ) ĊĠĠĠ Ġvar Ġauto Dark Theme Ġby Ġthis . shared ( KEY _ AUTO _ DARK _ THEME , ĠDEFAULT _ AUTO _ DARK _ THEME ) ĊĠĠĠ Ġvar Ġsend App Closes Ġby Ġthis . shared ( KEY _ SEND _ APP _ CLOSE S , ĠDEFAULT _ SEND _ APP _ CLOSE S ) ĊĠĠĠ Ġvar Ġo xygen Force Dark Ġby Ġthis . shared ( KEY _ O XY GEN _ FORCE _ DARK , ĠDEFAULT _ O XY GEN _ FORCE _ DARK ) ĊĠĠĠ Ġvar Ġalways Force Dark Ġby Ġthis . shared ( KEY _ ALWAYS _ FORCE _ DARK , ĠDEFAULT _ ALWAYS _ FORCE _ DARK ) ĊĠĠĠ Ġvar Ġuse Location Ġby Ġthis . shared ( KEY _ USE _ LOCATION , ĠDEFAULT _ USE _ LOCATION ) ĊĠĠĠ Ġvar Ġdeveloper Options Ġby Ġthis . shared ( KEY _ DE VELO PER _ OPTIONS , ĠDEFAULT _ DE VELO PER _ OPTIONS ) ĊĠĠĠ Ġvar Ġmon et Color Ġby Ġthis . shared ( KEY _ UI _ MON ET _ COLOR , ĠInteger . MAX _ VALUE ) ĊĠĠĠ Ġvar Ġenabled Apps Ġby Ġthis . shared JSONArray ( KEY _ ENABLED _ APPS ) ĊĊĠĠĠ Ġvar Ġx posed Aggressive Dark Ġby Ġthis . shared ( KEY _ X POSE D _ AGG RESS IVE _ DARK , ĠDEFAULT _ X POSE D _ AGG RESS IVE _ DARK ) ĊĠĠĠ Ġvar Ġx posed Invert Status Ġby Ġthis . shared ( KEY _ X POSE D _ IN VERT _ STATUS _ BAR , ĠDEFAULT _ X POSE D _ IN VERT _ STATUS _ BAR ) ĊĊĠĠĠ Ġfun Ġget IPC Setting ForKey ( key : ĠString ): ĠIPC Setting ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( key ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ ENABLED Ġ-> ĠIPC Setting ( enabled Ġ= Ġenabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ ALWAYS _ FORCE _ DARK Ġ-> ĠIPC Setting ( always Force Dark Ġ= Ġalways Force Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ O XY GEN _ FORCE _ DARK Ġ-> ĠIPC Setting ( oxy gen Force Dark Ġ= Ġo xygen Force Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKEY _ SEND _ APP _ CLOSE S Ġ-> ĠIPC Setting ( send App Closes Ġ= Ġsend App Closes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto IPC Setting (): ĠIPC Setting Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠIPC Setting ( enabled , Ġo xygen Force Dark , Ġalways Force Dark , Ġsend App Closes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Settings Backup (): ĠSettings Backup Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSettings Backup ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ= Ġthis . enabled , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Dark Theme Ġ= Ġthis . auto Dark Theme , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Location Ġ= Ġthis . use Location , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend App Closes Ġ= Ġthis . send App Closes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo xygen Force Dark Ġ= Ġthis . oxy gen Force Dark , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalways Force Dark Ġ= Ġthis . always Force Dark , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Options Ġ= Ġthis . developer Options , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmon et Color Ġ= Ġthis . mon et Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx posed Aggressive Dark Ġ= Ġthis . x posed Aggressive Dark , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx posed Invert Status Ġ= Ġthis . x posed Invert Status , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Apps Ġ= Ġthis . enabled Apps . toList () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠRest ores Ġfrom Ġa Ġgiven Ġ[ Settings Backup ] ĊĠĠĠĠ Ġ* Ġ Ġ@ return ĠWhether Ġuse Location Ġis Ġset , Ġand Ġtherefore Ġto Ġprompt Ġfor Ġlocation Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġfrom Settings Backup ( settings Backup : ĠSettings Backup ): ĠBoolean Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Use Location Ġ= Ġuse Location Ġ&& Ġauto Dark Theme ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġsettings Backup . enabled ĊĠĠĠĠĠĠĠ Ġauto Dark Theme Ġ= Ġsettings Backup . auto Dark Theme ĊĠĠĠĠĠĠĠ Ġsend App Closes Ġ= Ġsettings Backup . send App Closes ĊĠĠĠĠĠĠĠ Ġo xygen Force Dark Ġ= Ġsettings Backup . oxy gen Force Dark ĊĠĠĠĠĠĠĠ Ġalways Force Dark Ġ= Ġsettings Backup . always Force Dark ĊĠĠĠĠĠĠĠ Ġdeveloper Options Ġ= Ġsettings Backup . developer Options ĊĠĠĠĠĠĠĠ Ġmon et Color Ġ= Ġsettings Backup . mon et Color ĊĠĠĠĠĠĠĠ Ġx posed Aggressive Dark Ġ= Ġsettings Backup . x posed Aggressive Dark ĊĠĠĠĠĠĠĠ Ġx posed Invert Status Ġ= Ġsettings Backup . x posed Invert Status ĊĠĠĠĠĠĠĠ Ġenabled Apps Ġ= Ġsettings Backup . enabled Apps . to Typed Array () ĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġ( use Location Ġ&& Ġauto Dark Theme ) Ġ&& Ġ! current Use Location ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun ĠJSONArray . toString Array (): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArrayList < String >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġthis @ toString Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( this @ toString Array . getString ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. to Typed Array () ĊĠĠĠ Ġ} Ċ Ċ }