• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.intentresolver.contentpreview.payloadtoggle.domain.interactor
18 
19 import com.android.intentresolver.backgroundDispatcher
20 import com.android.intentresolver.contentResolver
21 import com.android.intentresolver.contentpreview.HeadlineGenerator
22 import com.android.intentresolver.contentpreview.ImageLoader
23 import com.android.intentresolver.contentpreview.mimetypeClassifier
24 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.activityResultRepository
25 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.cursorPreviewsRepository
26 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.pendingSelectionCallbackRepository
27 import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.previewSelectionsRepository
28 import com.android.intentresolver.contentpreview.payloadtoggle.domain.cursor.payloadToggleCursorResolver
29 import com.android.intentresolver.contentpreview.payloadtoggle.domain.intent.pendingIntentSender
30 import com.android.intentresolver.contentpreview.payloadtoggle.domain.intent.targetIntentModifier
31 import com.android.intentresolver.contentpreview.payloadtoggle.domain.update.selectionChangeCallback
32 import com.android.intentresolver.contentpreview.uriMetadataReader
33 import com.android.intentresolver.data.repository.chooserRequestRepository
34 import com.android.intentresolver.inject.contentUris
35 import com.android.intentresolver.logging.eventLog
36 import com.android.intentresolver.packageManager
37 import com.android.systemui.kosmos.Kosmos
38 import com.android.systemui.kosmos.Kosmos.Fixture
39 
<lambda>null40 var Kosmos.focusedItemIndex: Int by Fixture { 0 }
<lambda>null41 var Kosmos.pageSize: Int by Fixture { 16 }
<lambda>null42 var Kosmos.maxLoadedPages: Int by Fixture { 3 }
43 
44 val Kosmos.chooserRequestInteractor
45     get() = ChooserRequestInteractor(chooserRequestRepository)
46 
47 val Kosmos.cursorPreviewsInteractor
48     get() =
49         CursorPreviewsInteractor(
50             interactor = setCursorPreviewsInteractor,
51             selectionInteractor = selectionInteractor,
52             focusedItemIdx = focusedItemIndex,
53             uriMetadataReader = uriMetadataReader,
54             pageSize = pageSize,
55             maxLoadedPages = maxLoadedPages,
56         )
57 
58 val Kosmos.customActionsInteractor
59     get() =
60         CustomActionsInteractor(
61             activityResultRepo = activityResultRepository,
62             bgDispatcher = backgroundDispatcher,
63             contentResolver = contentResolver,
64             eventLog = eventLog,
65             packageManager = packageManager,
66             chooserRequestInteractor = chooserRequestInteractor,
67         )
68 
69 val Kosmos.fetchPreviewsInteractor
70     get() =
71         FetchPreviewsInteractor(
72             setCursorPreviews = setCursorPreviewsInteractor,
73             selectionRepository = previewSelectionsRepository,
74             cursorInteractor = cursorPreviewsInteractor,
75             focusedItemIdx = focusedItemIndex,
76             selectedItems = contentUris,
77             uriMetadataReader = uriMetadataReader,
78             cursorResolver = payloadToggleCursorResolver,
79         )
80 
81 val Kosmos.processTargetIntentUpdatesInteractor
82     get() =
83         ProcessTargetIntentUpdatesInteractor(
84             selectionCallback = selectionChangeCallback,
85             repository = pendingSelectionCallbackRepository,
86             chooserRequestInteractor = updateChooserRequestInteractor,
87         )
88 
89 val Kosmos.selectablePreviewsInteractor
90     get() =
91         SelectablePreviewsInteractor(
92             previewsRepo = cursorPreviewsRepository,
93             selectionInteractor = selectionInteractor,
94         )
95 
96 val Kosmos.selectionInteractor
97     get() =
98         SelectionInteractor(
99             selectionsRepo = previewSelectionsRepository,
100             targetIntentModifier = targetIntentModifier,
101             updateTargetIntentInteractor = updateTargetIntentInteractor,
102             mimeTypeClassifier = mimetypeClassifier,
103         )
104 
105 val Kosmos.setCursorPreviewsInteractor
106     get() = SetCursorPreviewsInteractor(previewsRepo = cursorPreviewsRepository)
107 
108 val Kosmos.updateChooserRequestInteractor
109     get() =
110         UpdateChooserRequestInteractor(
111             chooserRequestRepository,
112             pendingIntentSender,
113         )
114 
115 val Kosmos.updateTargetIntentInteractor
116     get() =
117         UpdateTargetIntentInteractor(
118             repository = pendingSelectionCallbackRepository,
119             chooserRequestInteractor = updateChooserRequestInteractor,
120         )
121 
122 var Kosmos.payloadToggleImageLoader: ImageLoader by Fixture()
123 var Kosmos.headlineGenerator: HeadlineGenerator by Fixture()
124