package Ġcom . ad wi . pex wall papers . ui . settings Ċ Ċ import Ġcom . ad wi . pex wall papers . R Ċ import Ġcom . ad wi . pex wall papers . data . local . entity . Settings Ċ import Ġcom . ad wi . pex wall papers . data . local . entity . Wall paper Ċ import Ġcom . ad wi . pex wall papers . data . repository . F avorites Repository Ċ import Ġcom . ad wi . pex wall papers . data . repository . interfaces . Settings Repository Interface Ċ import Ġcom . ad wi . pex wall papers . di . Io Dispatcher Ċ import Ġcom . ad wi . pex wall papers . shared . tools . image . Image Tools Ċ import Ġcom . ad wi . pex wall papers . shared . tools . sharing . Sharing Tools Ċ import Ġcom . ad wi . pex wall papers . shared . work . Work Tools Ċ import Ġcom . ad wi . pex wall papers . ui . base . Base ViewModel Ċ import Ġcom . ad wi . pex wall papers . util . Constants . Companion . WORK _ AUTO _ WALL P AP ER Ċ import Ġcom . ad wi . pex wall papers . util . on Dispatcher Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠSettings ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠSettings Repository Interface , ĊĠĠĠ Ġprivate Ġval Ġfavor ites Repository : ĠF avorites Repository , ĊĠĠĠ Ġprivate Ġval Ġsharing Tools : ĠSh aring Tools , ĊĠĠĠ Ġprivate Ġval Ġwork Tools : ĠWork Tools , ĊĠĠĠ Ġprivate Ġval Ġimage Tools : ĠImage Tools , ĊĠĠĠ Ġ@ Io Dispatcher Ġprivate Ġval Ġio Dispatcher : ĠCor outine Dispatcher Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠĠ Ġval Ġfavor ites Ġ= ĠMutable State Flow < List < Wall paper >>( emptyList ()) ĊĊĠĠĠ Ġval Ġsettings Ġ= Ġrepository . get Settings () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġget F avorites () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget F avorites () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites . value Ġ= Ġfavor ites Repository . getAll F avorites (). first () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate New Wall paper Set ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update New Wall paper Set ( checked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Wall paper Recommend ations ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Wall paper Recommend ations ( checked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Auto Change Wall paper ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Auto Change Wall paper ( checked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Change Period Type ( radioButton : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Change Period Type ( radioButton ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Change Period Value ( period Value : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Change Period Value ( period Value ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Download Over WiFi ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Download Over WiFi ( checked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Auto Home ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Auto Home ( checked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Auto Lock ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . update Auto Lock ( checked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ Ġrepository . reset All Settings () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontact Support () Ġ{ ĊĠĠĠĠĠĠĠ Ġsharing Tools . contact Support () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Works ( work Tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwork Tools . cancel Works ( work Tag ) ĊĠĠĠĠĠĠĠ Ġimage Tools . delete All Backups () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Settings ( settings : ĠSettings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispatcher ( io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( settings . auto Change Wall paper Ġ&& Ġfavor ites . value . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwork Tools . setup Auto Change Wall paper Works ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites Ġ= Ġfavor ites . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Unit Ġ= Ġget TimeUnit ( settings . selected Button ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Value Ġ= Ġsettings . slider Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCancel Ġworks Ġif Ġnot Ġfavor ites Ġlist Ġis Ġempty ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Works ( WORK _ AUTO _ WALL P AP ER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget TimeUnit ( button Id : ĠInt ): ĠTimeUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( button Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . minutes _ radio _ button Ġ-> ĠTimeUnit . MIN UTES ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . hours _ radio _ button Ġ-> ĠTimeUnit . HOUR S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTimeUnit . DAYS ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }