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

Commit 2d95833e authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "[Spa] Fix State<T> as a parameter of SwitchPreference" into main

parents ada1af33 26521479
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
/*
 * Copyright 2022 The Android Open Source Project
 * Copyright (C) 2023 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.
@@ -25,11 +25,16 @@ plugins {
    alias(libs.plugins.kotlin.android) apply false
}

val androidTop : String = File(rootDir, "../../../../..").canonicalPath

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

subprojects {
    layout.buildDirectory.set(file("$androidTop/out/gradle-spa/$name"))

    plugins.withType<AndroidBasePlugin> {
        configure<BaseExtension> {
            compileSdkVersion(34)
@@ -38,10 +43,11 @@ subprojects {
                minSdk = 21
                targetSdk = 34
            }
        }

            compileOptions {
                sourceCompatibility = JavaVersion.VERSION_17
                targetCompatibility = JavaVersion.VERSION_17
        configure<JavaPluginExtension> {
            toolchain {
                languageVersion.set(JavaLanguageVersion.of(libs.versions.jvm.get()))
            }
        }
    }
@@ -60,7 +66,7 @@ subprojects {

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            jvmTarget = "17"
            jvmTarget = libs.versions.jvm.get()
            freeCompilerArgs = listOf("-Xjvm-default=all")
        }
    }
+5 −3
Original line number Diff line number Diff line
@@ -17,9 +17,11 @@
package com.android.settingslib.spa.gallery.itemList

import android.os.Bundle
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.core.os.bundleOf
import androidx.navigation.NavType
import androidx.navigation.navArgument
@@ -79,13 +81,13 @@ object ItemOperatePageProvider : SettingsPageProvider {
        entryList.add(
            SettingsEntryBuilder.create("ItemOp", owner)
                .setUiLayoutFn {
                    val checked = rememberSaveable { mutableStateOf(false) }
                    var checked by rememberSaveable { mutableStateOf(false) }
                    SwitchPreference(remember {
                        object : SwitchPreferenceModel {
                            override val title = "Item operation: $opName"
                            override val checked = checked
                            override val checked = { checked }
                            override val onCheckedChange =
                                { newChecked: Boolean -> checked.value = newChecked }
                                { newChecked: Boolean -> checked = newChecked }
                        }
                    })
                }.build(),
+12 −11
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 * Copyright (C) 2023 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.
@@ -18,16 +18,17 @@ package com.android.settingslib.spa.gallery.preference

import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import com.android.settingslib.spa.framework.common.SettingsEntry
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.preference.MainSwitchPreference
import com.android.settingslib.spa.widget.preference.Preference
@@ -75,25 +76,25 @@ object MainSwitchPreferencePageProvider : SettingsPageProvider {

@Composable
private fun SampleMainSwitchPreference() {
    val checked = rememberSaveable { mutableStateOf(false) }
    var checked by rememberSaveable { mutableStateOf(false) }
    MainSwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "MainSwitchPreference"
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    })
}

@Composable
private fun SampleNotChangeableMainSwitchPreference() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    MainSwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "Not changeable"
            override val changeable = stateOf(false)
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val changeable = { false }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    })
}
+18 −17
Original line number Diff line number Diff line
@@ -20,17 +20,18 @@ import android.os.Bundle
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.AirplanemodeActive
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import com.android.settingslib.spa.framework.common.SettingsEntry
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
@@ -98,32 +99,32 @@ object SwitchPreferencePageProvider : SettingsPageProvider {

@Composable
private fun SampleSwitchPreference() {
    val checked = rememberSaveable { mutableStateOf(false) }
    var checked by rememberSaveable { mutableStateOf(false) }
    SwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "SwitchPreference"
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    })
}

@Composable
private fun SampleSwitchPreferenceWithSummary() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    SwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "SwitchPreference"
            override val summary = { "With summary" }
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    })
}

@Composable
private fun SampleSwitchPreferenceWithAsyncSummary() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    val summary = produceState(initialValue = " ") {
        delay(1000L)
        value = "Async summary"
@@ -132,34 +133,34 @@ private fun SampleSwitchPreferenceWithAsyncSummary() {
        object : SwitchPreferenceModel {
            override val title = "SwitchPreference"
            override val summary = { summary.value }
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    })
}

@Composable
private fun SampleNotChangeableSwitchPreference() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    SwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "SwitchPreference"
            override val summary = { "Not changeable" }
            override val changeable = stateOf(false)
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val changeable = { false }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    })
}

@Composable
private fun SampleSwitchPreferenceWithIcon() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    SwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "SwitchPreference"
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
            override val icon = @Composable {
                SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive)
            }
+15 −14
Original line number Diff line number Diff line
@@ -18,17 +18,18 @@ package com.android.settingslib.spa.gallery.preference

import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import com.android.settingslib.spa.framework.common.SettingsEntry
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
@@ -89,32 +90,32 @@ object TwoTargetSwitchPreferencePageProvider : SettingsPageProvider {

@Composable
private fun SampleTwoTargetSwitchPreference() {
    val checked = rememberSaveable { mutableStateOf(false) }
    var checked by rememberSaveable { mutableStateOf(false) }
    TwoTargetSwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "TwoTargetSwitchPreference"
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    }) {}
}

@Composable
private fun SampleTwoTargetSwitchPreferenceWithSummary() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    TwoTargetSwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "TwoTargetSwitchPreference"
            override val summary = { "With summary" }
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    }) {}
}

@Composable
private fun SampleTwoTargetSwitchPreferenceWithAsyncSummary() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    val summary = produceState(initialValue = " ") {
        delay(1000L)
        value = "Async summary"
@@ -123,22 +124,22 @@ private fun SampleTwoTargetSwitchPreferenceWithAsyncSummary() {
        object : SwitchPreferenceModel {
            override val title = "TwoTargetSwitchPreference"
            override val summary = { summary.value }
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    }) {}
}

@Composable
private fun SampleNotChangeableTwoTargetSwitchPreference() {
    val checked = rememberSaveable { mutableStateOf(true) }
    var checked by rememberSaveable { mutableStateOf(true) }
    TwoTargetSwitchPreference(remember {
        object : SwitchPreferenceModel {
            override val title = "TwoTargetSwitchPreference"
            override val summary = { "Not changeable" }
            override val changeable = stateOf(false)
            override val checked = checked
            override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked }
            override val changeable = { false }
            override val checked = { checked }
            override val onCheckedChange = { newChecked: Boolean -> checked = newChecked }
        }
    }) {}
}
Loading