package Ġcom . bern af err ari . sdk monitor . settings Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . af ol le st ad . rx kp refs . Pref Ċ import Ġcom . af ol le st ad . rx kp refs . Rx k Prefs Ċ import Ġcom . af ol le st ad . rx kp refs . rx java . observe Ċ import Ġcom . air bnb . e po xy . E po xy Controller Ċ import Ġcom . air bnb . mv rx . Loading Ċ import Ġcom . air bnb . mv rx . fragment ViewModel Ċ import Ġcom . bern af err ari . base . mv rx . simple Controller Ċ import Ġcom . bern af err ari . sdk monitor .* Ċ import Ġcom . bern af err ari . sdk monitor . core . About Dialog Ċ import Ġcom . bern af err ari . sdk monitor . core . App Manager Ċ import Ġcom . bern af err ari . ui . d agger . D agger Base Recycler Fragment Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . Non C ancellable Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Named Ċ import Ġjavax . inject . Provider Ċ Ċ @ Android EntryPoint Ċ class ĠSettings Fragment Ġ: ĠD agger Base Recycler Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSettings ViewModel Ġby Ġfragment ViewModel () ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġsettings ViewModel Factory : ĠSettings ViewModel . Factory ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Named ( value Ġ= Ġ" light Mode ") Ġlateinit Ġvar Ġlight Mode : ĠPref < Boolean > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Named ( value Ġ= Ġ" show System Apps ") Ġlateinit Ġvar Ġshow System Apps : ĠPref < Boolean > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Named ( value Ġ= Ġ" orderBy Sdk ") Ġlateinit Ġvar ĠorderBy Sdk : ĠPref < Boolean > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Named ( value Ġ= Ġ" background Sync ") Ġlateinit Ġvar Ġbackground Sync : ĠPref < Boolean > Ċ Ċ // ĠĠĠ ĠProvider < Rx k Prefs > Ġrx Prefs Provider ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġrx Prefs Provider : ĠProvider < Rx k Prefs > ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) Ċ // Ċ //// ĠĠĠĠĠĠĠ Ġshow System Apps . add On Changed Ġ{ Ġ Ġ-> Ġ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġflow Ġ= Ġshow System Apps . as Flow () Ċ // ĠĠĠĠĠĠĠ Ġlaunch Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġflow . collect Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" show System Apps ", Ġit . toString ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// Ġåľ¨ di éĩĮ å®ļä¹ī å¿ħé¡» ä¸įèĥ½ æĺ¯ Sign el ton ï¼ģï¼ģ ï¼ģï¼ģ Ċ // ĠĠĠĠĠĠĠ Ġshow System Apps . observe (). subscribe Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" show System Apps ", Ġit . toString ()) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġlaunch Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Non C ancellable ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow System Apps . as Flow (). collect { Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" show System Apps ", Ġit . toString ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġshow System Apps . observe (). subscribe Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" show System Apps ", Ġit . toString ()) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġxx Ġ= Ġshow System Apps . get () Ċ // ĠĠĠĠĠĠĠ Ġshow System Apps . set (! xx ) Ċ // ĠĠĠĠĠĠĠ Ġshow System Apps . set ( xx ) Ċ // ĠĠĠĠĠĠĠ Ġshow System Apps . set (! xx ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġe po xy Controller (): ĠE po xy Controller Ġ= Ġsimple Controller ( viewModel ) Ġ{ Ġstate Ġ-> ĊĊĠĠĠĠĠĠĠ Ġprintln (" state Ġis : Ġ${ state . data }") ĊĠĠĠĠĠĠĠ Ġif Ġ( state . data Ġis ĠLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Row Ġ{ Ġid (" loading ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( state . data . complete ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmar quee Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" header ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle (" Settings ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle (" Version Ġ${ Build Config . VERSION _ NAME }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Light Mode Ġ= Ġstate . data ()?. light Mode Ġ?: Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Switch Binding Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" light Ġmode ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Light Ġmode ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( R . drawable . ic _ sun ny ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Is Visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Is On ( is Light Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġv Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInject or . get (). is Light Theme (). set (! light Mode ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Light Theme (! light Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlight Mode . set (! is Light Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. re create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Show System Apps Ġ= Ġstate . data ()?. show System Apps Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Show System Apps Ġ= Ġstate . data () !!. show System Apps ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Switch Binding Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" system Ġapps ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Show Ġsystem Ġapps ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( R . drawable . ic _ android ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Is Visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Is On ( is Show System Apps ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subtitle (" Show Ġall Ġinstalled Ġapps . ĠThis Ġmight Ġincrease Ġloading Ġtime .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġmodel , Ġparent View , Ġclicked View , Ġposition Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" switch Is On ", Ġ" switch Is On =$ model . switch Is On () ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProducer Coroutine Ġwas Ġcancelled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" show System Apps ====== =$ show System Apps ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow System Apps . set (! model . switch Is On ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkotlinx . coroutines . Job Cancellation Exception : ĠProducer Coroutine Ġwas Ġcancelled ; Ġjob = Producer Coroutine { Cancelled }@ c 3 c 9 4 7 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrx Prefs Provider . get (). boolean (" show System Apps ", Ġfalse ). set (! model . switch Is On ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġv Ġ-> Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInject or . get (). show System Apps (). set (! show System Apps ) Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Manager . force Refresh Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ è¿ĻéĩĮ åĢ¼ ä¸į å¯¹ ï¼ģï¼ģ ï¼ģï¼ģ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow System Apps . set (! is Show System Apps ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis OrderBy Sdk Ġ= Ġstate . data ()?. orderBy Sdk Ġ?: Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Switch Binding Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" order Ġby ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Order Ġby Ġtarget SDK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( R . drawable . ic _ sort ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subtitle (" Change Ġthe Ġorder Ġof Ġitems ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Is Visible ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch Is On ( is OrderBy Sdk ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġmodel , Ġparent View , Ġclicked View , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderBy Sdk . set (! model . switch Is On ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġv Ġ-> Ċ //// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInject or . get (). orderBy Sdk (). set (! orderBy Sdk ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderBy Sdk . set (! is OrderBy Sdk ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Sync Ġ= Ġstate . data ()?. background Sync Ġ?: Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Switch Binding Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" background Ġsync ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" Background ĠSync ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( R . drawable . ic _ sync ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subtitle ( if Ġ( background Sync ) Ġ" Enabled " Ġelse Ġ" Disabled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Background Sync . show ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Switch Binding Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" about ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title (" About ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( R . drawable . ic _ info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click Listener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAbout Dialog . show ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