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

Commit fbb0222a authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Unify interaction source in SwitchPreference

Let toggleable() & Switch share the same MutableInteractionSource.
So when user press SwitchPreference, Switch widget will also have press
effect.

This is also the same behavior of androidx.preference

Also follow best practise to use T or () -> T, instead of State<T> param

Bug: 306658346
Test: manual - with Gallery
Test: unit test
Change-Id: Ibda986fbc034b1cb379d9e7c4c26b22fbd0bc905
parent 0e92f892
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ plugins {
}

allprojects {
    extra["jetpackComposeVersion"] = "1.6.0-alpha07"
    extra["jetpackComposeVersion"] = "1.6.0-alpha08"
}

subprojects {
+8 −1
Original line number Diff line number Diff line
@@ -26,7 +26,14 @@ dependencyResolutionManagement {
    rulesMode.set(RulesMode.FAIL_ON_PROJECT_RULES)

    repositories {
        google()
        google {
            content {
                includeGroupAndSubgroups("com.google")
                includeGroupAndSubgroups("com.android")
                includeGroupAndSubgroups("android")
                includeGroupAndSubgroups("androidx")
            }
        }
        mavenCentral()
        maven {
            url = uri("https://jitpack.io")
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ dependencies {
    api("androidx.slice:slice-builders:1.1.0-alpha02")
    api("androidx.slice:slice-core:1.1.0-alpha02")
    api("androidx.slice:slice-view:1.1.0-alpha02")
    api("androidx.compose.material3:material3:1.2.0-alpha09")
    api("androidx.compose.material3:material3:1.2.0-alpha10")
    api("androidx.compose.material:material-icons-extended:$jetpackComposeVersion")
    api("androidx.compose.runtime:runtime-livedata:$jetpackComposeVersion")
    api("androidx.compose.ui:ui-tooling-preview:$jetpackComposeVersion")
+2 −4
Original line number Diff line number Diff line
@@ -26,13 +26,11 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.framework.theme.SettingsOpacity.alphaForEnabled
import com.android.settingslib.spa.framework.theme.SettingsTheme
@@ -44,7 +42,7 @@ internal fun BaseLayout(
    subTitle: @Composable () -> Unit,
    modifier: Modifier = Modifier,
    icon: (@Composable () -> Unit)? = null,
    enabled: State<Boolean> = true.toState(),
    enabled: () -> Boolean = { true },
    paddingStart: Dp = SettingsDimension.itemPaddingStart,
    paddingEnd: Dp = SettingsDimension.itemPaddingEnd,
    paddingVertical: Dp = SettingsDimension.itemPaddingVertical,
@@ -56,7 +54,7 @@ internal fun BaseLayout(
            .padding(end = paddingEnd),
        verticalAlignment = Alignment.CenterVertically,
    ) {
        val alphaModifier = Modifier.alphaForEnabled(enabled.value)
        val alphaModifier = Modifier.alphaForEnabled(enabled())
        BaseIcon(icon, alphaModifier, paddingStart)
        Titles(
            title = title,
+5 −7
Original line number Diff line number Diff line
@@ -20,11 +20,9 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.BatteryChargingFull
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.ui.SettingsBody
@@ -32,11 +30,11 @@ import com.android.settingslib.spa.widget.ui.SettingsBody
@Composable
internal fun BasePreference(
    title: String,
    summary: State<String>,
    summary: () -> String,
    modifier: Modifier = Modifier,
    singleLineSummary: Boolean = false,
    icon: @Composable (() -> Unit)? = null,
    enabled: State<Boolean> = true.toState(),
    enabled: () -> Boolean = { true },
    paddingStart: Dp = SettingsDimension.itemPaddingStart,
    paddingEnd: Dp = SettingsDimension.itemPaddingEnd,
    paddingVertical: Dp = SettingsDimension.itemPaddingVertical,
@@ -46,7 +44,7 @@ internal fun BasePreference(
        title = title,
        subTitle = {
            SettingsBody(
                body = summary.value,
                body = summary(),
                maxLines = if (singleLineSummary) 1 else Int.MAX_VALUE,
            )
        },
@@ -66,7 +64,7 @@ private fun BasePreferencePreview() {
    SettingsTheme {
        BasePreference(
            title = "Screen Saver",
            summary = "Clock".toState(),
            summary = { "Clock" },
        )
    }
}
@@ -77,7 +75,7 @@ private fun BasePreferenceIconPreview() {
    SettingsTheme {
        BasePreference(
            title = "Screen Saver",
            summary = "Clock".toState(),
            summary = { "Clock" },
            icon = {
                Icon(imageVector = Icons.Outlined.BatteryChargingFull, contentDescription = null)
            },
Loading