Skip to content

Commit cf01582

Browse files
committed
Support Compose version 1.6.X
1 parent f82234c commit cf01582

File tree

13 files changed

+84
-101
lines changed

13 files changed

+84
-101
lines changed

build.gradle.kts

+4-16
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,10 @@
55
*/
66

77

8-
// Top-level build file where you can add configuration options common to all sub-projects/modules.
98
plugins {
10-
id("com.android.application") version "7.1.2" apply false
11-
id("com.android.library") version "7.1.2" apply false
12-
id("org.jetbrains.kotlin.android") version "1.9.20" apply false
13-
}
14-
15-
buildscript {
16-
dependencies {
17-
classpath("com.vanniktech:gradle-maven-publish-plugin:0.21.0")
18-
}
19-
}
20-
21-
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
22-
kotlinOptions {
23-
freeCompilerArgs = freeCompilerArgs + "-Xopt-in=kotlin.RequiresOptIn"
24-
}
9+
id("com.android.application") version "8.5.1" apply false
10+
id("com.android.library") version "8.5.1" apply false
11+
id("org.jetbrains.kotlin.android") version "2.0.0" apply false
12+
id("org.jetbrains.kotlin.plugin.compose") version "2.0.0"
2513
}
2614

buildSrc/src/main/kotlin/io/github/naverz/pinocchio/Dependencies.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ object Dependencies {
77
const val ESPRESSO_CORE = "androidx.test.espresso:espresso-core:3.4.0"
88
}
99

