1+ package com.codandotv.streamplayerapp.core_shared_ui.widget.player
2+
3+ import androidx.compose.foundation.interaction.MutableInteractionSource
4+ import androidx.compose.foundation.layout.Column
5+ import androidx.compose.foundation.layout.fillMaxWidth
6+ import androidx.compose.material3.ExperimentalMaterial3Api
7+ import androidx.compose.material3.Slider
8+ import androidx.compose.material3.SliderDefaults
9+ import androidx.compose.material3.SliderPositions
10+ import androidx.compose.runtime.Composable
11+ import androidx.compose.ui.Modifier
12+ import androidx.compose.ui.graphics.Color
13+ import androidx.compose.ui.unit.DpSize
14+ import androidx.compose.ui.unit.dp
15+ import com.codandotv.streamplayerapp.core_shared_ui.theme.ThemePreviews
16+
17+ @OptIn(ExperimentalMaterial3Api ::class )
18+ @Composable
19+ fun PlayerTracker (expanded : Boolean , percentage : Float , modifier : Modifier = Modifier ) {
20+ val sliderColors = SliderDefaults .colors(
21+ activeTrackColor = Color .Red ,
22+ inactiveTrackColor = Color .Red .copy(
23+ alpha = 0.5f
24+ ),
25+ thumbColor = Color .Red ,
26+ )
27+
28+ val thumb: @Composable (SliderPositions ) -> Unit = {
29+ if (expanded.not ()) {
30+ SliderDefaults .Thumb (
31+ thumbSize = DpSize (0 .dp, 0 .dp),
32+ colors = sliderColors,
33+ interactionSource = MutableInteractionSource ()
34+ )
35+ } else {
36+ SliderDefaults .Thumb (
37+ thumbSize = DpSize (40 .dp, 40 .dp),
38+ colors = sliderColors,
39+ interactionSource = MutableInteractionSource ()
40+ )
41+ }
42+ }
43+
44+ Slider (
45+ modifier = modifier,
46+ value = percentage,
47+ colors = sliderColors,
48+ onValueChange = {},
49+ thumb = thumb
50+ )
51+ }
52+
53+ @ThemePreviews
54+ @Composable
55+ fun PlayerTrackerPreview () {
56+ Column (modifier = Modifier .fillMaxWidth()) {
57+ PlayerTracker (
58+ expanded = false ,
59+ 0.5f
60+ )
61+
62+ PlayerTracker (expanded = true , percentage = 0.5f )
63+ }
64+ }
0 commit comments