package Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . screen Ċ Ċ import Ġandroidx . annotation . Id Res Ċ import Ġc afe . ad riel . broker . Broker Subscriber Ċ import Ġc afe . ad riel . broker . lifecycle . subscribe Ċ import Ġc afe . ad riel . gw ent wall papers . domain . inter actor . Is Favorite Interactor Ċ import Ġc afe . ad riel . gw ent wall papers . domain . model . App Info Ċ import Ġc afe . ad riel . gw ent wall papers . domain . model . search . Search Filter Ċ import Ġc afe . ad riel . gw ent wall papers . domain . model . search . Search Sorter Ċ import Ġc afe . ad riel . gw ent wall papers . domain . model . settings . Auto Wall paper Screen Ċ import Ġc afe . ad riel . gw ent wall papers . domain . model . wall paper . Wall paper Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . R Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . databinding . Screen Home Binding Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . activity Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . coroutine Scope Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . current Section Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . get MenuItem Action View Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . hide Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . hide Items Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . k oin Scope Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . navigate Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . open App On Play Store Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . share Text Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . show Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . show Items If Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . k tx . tint StatusBar Icons Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . model . Screen Section Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . model . Wall paper Event Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . model . Wall paper Event . Wall paper Expand er Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . dialog . Search Filter Dialog Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . dialog . Search Sorter Dialog Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . dialog . Section Navigation Dialog Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . dialog . Set Wall paper Location Dialog Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . helper . Connectivity Helper Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . helper . Wall paper Expand er Helper Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . helper . Wall paper Helper Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . view . Filter MenuItem View Ċ import Ġc afe . ad riel . gw ent wall papers . presentation . internal . ui . view . Sort MenuItem View Ċ import Ġc afe . ad riel . gw ent wall papers . shared . di . Injection Qualifier . Interactor Ċ import Ġc afe . ad riel . gw ent wall papers . shared . logger . Logger Ċ import Ġc afe . ad riel . hal . currentState Ċ import Ġc afe . ad riel . hal . emit Ċ import Ġc afe . ad riel . hal . observe State Ċ import Ġcom . google . android . material . bottom app bar . Bottom AppBar Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . k oin . android x . view model . scope . viewModel Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġorg . k oin . core . inject Ċ import Ġorg . k oin . core . qual ifier . named Ċ Ċ internal Ġclass ĠHome Screen ( private Ġval Ġbinding : ĠScreen Home Binding ) Ġ: ĠK oin Component Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġbinding . k oin Scope . viewModel < Home ViewModel >( binding . activity ) ĊĠĠĠ Ġprivate Ġval Ġevent Subscriber Ġby Ġbinding . k oin Scope . inject < Broker Subscriber >() ĊĠĠĠ Ġprivate Ġval Ġconnectivity Helper Ġby Ġbinding . k oin Scope . inject < Connectivity Helper >() ĊĠĠĠ Ġprivate Ġval Ġwall paper Expand er Helper Ġby Ġbinding . k oin Scope . inject < Wall paper Expand er Helper >() ĊĠĠĠ Ġprivate Ġval Ġwall paper Helper Ġby Ġinject < Wall paper Helper >() ĊĠĠĠ Ġprivate Ġval Ġis Favorite Ġby Ġinject < Is Favorite Interactor >( named < Interactor . Is Favorite >()) ĊĠĠĠ Ġprivate Ġval Ġapp Info Ġby Ġinject < App Info >() ĊĠĠĠ Ġprivate Ġval Ġlogger Ġby Ġinject < Logger >() ĊĊĠĠĠ Ġprivate Ġval Ġwall paper MenuItem Ids Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠ ĠR . id . action _ favorite , ĊĠĠĠĠĠĠĠ ĠR . id . action _ set _ as , ĊĠĠĠĠĠĠĠ ĠR . id . action _ share _ wall paper , ĊĠĠĠĠĠĠĠ ĠR . id . action _ download , ĊĠĠĠĠĠĠĠ ĠR . id . action _ copy _ url ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Helpers () ĊĠĠĠĠĠĠĠ Ġsetup Views () ĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Helpers () Ġ{ ĊĠĠĠĠĠĠĠ Ġconnectivity Helper . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Section Navigation Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener Ġ{ Ġmenu Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( viewModel . currentState . section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Section . WALL P AP ERS Ġ-> Ġhandle Wall papers MenuItem Clicked ( menuItem . itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Section . AB OUT Ġ-> Ġhandle About MenuItem Clicked ( menuItem . itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . set Wall paper . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġshow Set Wall paper Location Dialog () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Section ( viewModel . currentState . section ) ĊĠĠĠĠĠĠĠ Ġupdate Search Bad ges ( viewModel . currentState . filter , ĠviewModel . currentState . sorter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . observe State ( binding . coroutine Scope ) Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Section ( state . section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Search Bad ges ( state . filter , Ġstate . sorter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġevent Subscriber . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe < Wall paper Event . Favorite Changed >( binding . activity ) Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Favorite Icon ( event . favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe < Wall paper Expand er . Expanded >( binding . activity ) Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Wall paper Expanded ( event . wall paper ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe < Wall paper Expand er . Shrink ed >( binding . activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Wall paper Shrink ed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Wall paper Expanded ( wall paper : ĠWall paper ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . set Wall paper . show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . navigation . menu . show Items If Ġ{ Ġit . itemId Ġin Ġwall paper MenuItem Ids Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . coroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Favorite Icon ( is Favorite ( wall paper )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . hide Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Wall paper Shrink ed () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . set Wall paper . hide Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . navigation . set Navigation Icon ( R . drawable . ic _ menu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Search Bad ges ( viewModel . currentState . filter , ĠviewModel . currentState . sorter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Section ( viewModel . currentState . section ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Section ( section : ĠScreen Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . activity . tint StatusBar Icons ( section . white StatusBar ) ĊĊĠĠĠĠĠĠĠ Ġbinding . navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . section Container . current Section Ġ== ĠScreen Section . WALL P AP ERS Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection Ġ== ĠScreen Section . WALL P AP ERS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fab Alignment Mode And Replace Menu ( Bottom AppBar . FAB _ ALIGNMENT _ MODE _ END , Ġsection . menu Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreplace Menu ( section . menu Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . action _ app _ version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . title Ġ= Ġapp Info . version ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . section Container . navigate ( section ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Search Bad ges ( filter : ĠSearch Filter , Ġsort er : ĠSearch Sorter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . navigation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get MenuItem Action View < Filter MenuItem View >( R . id . action _ filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Badge ( filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġshow Search Filter Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . navigation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get MenuItem Action View < Sort MenuItem View >( R . id . action _ sort ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġshow Search Sorter Dialog () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Badge ( sorter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Favorite Icon ( favorite : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . navigation . menu ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Item ( R . id . action _ favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . setIcon ( if Ġ( favorite ) ĠR . drawable . ic _ favorite _ on Ġelse ĠR . drawable . ic _ favorite _ off ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Wall papers MenuItem Clicked (@ Id Res ĠitemId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġstatus Ġ= Ġwall paper Expand er Helper . current Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWall paper Expand er . Expanded Ġ-> Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ favorite Ġ-> ĠviewModel Ġemit ĠHome Action . Toggle Favorite ( status . wall paper ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ copy _ url Ġ-> Ġwall paper Helper . copy Url To Clipboard ( status . wall paper , Ġbinding ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ share _ wall paper Ġ-> Ġconnectivity Helper . run If Connected ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwall paper Helper . share ( status . wall paper , Ġbinding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ download Ġ-> Ġconnectivity Helper . run If Connected ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwall paper Helper . save ( status . wall paper , Ġbinding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ set _ as Ġ-> Ġconnectivity Helper . run If Connected ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwall paper Helper . set Ex tern ally ( status . wall paper , Ġbinding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle About MenuItem Clicked (@ Id Res ĠitemId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ rate _ review Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . activity . open App On Play Store ( app Info . market Uri , Ġapp Info . play Store Url , Ġlogger ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ share _ app Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . activity . share Text ( binding . activity . getString ( R . string . about _ share _ app , Ġapp Info . play Store Url )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Wall paper ( wall paper : ĠWall paper , Ġscreen : ĠAuto Wall paper Screen ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconnectivity Helper . run If Connected ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwall paper Helper . set Direct ly ( wall paper , Ġscreen , Ġbinding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Section Navigation Dialog () Ġ= ĊĠĠĠĠĠĠĠ ĠSection Navigation Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġbinding . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Section Ġ= ĠviewModel . currentState . section , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Selected Ġ= Ġ{ ĠviewModel Ġemit ĠHome Action . Navigate ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ). show () ĊĊĠĠĠ Ġprivate Ġfun Ġshow Search Filter Dialog () Ġ= ĊĠĠĠĠĠĠĠ ĠSearch Filter Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġbinding . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Filter Ġ= ĠviewModel . currentState . filter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Selected Ġ= Ġ{ ĠviewModel Ġemit ĠHome Action . Update Search Filter ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ). show () ĊĊĠĠĠ Ġprivate Ġfun Ġshow Search Sorter Dialog () Ġ= ĊĠĠĠĠĠĠĠ ĠSearch Sorter Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġbinding . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Sorter Ġ= ĠviewModel . currentState . sorter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Selected Ġ= Ġ{ ĠviewModel Ġemit ĠHome Action . Update Search Sorter ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ). show () ĊĊĠĠĠ Ġprivate Ġfun Ġshow Set Wall paper Location Dialog () Ġ= ĊĠĠĠĠĠĠĠ ĠSet Wall paper Location Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġbinding . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Selected Ġ= Ġ{ Ġscreen Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġstatus Ġ= Ġwall paper Expand er Helper . current Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWall paper Expand er . Expanded Ġ-> Ġset Wall paper ( status . wall paper , Ġscreen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). show () Ċ } Ċ