Coverage Summary for Class: PlayPauseButtonKt (com.vsevolodganin.clicktrack.ui.piece)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| PlayPauseButtonKt |
0%
(0/1)
|
0%
(0/7)
|
0%
(0/16)
|
0%
(0/25)
|
0%
(0/352)
|
package com.vsevolodganin.clicktrack.ui.piece
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
import com.vsevolodganin.clicktrack.ui.theme.ClickTrackTheme
import com.vsevolodganin.clicktrack.utils.compose.animatePathAsState
import org.jetbrains.compose.ui.tooling.preview.Preview
@Composable
fun PlayPauseButton(isPlaying: Boolean, onToggle: () -> Unit, modifier: Modifier = Modifier) {
FloatingActionButton(
onClick = onToggle,
modifier = modifier,
shape = CircleShape,
) {
PlayPauseIcon(isPlaying)
}
}
@Composable
fun PlayPauseIcon(isPlaying: Boolean) {
val pathData by animatePathAsState(
if (isPlaying) {
"M 10 38 L 10 10 L 21.75 10 L 21.75 38 L 10 38 M 26.25 38 L 26.25 10 L 38 10 L 38 38 L 26.25 38"
} else {
"M 16 9.85 L 38 23.85 L 38 23.85 L 16 23.957 L 16 9.85 M 16 23.957 L 38 23.85 L 38 23.85 L 16 37.85 L 16 23.957"
},
)
val imageVector by remember {
derivedStateOf {
ImageVector.Builder(defaultWidth = 24.dp, defaultHeight = 24.dp, viewportWidth = 48f, viewportHeight = 48f)
.addPath(pathData = pathData, fill = SolidColor(Color.White))
.build()
}
}
Icon(
imageVector = imageVector,
contentDescription = null,
)
}
@Preview
@Composable
private fun Preview() = ClickTrackTheme {
var isPlaying by remember { mutableStateOf(false) }
PlayPauseButton(
isPlaying = isPlaying,
onToggle = { isPlaying = !isPlaying },
)
}