mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 18:58:19 +00:00
104 lines
3.7 KiB
Kotlin
104 lines
3.7 KiB
Kotlin
|
|
/*
|
||
|
|
* Copyright (C) 2024 The Android Open Source Project
|
||
|
|
*
|
||
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
|
* you may not use this file except in compliance with the License.
|
||
|
|
* You may obtain a copy of the License at
|
||
|
|
*
|
||
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
*
|
||
|
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
* See the License for the specific language governing permissions and
|
||
|
|
* limitations under the License.
|
||
|
|
*/
|
||
|
|
|
||
|
|
package com.android.launcher3.model
|
||
|
|
|
||
|
|
import android.content.pm.LauncherApps
|
||
|
|
import android.content.pm.ShortcutInfo
|
||
|
|
import android.os.UserHandle
|
||
|
|
import android.text.TextUtils
|
||
|
|
import com.android.launcher3.LauncherModel.ModelUpdateTask
|
||
|
|
import com.android.launcher3.logging.FileLog
|
||
|
|
import com.android.launcher3.model.PackageUpdatedTask.OP_ADD
|
||
|
|
import com.android.launcher3.model.PackageUpdatedTask.OP_REMOVE
|
||
|
|
import com.android.launcher3.model.PackageUpdatedTask.OP_SUSPEND
|
||
|
|
import com.android.launcher3.model.PackageUpdatedTask.OP_UNAVAILABLE
|
||
|
|
import com.android.launcher3.model.PackageUpdatedTask.OP_UNSUSPEND
|
||
|
|
import com.android.launcher3.model.PackageUpdatedTask.OP_UPDATE
|
||
|
|
import java.util.function.Consumer
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Implementation of {@link LauncherApps#Callbacks} which converts various events to corresponding
|
||
|
|
* model tasks
|
||
|
|
*/
|
||
|
|
class ModelLauncherCallbacks(private var taskExecutor: Consumer<ModelUpdateTask>) :
|
||
|
|
LauncherApps.Callback() {
|
||
|
|
|
||
|
|
override fun onPackageAdded(packageName: String, user: UserHandle) {
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_ADD, user, packageName))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackageChanged(packageName: String, user: UserHandle) {
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_UPDATE, user, packageName))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackageLoadingProgressChanged(
|
||
|
|
packageName: String,
|
||
|
|
user: UserHandle,
|
||
|
|
progress: Float
|
||
|
|
) {
|
||
|
|
taskExecutor.accept(PackageIncrementalDownloadUpdatedTask(packageName, user, progress))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackageRemoved(packageName: String, user: UserHandle) {
|
||
|
|
FileLog.d(TAG, "package removed received $packageName")
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_REMOVE, user, packageName))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackagesAvailable(
|
||
|
|
vararg packageNames: String,
|
||
|
|
user: UserHandle,
|
||
|
|
replacing: Boolean
|
||
|
|
) {
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_UPDATE, user, *packageNames))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackagesSuspended(vararg packageNames: String, user: UserHandle) {
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_SUSPEND, user, *packageNames))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackagesUnavailable(
|
||
|
|
packageNames: Array<String>,
|
||
|
|
user: UserHandle,
|
||
|
|
replacing: Boolean
|
||
|
|
) {
|
||
|
|
if (!replacing) {
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_UNAVAILABLE, user, *packageNames))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onPackagesUnsuspended(vararg packageNames: String, user: UserHandle) {
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_UNSUSPEND, user, *packageNames))
|
||
|
|
}
|
||
|
|
|
||
|
|
override fun onShortcutsChanged(
|
||
|
|
packageName: String,
|
||
|
|
shortcuts: MutableList<ShortcutInfo>,
|
||
|
|
user: UserHandle
|
||
|
|
) {
|
||
|
|
taskExecutor.accept(ShortcutsChangedTask(packageName, shortcuts, user, true))
|
||
|
|
}
|
||
|
|
|
||
|
|
fun onPackagesRemoved(user: UserHandle, packages: List<String>) {
|
||
|
|
FileLog.d(TAG, "package removed received " + TextUtils.join(",", packages))
|
||
|
|
taskExecutor.accept(PackageUpdatedTask(OP_REMOVE, user, *packages.toTypedArray()))
|
||
|
|
}
|
||
|
|
|
||
|
|
companion object {
|
||
|
|
private const val TAG = "LauncherAppsCallbackImpl"
|
||
|
|
}
|
||
|
|
}
|