Use wavy progress indicator for breaks

This commit is contained in:
Nishant Mishra
2025-07-01 09:11:46 +05:30
parent befbc708e0
commit eb8cb61c96

View File

@@ -10,12 +10,16 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.CircularWavyProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.FilledIconToggleButton import androidx.compose.material3.FilledIconToggleButton
@@ -33,7 +37,10 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.platform.LocalHapticFeedback
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
@@ -153,20 +160,50 @@ fun TimerScreen(
) { ) {
Column(horizontalAlignment = Alignment.CenterHorizontally) { Column(horizontalAlignment = Alignment.CenterHorizontally) {
Box(contentAlignment = Alignment.Center) { Box(contentAlignment = Alignment.Center) {
CircularProgressIndicator( if (uiState.timerMode == TimerMode.FOCUS) {
progress = progress, CircularProgressIndicator(
modifier = Modifier.size(350.dp), progress = progress,
color = color, modifier = Modifier
trackColor = colorContainer, .widthIn(max = 350.dp)
strokeWidth = 16.dp, .fillMaxWidth(0.9f)
gapSize = 16.dp .aspectRatio(1f),
) color = color,
trackColor = colorContainer,
strokeWidth = 16.dp,
gapSize = 16.dp
)
} else {
CircularWavyProgressIndicator(
progress = progress,
modifier = Modifier
.widthIn(max = 350.dp)
.fillMaxWidth(0.9f)
.aspectRatio(1f),
color = color,
trackColor = colorContainer,
stroke = Stroke(
width = with(LocalDensity.current) {
16.dp.toPx()
},
cap = StrokeCap.Round,
),
trackStroke = Stroke(
width = with(LocalDensity.current) {
16.dp.toPx()
},
cap = StrokeCap.Round,
),
wavelength = 60.dp,
// strokeWidth = 16.dp,
gapSize = 16.dp
)
}
Text( Text(
text = uiState.timeStr, text = uiState.timeStr,
style = TextStyle( style = TextStyle(
fontFamily = openRundeClock, fontFamily = openRundeClock,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
fontSize = 76.sp, fontSize = 72.sp,
letterSpacing = (-2).sp letterSpacing = (-2).sp
), ),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,