10-
object Material{
10+
object Material {
1111
const val STANDARD = "com.google.android.material:material:1.4.0"
1212
}
1313
object AndroidX {
@@ -17,7 +17,7 @@ object Dependencies {
1717

1818
object Compose {
1919
const val UI_TOOLING = "androidx.compose.ui:ui-tooling:${Versions.COMPOSE_VERSION}"
20-
const val ACTIVITY_COMPOSE = "androidx.activity:activity-compose:1.4.0"
20+
const val ACTIVITY_COMPOSE = "androidx.activity:activity-compose:1.9.1"
2121
const val COMPOSE_FOUNDATION =
2222
"androidx.compose.foundation:foundation:${Versions.COMPOSE_VERSION}"
2323
}

buildSrc/src/main/kotlin/io/github/naverz/pinocchio/Versions.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ package io.github.naverz.pinocchio
22

33
object Versions {
44
const val ANDROID_COMPILE_SDK_NO = 34
5-
const val ANDROID_TARGET_SDK_NO = 34
6-
const val COMPOSE_VERSION = "1.5.4"
5+
const val COMPOSE_VERSION = "1.6.8"
76
}
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Wed Jun 22 22:38:28 KST 2022
22
distributionBase=GRADLE_USER_HOME
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
44
distributionPath=wrapper/dists
55
zipStorePath=wrapper/dists
66
zipStoreBase=GRADLE_USER_HOME

hsvpicker/compose/build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
plugins {
88
id("com.android.library")
99
id("org.jetbrains.kotlin.android")
10-
id("com.vanniktech.maven.publish")
10+
id("org.jetbrains.kotlin.plugin.compose") version "2.0.0"
11+
id("com.vanniktech.maven.publish") version "0.29.0"
1112
}
1213

1314
android {
@@ -16,7 +17,6 @@ android {
1617

1718
defaultConfig {
1819
minSdk = 21
19-
targetSdk = io.github.naverz.pinocchio.Versions.ANDROID_TARGET_SDK_NO
2020

2121
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2222
consumerProguardFiles("consumer-rules.pro")

hsvpicker/compose/gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ POM_DESCRIPTION=A library that provides HSVPicker from Jetpack Compose. (Recomme
33
POM_INCEPTION_YEAR=2022
44
POM_URL=https://github.com/naverz/Pinocchio/tree/master/hsvpicker/compose
55
POM_ARTIFACT_ID=hsvpicker-compose
6-
VERSION_NAME=1.4.0
6+
VERSION_NAME=1.5.0

hsvpicker/sample/build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
plugins {
88
id("com.android.application")
99
id("org.jetbrains.kotlin.android")
10-
10+
id("org.jetbrains.kotlin.plugin.compose") version "2.0.0"
1111
}
1212
android {
1313
namespace = "io.github.naverz.hsvpicker.sample"
@@ -16,7 +16,7 @@ android {
1616
defaultConfig {
1717
applicationId = "io.github.naverz.hsvpicker.sample"
1818
minSdk = 21
19-
targetSdk = 32
19+
targetSdk = 33
2020
versionCode = 1
2121
versionName = "1.0"
2222

hsvpicker/view/build.gradle.kts

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
plugins {
88
id("com.android.library")
99
id("org.jetbrains.kotlin.android")
10-
id("com.vanniktech.maven.publish")
10+
id("com.vanniktech.maven.publish") version "0.29.0"
1111
}
1212

1313
android {
@@ -16,8 +16,6 @@ android {
1616

1717
defaultConfig {
1818
minSdk = 19
19-
targetSdk = io.github.naverz.pinocchio.Versions.ANDROID_TARGET_SDK_NO
20-
2119
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2220
consumerProguardFiles("consumer-rules.pro")
2321
}

slidercompose/README.md

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
<tr>
2323
<td>Compose UI 1.5 (1.5.x)</td><td><img alt="Maven Central" src="https://img.shields.io/maven-central/v/io.github.naverz.pinocchio/slider-compose?versionPrefix=1.4"></td>
2424
</tr>
25+
<tr>
26+
<td>Compose UI 1.6 (1.6.x)</td><td><img alt="Maven Central" src="https://img.shields.io/maven-central/v/io.github.naverz.pinocchio/slider-compose?versionPrefix=1.5"></td>
27+
</tr>
2528
</table>
2629

2730
## Download

slidercompose/build.gradle.kts

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
plugins {
88
id("com.android.library")
99
id("org.jetbrains.kotlin.android")
10-
id("com.vanniktech.maven.publish")
10+
id("com.vanniktech.maven.publish") version "0.29.0"
11+
id("org.jetbrains.kotlin.plugin.compose") version "2.0.0"
1112
}
1213

1314
android {
@@ -16,8 +17,6 @@ android {
1617

1718
defaultConfig {
1819
minSdk = 21
19-
targetSdk = io.github.naverz.pinocchio.Versions.ANDROID_TARGET_SDK_NO
20-
2120
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2221
consumerProguardFiles("consumer-rules.pro")
2322
}

slidercompose/gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ POM_DESCRIPTION=Slider UI for Compose
33
POM_INCEPTION_YEAR=2022
44
POM_URL=https://github.com/naverz/Pinocchio/tree/master/slidercompose
55
POM_ARTIFACT_ID=slider-compose
6-
VERSION_NAME=1.4.0
6+
VERSION_NAME=1.5.0

slidercompose/src/main/kotlin/io/github/naverz/pinocchio/slider/compose/SlidePanel.kt

+38-41
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
package io.github.naverz.pinocchio.slider.compose
88

99
import androidx.annotation.FloatRange
10+
import androidx.compose.foundation.gestures.awaitEachGesture
1011
import androidx.compose.foundation.gestures.awaitFirstDown
11-
import androidx.compose.foundation.gestures.forEachGesture
1212
import androidx.compose.foundation.layout.Box
1313
import androidx.compose.foundation.layout.Column
1414
import androidx.compose.foundation.layout.fillMaxWidth
@@ -18,12 +18,12 @@ import androidx.compose.foundation.shape.RoundedCornerShape
1818
import androidx.compose.foundation.text.BasicText
1919
import androidx.compose.runtime.Composable
2020
import androidx.compose.runtime.getValue
21+
import androidx.compose.runtime.mutableFloatStateOf
2122
import androidx.compose.runtime.mutableStateOf
2223
import androidx.compose.runtime.remember
2324
import androidx.compose.runtime.rememberUpdatedState
2425
import androidx.compose.runtime.setValue
2526
import androidx.compose.ui.Alignment
26-
import androidx.compose.ui.ExperimentalComposeUiApi
2727
import androidx.compose.ui.Modifier
2828
import androidx.compose.ui.geometry.Offset
2929
import androidx.compose.ui.geometry.Rect
@@ -41,7 +41,6 @@ import io.github.naverz.pinocchio.slider.compose.data.Stroke
4141
import io.github.naverz.pinocchio.slider.compose.palette.PanelPalette
4242
import io.github.naverz.pinocchio.slider.compose.palette.ThumbPalette
4343

44-
@OptIn(ExperimentalComposeUiApi::class)
4544
@Composable
4645
fun SlidePanel(
4746
modifier: Modifier = Modifier,
@@ -68,44 +67,42 @@ fun SlidePanel(
6867
val isRtl = isRtl()
6968
Layout(contents = listOf(thumb, panel),
7069
modifier = modifier.pointerInput(Unit) {
71-
forEachGesture {
72-
awaitPointerEventScope {
73-
awaitFirstDown()
74-
val halfThumbWidth = thumbSize.width.toFloat() / 2
75-
val halfThumbHeight = thumbSize.height.toFloat() / 2
76-
val panelRect = Rect(
77-
halfThumbWidth,
78-
halfThumbHeight,
79-
containerSize.width - halfThumbWidth,
80-
containerSize.height - halfThumbHeight
81-
)
82-
var nextTouchPoint: Offset? = null
83-
do {
84-
val event: PointerEvent = awaitPointerEvent()
85-
event.changes.forEach { pointerInputChange: PointerInputChange ->
86-
findNextValue(
87-
isRtl = isRtl,
88-
containerSize = containerSize,
89-
panelRect = panelRect,
90-
touchPoint = Offset(
91-
x = pointerInputChange.position.x,
92-
y = pointerInputChange.position.y
93-
),
94-
halfThumbWidth = halfThumbWidth,
95-
halfThumbHeight = halfThumbHeight
96-
).let {
97-
nextTouchPoint = it
98-
updatedOnValueChanged?.invoke(it.x, it.y)
99-
}
100-
if (pointerInputChange.positionChange() != Offset.Zero)
101-
pointerInputChange.consume()
70+
awaitEachGesture {
71+
awaitFirstDown()
72+
val halfThumbWidth = thumbSize.width.toFloat() / 2
73+
val halfThumbHeight = thumbSize.height.toFloat() / 2
74+
val panelRect = Rect(
75+
halfThumbWidth,
76+
halfThumbHeight,
77+
containerSize.width - halfThumbWidth,
78+
containerSize.height - halfThumbHeight
79+
)
80+
var nextTouchPoint: Offset? = null
81+
do {
82+
val event: PointerEvent = awaitPointerEvent()
83+
event.changes.forEach { pointerInputChange: PointerInputChange ->
84+
findNextValue(
85+
isRtl = isRtl,
86+
containerSize = containerSize,
87+
panelRect = panelRect,
88+
touchPoint = Offset(
89+
x = pointerInputChange.position.x,
90+
y = pointerInputChange.position.y
91+
),
92+
halfThumbWidth = halfThumbWidth,
93+
halfThumbHeight = halfThumbHeight
94+
).let {
95+
nextTouchPoint = it
96+
updatedOnValueChanged?.invoke(it.x, it.y)
10297
}
103-
} while (event.changes.any { it.pressed })
104-
nextTouchPoint?.let { stableNextTouchPoint ->
105-
updatedOnValueConfirmed?.invoke(
106-
stableNextTouchPoint.x, stableNextTouchPoint.y
107-
)
98+
if (pointerInputChange.positionChange() != Offset.Zero)
99+
pointerInputChange.consume()
108100
}
101+
} while (event.changes.any { it.pressed })
102+
nextTouchPoint?.let { stableNextTouchPoint ->
103+
updatedOnValueConfirmed?.invoke(
104+
stableNextTouchPoint.x, stableNextTouchPoint.y
105+
)
109106
}
110107
}
111108
}) { (thumbMeasurable, panelMeasurable), constraints ->
@@ -242,10 +239,10 @@ private fun findNextValue(
242239
@Preview
243240
private fun PreviewSliderPanel() {
244241
var x by remember {
245-
mutableStateOf(0f)
242+
mutableFloatStateOf(0f)
246243
}
247244
var y by remember {
248-
mutableStateOf(0f)
245+
mutableFloatStateOf(0f)
249246
}
250247
Column {
251248
SlidePanel(

slidercompose/src/main/kotlin/io/github/naverz/pinocchio/slider/compose/Slider.kt

+26-27
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ package io.github.naverz.pinocchio.slider.compose
99
import androidx.annotation.FloatRange
1010
import androidx.compose.foundation.background
1111
import androidx.compose.foundation.clickable
12+
import androidx.compose.foundation.gestures.awaitEachGesture
1213
import androidx.compose.foundation.gestures.awaitFirstDown
13-
import androidx.compose.foundation.gestures.forEachGesture
1414
import androidx.compose.foundation.layout.Box
1515
import androidx.compose.foundation.layout.Column
1616
import androidx.compose.foundation.layout.Row
@@ -24,21 +24,22 @@ import androidx.compose.foundation.shape.RoundedCornerShape
2424
import androidx.compose.foundation.text.BasicText
2525
import androidx.compose.runtime.Composable
2626
import androidx.compose.runtime.getValue
27+
import androidx.compose.runtime.mutableFloatStateOf
2728
import androidx.compose.runtime.mutableStateOf
2829
import androidx.compose.runtime.remember
2930
import androidx.compose.runtime.rememberUpdatedState
3031
import androidx.compose.runtime.setValue
3132
import androidx.compose.ui.Alignment
3233
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
33-
import androidx.compose.ui.ExperimentalComposeUiApi
3434
import androidx.compose.ui.Modifier
35+
import androidx.compose.ui.geometry.Offset
3536
import androidx.compose.ui.graphics.Color
3637
import androidx.compose.ui.graphics.RectangleShape
3738
import androidx.compose.ui.graphics.SolidColor
3839
import androidx.compose.ui.input.pointer.PointerEvent
3940
import androidx.compose.ui.input.pointer.PointerInputChange
40-
import androidx.compose.ui.input.pointer.consumePositionChange
4141
import androidx.compose.ui.input.pointer.pointerInput
42+
import androidx.compose.ui.input.pointer.positionChange
4243
import androidx.compose.ui.layout.Layout
4344
import androidx.compose.ui.tooling.preview.Preview
4445
import androidx.compose.ui.unit.DpSize
@@ -50,7 +51,6 @@ import io.github.naverz.pinocchio.slider.compose.palette.SliderPalette
5051
import io.github.naverz.pinocchio.slider.compose.palette.ThumbPalette
5152
import io.github.naverz.pinocchio.slider.compose.palette.property.NarrowSliderProperty
5253

53-
@OptIn(ExperimentalComposeUiApi::class)
5454
@Composable
5555
fun Slider(
5656
modifier: Modifier = Modifier,
@@ -75,29 +75,28 @@ fun Slider(
7575
Modifier.fillMaxWidth()
7676
}
7777
.pointerInput(isVertical) {
78-
forEachGesture {
79-
awaitPointerEventScope {
80-
awaitFirstDown()
81-
var nextValue: Float? = null
82-
do {
83-
val event: PointerEvent = awaitPointerEvent()
84-
event.changes.forEach { pointerInputChange: PointerInputChange ->
85-
findNextValue(
86-
isRtl = isRtl,
87-
isVertical = isVertical,
88-
touchOffset = if (isVertical) pointerInputChange.position.y else pointerInputChange.position.x,
89-
maxOffset = (if (isVertical) containerSize.height else containerSize.width).toFloat(),
90-
thumbStandardLength = (if (isVertical) thumbSize.height else thumbSize.width).toFloat()
91-
).let {
92-
nextValue = it
93-
updatedOnValueChanged?.invoke(it)
94-
}
95-
pointerInputChange.consumePositionChange()
78+
awaitEachGesture {
79+
awaitFirstDown()
80+
var nextValue: Float? = null
81+
do {
82+
val event: PointerEvent = awaitPointerEvent()
83+
event.changes.forEach { pointerInputChange: PointerInputChange ->
84+
findNextValue(
85+
isRtl = isRtl,
86+
isVertical = isVertical,
87+
touchOffset = if (isVertical) pointerInputChange.position.y else pointerInputChange.position.x,
88+
maxOffset = (if (isVertical) containerSize.height else containerSize.width).toFloat(),
89+
thumbStandardLength = (if (isVertical) thumbSize.height else thumbSize.width).toFloat()
90+
).let {
91+
nextValue = it
92+
updatedOnValueChanged?.invoke(it)
9693
}
97-
} while (event.changes.any { it.pressed })
98-
nextValue?.let { stableNextValue ->
99-
updatedOnValueConfirmed?.invoke(stableNextValue)
94+
if (pointerInputChange.positionChange() != Offset.Zero)
95+
pointerInputChange.consume()
10096
}
97+
} while (event.changes.any { it.pressed })
98+
nextValue?.let { stableNextValue ->
99+
updatedOnValueConfirmed?.invoke(stableNextValue)
101100
}
102101
}
103102
}
@@ -216,7 +215,7 @@ private fun findNextValue(
216215
@Composable
217216
private fun PreviewSlider() {
218217
var value by remember {
219-
mutableStateOf(0f)
218+
mutableFloatStateOf(0f)
220219
}
221220
Column {
222221
Spacer(modifier = Modifier.height(10.dp))
@@ -390,7 +389,7 @@ private fun PreviewSlider() {
390389
@Preview
391390
@Composable
392391
private fun PreviewBalancingSlider() {
393-
var value by remember { mutableStateOf(0.5f) }
392+
var value by remember { mutableFloatStateOf(0.5f) }
394393
Column {
395394
Spacer(modifier = Modifier.height(15.dp))
396395
Slider(

0 commit comments

Comments
 (0)