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

View File

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