feat: Set segment colors for progress segments in notification

This commit is contained in:
Nishant Mishra
2025-08-21 23:06:58 +05:30
parent 754fa44ed2
commit d37dde69c6
2 changed files with 14 additions and 3 deletions

View File

@@ -5,6 +5,7 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.material3.MaterialTheme.colorScheme
import org.nsh07.pomodoro.ui.AppScreen
import org.nsh07.pomodoro.ui.NavItem
import org.nsh07.pomodoro.ui.Screen
@@ -22,6 +23,7 @@ class MainActivity : ComponentActivity() {
enableEdgeToEdge()
setContent {
TomatoTheme {
timerViewModel.setCompositionLocals(colorScheme)
AppScreen(timerViewModel = timerViewModel, statsViewModel = statsViewModel)
}
}

View File

@@ -14,6 +14,7 @@ import android.app.PendingIntent
import android.content.Intent
import android.os.SystemClock
import androidx.annotation.RequiresPermission
import androidx.compose.material3.ColorScheme
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.core.app.NotificationCompat
@@ -72,6 +73,8 @@ class TimerViewModel(
private var pauseTime = 0L
private var pauseDuration = 0L
private lateinit var cs: ColorScheme
init {
viewModelScope.launch(Dispatchers.IO) {
timerRepository.focusTime =
@@ -117,6 +120,10 @@ class TimerViewModel(
}
}
fun setCompositionLocals(colorScheme: ColorScheme) {
cs = colorScheme
}
fun onAction(action: TimerAction) {
when (action) {
TimerAction.ResetTimer -> resetTimer()
@@ -299,15 +306,17 @@ class TimerViewModel(
if (i % 2 == 0) it.addProgressSegment(
NotificationCompat.ProgressStyle.Segment(
timerRepository.focusTime.toInt()
)
).setColor(cs.primary.toArgb())
)
else if (i != (timerRepository.sessionLength * 2 - 1)) it.addProgressSegment(
NotificationCompat.ProgressStyle.Segment(timerRepository.shortBreakTime.toInt())
NotificationCompat.ProgressStyle.Segment(
timerRepository.shortBreakTime.toInt()
).setColor(cs.tertiary.toArgb())
)
else it.addProgressSegment(
NotificationCompat.ProgressStyle.Segment(
timerRepository.longBreakTime.toInt()
)
).setColor(cs.tertiary.toArgb())
)
}
}