Skip to content

Commit 3d90a74

Browse files
committed
颜色编辑面板
1 parent b24c959 commit 3d90a74

File tree

2 files changed

+39
-13
lines changed

2 files changed

+39
-13
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package top.ntutn.floatclock.coloredit
22

3-
import androidx.compose.material.TextField
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.material.Slider
5+
import androidx.compose.material.SliderDefaults
6+
import androidx.compose.material.Text
47
import androidx.compose.runtime.*
58
import androidx.compose.ui.awt.ComposeWindow
9+
import androidx.compose.ui.graphics.Color
10+
import androidx.compose.ui.unit.sp
611
import java.awt.Dimension
712
import javax.swing.JFrame
813

914
object ColorEditPanel
1015

11-
fun ColorEditPanel.showEditPanel(lastColor: String, editColorCallback: (String) -> Unit) {
16+
fun ColorEditPanel.showEditPanel(lastColor: java.awt.Color, editColorCallback: (java.awt.Color) -> Unit) {
1217
ComposeWindow().also {
1318
it.setContent {
1419
ColorEditContent(lastColor, editColorCallback)
@@ -22,10 +27,32 @@ fun ColorEditPanel.showEditPanel(lastColor: String, editColorCallback: (String)
2227
}
2328

2429
@Composable
25-
fun ColorEditContent(lastColor: String, editColorCallback: (String) -> Unit) {
26-
var colorString by remember { mutableStateOf(lastColor) }
27-
TextField(colorString, onValueChange = {
28-
colorString = it
29-
editColorCallback(it)
30-
})
31-
}
30+
fun ColorEditContent(lastColor: java.awt.Color, editColorCallback: (java.awt.Color) -> Unit) {
31+
Column {
32+
var red by remember { mutableStateOf(0) }
33+
var green by remember { mutableStateOf(0) }
34+
var blue by remember { mutableStateOf(0) }
35+
36+
LaunchedEffect(lastColor) {
37+
red = lastColor.red
38+
green = lastColor.green
39+
blue = lastColor.blue
40+
}
41+
42+
Text(text = "#${Integer.toHexString(red) + Integer.toHexString(green) + Integer.toHexString(blue)}", color = Color(red, green, blue), fontSize = 20.sp)
43+
44+
val onSelected = {
45+
editColorCallback(java.awt.Color(red, green, blue))
46+
}
47+
48+
Slider(colors = SliderDefaults.colors(thumbColor = Color(red, 0, 0)), value = red.toFloat(), onValueChange = {
49+
red = it.toInt()
50+
}, onValueChangeFinished = onSelected, valueRange = 0f..255f, steps = 256)
51+
Slider(colors = SliderDefaults.colors(thumbColor = Color(0, green, 0)), value = green.toFloat(), onValueChange = {
52+
green = it.toInt()
53+
}, onValueChangeFinished = onSelected, valueRange = 0f..255f, steps = 256)
54+
Slider(colors = SliderDefaults.colors(thumbColor = Color(0, 0, blue)), value = blue.toFloat(), onValueChange = {
55+
blue = it.toInt()
56+
}, onValueChangeFinished = onSelected, valueRange = 0f..255f, steps = 256)
57+
}
58+
}

src/jvmMain/kotlin/top/ntutn/floatclock/component/ClockComponent.kt

+3-4
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@ abstract class ClockComponent : IClockComponent {
4242

4343
override fun showEditColorPanel() {
4444
val color = textColor.value
45-
val r = color.red
46-
val g = color.green
47-
val b = color.blue
48-
ColorEditPanel.showEditPanel("#${Integer.toHexString(r) + Integer.toHexString(g) + Integer.toHexString(b)}", ::changeColor)
45+
ColorEditPanel.showEditPanel(color) {
46+
textColor.value = saveColor(it)
47+
}
4948
}
5049

5150
private fun saveColor(color: Color): Color {

0 commit comments

Comments
 (0)