• Home
  • 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.launcher3.model
18 
19 import android.content.pm.LauncherApps
20 import android.content.pm.ShortcutInfo
21 import android.os.UserHandle
22 import android.text.TextUtils
23 import com.android.launcher3.LauncherModel.ModelUpdateTask
24 import com.android.launcher3.logging.FileLog
25 import com.android.launcher3.model.PackageUpdatedTask.OP_ADD
26 import com.android.launcher3.model.PackageUpdatedTask.OP_REMOVE
27 import com.android.launcher3.model.PackageUpdatedTask.OP_SUSPEND
28 import com.android.launcher3.model.PackageUpdatedTask.OP_UNAVAILABLE
29 import com.android.launcher3.model.PackageUpdatedTask.OP_UNSUSPEND
30 import com.android.launcher3.model.PackageUpdatedTask.OP_UPDATE
31 import java.util.function.Consumer
32 
33 /**
34  * Implementation of {@link LauncherApps#Callbacks} which converts various events to corresponding
35  * model tasks
36  */
37 class ModelLauncherCallbacks(private var taskExecutor: Consumer<ModelUpdateTask>) :
38     LauncherApps.Callback() {
39 
onPackageAddednull40     override fun onPackageAdded(packageName: String, user: UserHandle) {
41         taskExecutor.accept(PackageUpdatedTask(OP_ADD, user, packageName))
42     }
43 
onPackageChangednull44     override fun onPackageChanged(packageName: String, user: UserHandle) {
45         taskExecutor.accept(PackageUpdatedTask(OP_UPDATE, user, packageName))
46     }
47 
onPackageLoadingProgressChangednull48     override fun onPackageLoadingProgressChanged(
49         packageName: String,
50         user: UserHandle,
51         progress: Float
52     ) {
53         taskExecutor.accept(PackageIncrementalDownloadUpdatedTask(packageName, user, progress))
54     }
55 
onPackageRemovednull56     override fun onPackageRemoved(packageName: String, user: UserHandle) {
57         FileLog.d(TAG, "package removed received $packageName")
58         taskExecutor.accept(PackageUpdatedTask(OP_REMOVE, user, packageName))
59     }
60 
onPackagesAvailablenull61     override fun onPackagesAvailable(
62         vararg packageNames: String,
63         user: UserHandle,
64         replacing: Boolean
65     ) {
66         taskExecutor.accept(PackageUpdatedTask(OP_UPDATE, user, *packageNames))
67     }
68 
onPackagesSuspendednull69     override fun onPackagesSuspended(vararg packageNames: String, user: UserHandle) {
70         taskExecutor.accept(PackageUpdatedTask(OP_SUSPEND, user, *packageNames))
71     }
72 
onPackagesUnavailablenull73     override fun onPackagesUnavailable(
74         packageNames: Array<String>,
75         user: UserHandle,
76         replacing: Boolean
77     ) {
78         if (!replacing) {
79             taskExecutor.accept(PackageUpdatedTask(OP_UNAVAILABLE, user, *packageNames))
80         }
81     }
82 
onPackagesUnsuspendednull83     override fun onPackagesUnsuspended(vararg packageNames: String, user: UserHandle) {
84         taskExecutor.accept(PackageUpdatedTask(OP_UNSUSPEND, user, *packageNames))
85     }
86 
onShortcutsChangednull87     override fun onShortcutsChanged(
88         packageName: String,
89         shortcuts: MutableList<ShortcutInfo>,
90         user: UserHandle
91     ) {
92         taskExecutor.accept(ShortcutsChangedTask(packageName, shortcuts, user, true))
93     }
94 
onPackagesRemovednull95     fun onPackagesRemoved(user: UserHandle, packages: List<String>) {
96         FileLog.d(TAG, "package removed received " + TextUtils.join(",", packages))
97         taskExecutor.accept(PackageUpdatedTask(OP_REMOVE, user, *packages.toTypedArray()))
98     }
99 
100     companion object {
101         private const val TAG = "LauncherAppsCallbackImpl"
102     }
103 }
104