Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f5cbed3 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[expressive design] Migrate App info page." into main

parents e0d8c8f9 e9a94d0d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ object SettingsDimension {
    val paddingExtraSmall6 = 12.dp
    val paddingLarge = 16.dp
    val paddingExtraLarge = 24.dp
    val paddingExtraLarge1 = 28.dp

    val spinnerHorizontalPadding = paddingExtraLarge
    val spinnerVerticalPadding = paddingLarge
@@ -47,6 +48,12 @@ object SettingsDimension {
        end = itemPaddingEnd,
        bottom = itemPaddingVertical,
    )
    val footerItemPadding = PaddingValues(
        start = paddingExtraLarge1,
        top = itemPaddingVertical,
        end = itemPaddingEnd,
        bottom = itemPaddingVertical,
    )
    val textFieldPadding = PaddingValues(
        start = itemPaddingStart,
        end = itemPaddingEnd,
+5 −3
Original line number Diff line number Diff line
@@ -49,7 +49,9 @@ fun CategoryTitle(title: String) {
        text = title,
        modifier =
            Modifier.padding(
                start = SettingsDimension.itemPaddingStart,
                start =
                    if (isSpaExpressiveEnabled) SettingsDimension.paddingSmall
                    else SettingsDimension.itemPaddingStart,
                top = 20.dp,
                end =
                    if (isSpaExpressiveEnabled) SettingsDimension.paddingSmall
@@ -67,16 +69,16 @@ fun CategoryTitle(title: String) {
 */
@Composable
fun Category(title: String? = null, content: @Composable ColumnScope.() -> Unit) {
    var displayTitle by remember { mutableStateOf(false) }
    Column(
        modifier =
            if (isSpaExpressiveEnabled)
            if (isSpaExpressiveEnabled && displayTitle)
                Modifier.padding(
                    horizontal = SettingsDimension.paddingLarge,
                    vertical = SettingsDimension.paddingSmall,
                )
            else Modifier
    ) {
        var displayTitle by remember { mutableStateOf(false) }
        if (title != null && displayTitle) CategoryTitle(title = title)
        Column(
            modifier =
+63 −28
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import androidx.compose.ui.unit.Dp
import com.android.settingslib.development.DevelopmentSettingsEnabler
import com.android.settingslib.spa.framework.compose.rememberDrawablePainter
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.framework.theme.isSpaExpressiveEnabled
import com.android.settingslib.spa.widget.preference.IntroAppPreference
import com.android.settingslib.spa.widget.ui.CopyableBody
import com.android.settingslib.spa.widget.ui.SettingsBody
import com.android.settingslib.spa.widget.ui.SettingsTitle
@@ -48,9 +50,38 @@ import com.android.settingslib.spaprivileged.model.app.rememberAppRepository
class AppInfoProvider(private val packageInfo: PackageInfo) {
    @Composable
    fun AppInfo(displayVersion: Boolean = false, isClonedAppPage: Boolean = false) {
        if (isSpaExpressiveEnabled) {
            val appRepository = rememberAppRepository()
            val app = checkNotNull(packageInfo.applicationInfo)
            val title = appRepository.produceLabel(app, isClonedAppPage).value

            val descriptions = mutableListOf<String>()
            if (app.isInstantApp) {
                descriptions.add(
                    stringResource(
                        com.android.settingslib.widget.preference.app.R.string.install_type_instant
                    )
                )
            }
            if (displayVersion) {
                val versionName = packageInfo.versionNameBidiWrapped
                if (versionName != null) descriptions.add(versionName)
            }

            IntroAppPreference(
                title = title,
                descriptions = descriptions,
                appIcon = {
                    Image(
                        painter = rememberDrawablePainter(appRepository.produceIcon(app).value),
                        contentDescription = appRepository.produceIconContentDescription(app).value,
                    )
                },
            )
        } else {
            Column(
            modifier = Modifier
                .fillMaxWidth()
                modifier =
                    Modifier.fillMaxWidth()
                        .padding(
                            horizontal = SettingsDimension.itemPaddingStart,
                            vertical = SettingsDimension.itemPaddingVertical,
@@ -67,6 +98,7 @@ class AppInfoProvider(private val packageInfo: PackageInfo) {
                if (displayVersion) AppVersion()
            }
        }
    }

    @Composable
    private fun InstallType(app: ApplicationInfo) {
@@ -89,7 +121,8 @@ class AppInfoProvider(private val packageInfo: PackageInfo) {
    @Composable
    fun FooterAppVersion(showPackageName: Boolean = rememberIsDevelopmentSettingsEnabled()) {
        val context = LocalContext.current
        val footer = remember(packageInfo, showPackageName) {
        val footer =
            remember(packageInfo, showPackageName) {
                val list = mutableListOf<String>()
                packageInfo.versionNameBidiWrapped?.let {
                    list += context.getString(R.string.version_text, it)
@@ -101,7 +134,11 @@ class AppInfoProvider(private val packageInfo: PackageInfo) {
            }
        if (footer.isBlank()) return
        HorizontalDivider()
        Column(modifier = Modifier.padding(SettingsDimension.itemPadding)) {
        Column(
            modifier =
                if (isSpaExpressiveEnabled) Modifier.padding(SettingsDimension.footerItemPadding)
                else Modifier.padding(SettingsDimension.itemPadding)
        ) {
            CopyableBody(footer)
        }
    }
@@ -109,9 +146,7 @@ class AppInfoProvider(private val packageInfo: PackageInfo) {
    @Composable
    private fun rememberIsDevelopmentSettingsEnabled(): Boolean {
        val context = LocalContext.current
        return remember {
            DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context)
        }
        return remember { DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context) }
    }

    private companion object {