Browse Source

[resources] Mark ResourceEnvironment as experimental and add a sample of usage.

pull/4651/head
Konstantin Tskhovrebov 4 weeks ago
parent
commit
a98d479952
  1. 5
      components/resources/demo/shared/build.gradle.kts
  2. 53
      components/resources/demo/shared/src/commonMain/kotlin/org/jetbrains/compose/resources/demo/shared/FileRes.kt
  3. 1
      components/resources/library/build.gradle.kts
  4. 2
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/PluralStringResources.kt
  5. 1
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/ResourceEnvironment.kt
  6. 1
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringArrayResources.kt
  7. 2
      components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringResources.kt

5
components/resources/demo/shared/build.gradle.kts

@ -52,11 +52,6 @@ kotlin {
applyDefaultHierarchyTemplate()
sourceSets {
all {
languageSettings {
optIn("org.jetbrains.compose.resources.ExperimentalResourceApi")
}
}
val desktopMain by getting
val wasmJsMain by getting

53
components/resources/demo/shared/src/commonMain/kotlin/org/jetbrains/compose/resources/demo/shared/FileRes.kt

@ -9,11 +9,16 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import components.resources.demo.shared.generated.resources.Res
import components.resources.demo.shared.generated.resources.droid_icon
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.getDrawableResourceBytes
import org.jetbrains.compose.resources.rememberResourceEnvironment
@OptIn(ExperimentalResourceApi::class)
@Composable
fun FileRes(paddingValues: PaddingValues) {
Column(
modifier = Modifier.padding(paddingValues)
modifier = Modifier.padding(paddingValues).verticalScroll(rememberScrollState())
) {
Text(
modifier = Modifier.padding(16.dp),
@ -48,6 +53,34 @@ fun FileRes(paddingValues: PaddingValues) {
Text(bytes.decodeToString())
""".trimIndent()
)
HorizontalDivider(modifier = Modifier.fillMaxWidth().padding(bottom = 16.dp))
OutlinedCard(
modifier = Modifier.padding(horizontal = 16.dp),
shape = RoundedCornerShape(4.dp),
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.primaryContainer)
) {
val composeEnv = rememberResourceEnvironment()
var bytes by remember { mutableStateOf(ByteArray(0)) }
LaunchedEffect(Unit) {
bytes = getDrawableResourceBytes(composeEnv, Res.drawable.droid_icon)
}
Text(
modifier = Modifier.padding(8.dp),
text = "droid_icon byte size = " + bytes.size,
color = MaterialTheme.colorScheme.onPrimaryContainer
)
}
Text(
modifier = Modifier.padding(16.dp),
text = """
val composeEnv = rememberResourceEnvironment()
var bytes by remember { mutableStateOf(ByteArray(0)) }
LaunchedEffect(Unit) {
bytes = getDrawableResourceBytes(composeEnv, Res.drawable.droid_icon)
}
Text("droid_icon byte size = " + bytes.size)
""".trimIndent()
)
Text(
modifier = Modifier.padding(16.dp),
text = "File: 'files/platform-text.txt'",
@ -80,5 +113,23 @@ fun FileRes(paddingValues: PaddingValues) {
Text(bytes.decodeToString())
""".trimIndent()
)
HorizontalDivider(modifier = Modifier.fillMaxWidth().padding(bottom = 16.dp))
OutlinedCard(
modifier = Modifier.padding(horizontal = 16.dp),
shape = RoundedCornerShape(4.dp),
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.primaryContainer)
) {
Text(
modifier = Modifier.padding(8.dp),
text = "File URI: " + Res.getUri("files/platform-text.txt"),
color = MaterialTheme.colorScheme.onPrimaryContainer
)
}
Text(
modifier = Modifier.padding(16.dp),
text = """
Text("File URI: " + Res.getUri("files/platform-text.txt"))
""".trimIndent()
)
}
}

1
components/resources/library/build.gradle.kts

@ -53,6 +53,7 @@ kotlin {
optIn("kotlinx.cinterop.ExperimentalForeignApi")
optIn("kotlin.experimental.ExperimentalNativeApi")
optIn("org.jetbrains.compose.resources.InternalResourceApi")
optIn("org.jetbrains.compose.resources.ExperimentalResourceApi")
}
}

2
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/PluralStringResources.kt

@ -42,7 +42,6 @@ fun pluralStringResource(resource: PluralStringResource, quantity: Int): String
*
* @throws IllegalArgumentException If the provided ID or the pluralization is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getPluralString(resource: PluralStringResource, quantity: Int): String =
loadPluralString(resource, quantity, DefaultResourceReader, getSystemResourceEnvironment())
@ -111,7 +110,6 @@ fun pluralStringResource(resource: PluralStringResource, quantity: Int, vararg f
*
* @throws IllegalArgumentException If the provided ID or the pluralization is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getPluralString(resource: PluralStringResource, quantity: Int, vararg formatArgs: Any): String =
loadPluralString(
resource, quantity,

1
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/ResourceEnvironment.kt

@ -5,6 +5,7 @@ import androidx.compose.runtime.*
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.text.intl.Locale
@ExperimentalResourceApi
data class ResourceEnvironment internal constructor(
internal val language: LanguageQualifier,
internal val region: RegionQualifier,

1
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringArrayResources.kt

@ -45,7 +45,6 @@ fun stringArrayResource(resource: StringArrayResource): List<String> {
*
* @throws IllegalStateException if the string array with the given ID is not found.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getStringArray(resource: StringArrayResource): List<String> =
loadStringArray(resource, DefaultResourceReader, getSystemResourceEnvironment())

2
components/resources/library/src/commonMain/kotlin/org/jetbrains/compose/resources/StringResources.kt

@ -38,7 +38,6 @@ fun stringResource(resource: StringResource): String {
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getString(resource: StringResource): String =
loadString(resource, DefaultResourceReader, getSystemResourceEnvironment())
@ -92,7 +91,6 @@ fun stringResource(resource: StringResource, vararg formatArgs: Any): String {
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
@OptIn(ExperimentalResourceApi::class)
suspend fun getString(resource: StringResource, vararg formatArgs: Any): String = loadString(
resource,
formatArgs.map { it.toString() },

Loading…
Cancel
Save