diff options
| author | Sean Proctor <sproctor@gmail.com> | 2026-06-08 12:55:47 +0300 |
|---|---|---|
| committer | Sean Proctor <sproctor@gmail.com> | 2026-06-08 12:55:47 +0300 |
| commit | 2dbf80738e26b025dde78935e61cebf5b9cf5ea6 (patch) | |
| tree | 2dd4a067d15439411f20d7535c20c3eba4d0262c /demo/shared/src | |
| parent | b80284a0d4f43f857a74ffbb048168aa9a577601 (diff) | |
| download | colorpicker-compose-2dbf80738e26b025dde78935e61cebf5b9cf5ea6.tar.xz | |
Add desktop demo and rework demo modules
- Add :demo:desktopApp (Compose JVM desktop application) consuming the
shared MainScreen.
- Move :wasmApp under :demo:wasmApp and consume the shared MainScreen.
- Migrate demo image picking from peekaboo-image-picker to FileKit.
- Set the demo Res class package to
com.github.skydoves.colorpickercomposedemo.shared via packageOfResClass.
- Drop the GlobalScope/CoroutineScope constructor from ColorPickerController;
ColorPicker now collects on a rememberCoroutineScope.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'demo/shared/src')
5 files changed, 30 insertions, 26 deletions
diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt index 7c2f304..44d1e64 100644 --- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt +++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/MainScreen.kt @@ -42,12 +42,12 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController -import colorpickercomposedemo.demo.shared.generated.resources.Res -import colorpickercomposedemo.demo.shared.generated.resources.app_name -import colorpickercomposedemo.demo.shared.generated.resources.image_24px -import colorpickercomposedemo.demo.shared.generated.resources.palette_24px import com.github.skydoves.colorpickercomposedemo.screens.HsvColorPickerColoredSelectorScreen import com.github.skydoves.colorpickercomposedemo.screens.ImageColorPickerScreen +import com.github.skydoves.colorpickercomposedemo.shared.Res +import com.github.skydoves.colorpickercomposedemo.shared.app_name +import com.github.skydoves.colorpickercomposedemo.shared.image_24px +import com.github.skydoves.colorpickercomposedemo.shared.palette_24px import org.jetbrains.compose.resources.DrawableResource import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.resources.stringResource diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt index 27afaa1..94d0425 100644 --- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt +++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/PhotoPickerIcon.kt @@ -27,29 +27,29 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.unit.dp -import colorpickercomposedemo.demo.shared.generated.resources.Res -import colorpickercomposedemo.demo.shared.generated.resources.ic_gallery -import com.preat.peekaboo.image.picker.SelectionMode -import com.preat.peekaboo.image.picker.rememberImagePickerLauncher -import com.preat.peekaboo.image.picker.toImageBitmap +import com.github.skydoves.colorpickercomposedemo.shared.Res +import com.github.skydoves.colorpickercomposedemo.shared.ic_gallery +import io.github.vinceglb.filekit.PlatformFile +import io.github.vinceglb.filekit.dialogs.FileKitType +import io.github.vinceglb.filekit.dialogs.compose.rememberFilePickerLauncher +import io.github.vinceglb.filekit.readBytes +import kotlinx.coroutines.launch +import org.jetbrains.compose.resources.decodeToImageBitmap import org.jetbrains.compose.resources.vectorResource @Composable -fun ColumnScope.PhotoPickerIcon( - onImageSelected: (ImageBitmap?) -> Unit, -) { +fun ColumnScope.PhotoPickerIcon(onImageSelected: (ImageBitmap?) -> Unit) { val scope = rememberCoroutineScope() - val singleImagePicker = rememberImagePickerLauncher( - selectionMode = SelectionMode.Single, - scope = scope, - onResult = { byteArrays -> - byteArrays.firstOrNull()?.let { - val imageBitmap = it.toImageBitmap() - onImageSelected.invoke(imageBitmap) - } - }, - ) + val singleImagePicker = rememberFilePickerLauncher( + type = FileKitType.Image, + ) { file: PlatformFile? -> + file ?: return@rememberFilePickerLauncher + scope.launch { + val imageBitmap = file.readBytes().decodeToImageBitmap() + onImageSelected.invoke(imageBitmap) + } + } Box( modifier = Modifier diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt index 8d7e009..3748bf3 100644 --- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt +++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/HsvColorPickerColoredSelectorScreen.kt @@ -15,6 +15,7 @@ */ package com.github.skydoves.colorpickercomposedemo.screens +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -63,7 +64,7 @@ fun HsvColorPickerColoredSelectorScreen() { var lastSource by remember { mutableStateOf(ColorChangeSource.Programmatic) } var isInteracting by remember { mutableStateOf(false) } - Column { + Column(Modifier.background(Color.Black)) { Spacer(modifier = Modifier.weight(1f)) Row(modifier = Modifier.weight(3f)) { @@ -160,7 +161,7 @@ fun HsvColorPickerColoredSelectorScreen() { AlphaTile( modifier = Modifier .size(80.dp) - .clip(RoundedCornerShape(6.dp)) + // .clip(RoundedCornerShape(6.dp)) .align(Alignment.CenterHorizontally), controller = controller, ) diff --git a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt index 221476b..3e1355d 100644 --- a/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt +++ b/demo/shared/src/commonMain/kotlin/com/github/skydoves/colorpickercomposedemo/screens/ImageColorPickerScreen.kt @@ -37,8 +37,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import colorpickercomposedemo.demo.shared.generated.resources.Res -import colorpickercomposedemo.demo.shared.generated.resources.palettebar import com.github.skydoves.colorpicker.compose.AlphaSlider import com.github.skydoves.colorpicker.compose.AlphaTile import com.github.skydoves.colorpicker.compose.BrightnessSlider @@ -46,6 +44,8 @@ import com.github.skydoves.colorpicker.compose.ColorEnvelope import com.github.skydoves.colorpicker.compose.ImageColorPicker import com.github.skydoves.colorpicker.compose.rememberColorPickerController import com.github.skydoves.colorpickercomposedemo.PhotoPickerIcon +import com.github.skydoves.colorpickercomposedemo.shared.Res +import com.github.skydoves.colorpickercomposedemo.shared.palettebar import org.jetbrains.compose.resources.imageResource import org.jetbrains.compose.resources.painterResource diff --git a/demo/shared/src/iosMain/kotlin/MainViewController.kt b/demo/shared/src/iosMain/kotlin/MainViewController.kt index a240015..ede3402 100644 --- a/demo/shared/src/iosMain/kotlin/MainViewController.kt +++ b/demo/shared/src/iosMain/kotlin/MainViewController.kt @@ -16,4 +16,7 @@ import androidx.compose.ui.window.ComposeUIViewController import com.github.skydoves.colorpickercomposedemo.MainScreen +// Entry point consumed by iosApp.xcodeproj (Swift: MainViewControllerKt.MainViewController()), +// so the PascalCase name is required and not subject to the function-naming convention. +@Suppress("ktlint:standard:function-naming") fun MainViewController() = ComposeUIViewController { MainScreen() } |
