1 /* <lambda>null2 * 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.icons.cache 18 19 import android.content.ComponentName 20 import android.content.Context 21 import android.os.UserHandle 22 import com.android.launcher3.icons.BaseIconFactory.IconOptions 23 import com.android.launcher3.icons.BitmapInfo 24 import com.android.launcher3.icons.IconProvider 25 26 /** Caching logic for ComponentWithLabelAndIcon */ 27 object CachedObjectCachingLogic : CachingLogic<CachedObject> { 28 29 override fun getComponent(info: CachedObject): ComponentName = info.component 30 31 override fun getUser(info: CachedObject): UserHandle = info.user 32 33 override fun getLabel(info: CachedObject): CharSequence? = info.label 34 35 override fun loadIcon(context: Context, cache: BaseIconCache, info: CachedObject): BitmapInfo { 36 val d = info.getFullResIcon(cache) ?: return BitmapInfo.LOW_RES_INFO 37 cache.iconFactory.use { li -> 38 return li.createBadgedIconBitmap(d, IconOptions().setUser(info.user)) 39 } 40 } 41 42 override fun getApplicationInfo(info: CachedObject) = info.applicationInfo 43 44 override fun getFreshnessIdentifier(item: CachedObject, provider: IconProvider): String? = 45 item.getFreshnessIdentifier(provider) 46 } 47