Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 28 additions & 3 deletions lawnchair/src/app/lawnchair/ui/preferences/components/AppItem.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,21 @@ import androidx.compose.foundation.layout.width
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.painter.BitmapPainter
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import app.lawnchair.ui.placeholder.PlaceholderHighlight
import app.lawnchair.ui.placeholder.fade
import app.lawnchair.ui.placeholder.placeholder
import app.lawnchair.ui.preferences.components.layout.PreferenceTemplate
import app.lawnchair.util.App
import com.android.launcher3.model.data.AppInfo
import com.google.accompanist.drawablepainter.rememberDrawablePainter

@Composable
fun AppItem(
Expand All @@ -47,6 +52,25 @@ fun AppItem(
modifier: Modifier = Modifier,
widget: (@Composable () -> Unit)? = null,
endWidget: (@Composable () -> Unit)? = null,
) {
AppItem(
label = label,
icon = remember(icon) { BitmapPainter(icon.asImageBitmap()) },
onClick = onClick,
modifier = modifier,
widget = widget,
endWidget = endWidget,
)
}

@Composable
fun AppItem(
label: String,
icon: Painter,
onClick: () -> Unit,
modifier: Modifier = Modifier,
widget: (@Composable () -> Unit)? = null,
endWidget: (@Composable () -> Unit)? = null,
) {
AppItemLayout(
modifier = modifier
Expand All @@ -55,7 +79,7 @@ fun AppItem(
endWidget = endWidget,
icon = {
Image(
bitmap = icon.asImageBitmap(),
painter = icon,
contentDescription = null,
modifier = Modifier.size(30.dp),
)
Expand All @@ -73,7 +97,7 @@ fun AppItem(
) {
AppItem(
label = app.label,
icon = app.icon,
icon = rememberDrawablePainter(app.icon),
onClick = { onClick(app) },
widget = widget,
endWidget = endWidget,
Expand All @@ -87,9 +111,10 @@ fun AppItem(
widget: (@Composable () -> Unit)? = null,
endWidget: (@Composable () -> Unit)? = null,
) {
val context = LocalContext.current
AppItem(
label = appInfo.title.toString(),
icon = appInfo.bitmap.icon,
icon = rememberDrawablePainter(remember(appInfo) { appInfo.bitmap.newIcon(context) }),
onClick = { onClick(appInfo) },
widget = widget,
endWidget = endWidget,
Expand Down
7 changes: 4 additions & 3 deletions lawnchair/src/app/lawnchair/util/AppsList.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package app.lawnchair.util
import android.content.Context
import android.content.pm.LauncherActivityInfo
import android.content.pm.LauncherApps
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Handler
import android.util.Log
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -76,13 +76,14 @@ fun appsState(
class App(context: Context, private val info: LauncherActivityInfo) {

val label get() = info.label.toString()
val icon: Bitmap
val icon: Drawable
val key = ComponentKey(info.componentName, info.user)

init {
val appInfo = AppInfo(context, info, info.user)
LauncherAppState.getInstance(context).iconCache.getTitleAndIcon(appInfo, DEFAULT_LOOKUP_FLAG)
icon = appInfo.bitmap.icon
// bitmap.icon is the bare icon; newIcon() adds the work/clone/private badge from bitmap.flags.
icon = appInfo.bitmap.newIcon(context)
}

fun toAppInfo(context: Context): AppInfo {
Expand Down
Loading