diff --git a/app/src/main/java/be/ugent/sel/studeez/activities/MainActivity.kt b/app/src/main/java/be/ugent/sel/studeez/activities/MainActivity.kt index 6829e7f..734908b 100644 --- a/app/src/main/java/be/ugent/sel/studeez/activities/MainActivity.kt +++ b/app/src/main/java/be/ugent/sel/studeez/activities/MainActivity.kt @@ -1,7 +1,6 @@ package be.ugent.sel.studeez.activities import android.os.Bundle -import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize @@ -11,11 +10,15 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview +import androidx.lifecycle.lifecycleScope import be.ugent.sel.studeez.StudeezApp -import be.ugent.sel.studeez.screens.session.SessionTest -import be.ugent.sel.studeez.screens.session.test +import be.ugent.sel.studeez.screens.session.InvisibleSessionManager import be.ugent.sel.studeez.ui.theme.StudeezTheme import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch + +var onTimerInvisible: Job? = null @AndroidEntryPoint class MainActivity : ComponentActivity() { @@ -34,13 +37,17 @@ class MainActivity : ComponentActivity() { } } + + override fun onStop() { - test() + onTimerInvisible = lifecycleScope.launch { + InvisibleSessionManager.updateTimer() + } super.onStop() } override fun onStart() { - SessionTest.updateTimer() + onTimerInvisible?.cancel() super.onStart() } } diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt index 83be75d..ec7702d 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/Time.kt @@ -4,10 +4,6 @@ class Time(initialTime: Int) { var time = initialTime - fun min(i: Int) { - time -= i - } - fun minOne() { time-- } diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt index dee4f12..48cf209 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt @@ -3,7 +3,6 @@ package be.ugent.sel.studeez.screens.session import android.media.MediaPlayer import android.media.RingtoneManager import android.net.Uri -import android.util.Log import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.Box @@ -35,17 +34,11 @@ import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer.S import be.ugent.sel.studeez.data.local.models.timer_functional.Time import be.ugent.sel.studeez.resources import kotlinx.coroutines.delay -import java.time.Duration import java.time.LocalDateTime import java.time.ZoneId import java.util.* -import kotlin.properties.Delegates -import kotlin.time.Duration.Companion.hours -import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds -var start: LocalDateTime = Calendar.getInstance().time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime() - @Composable fun SessionScreen( open: (String) -> Unit, @@ -57,7 +50,7 @@ fun SessionScreen( val mediaplayer = MediaPlayer.create(context, uri) mediaplayer.isLooping = false - SessionTest.setNewViewModel(viewModel = viewModel) + InvisibleSessionManager.setNewViewModel(viewModel = viewModel) Column( modifier = Modifier.padding(10.dp) @@ -75,6 +68,7 @@ fun SessionScreen( mediaplayer.stop() mediaplayer.release() open(StudeezDestinations.HOME_SCREEN) + InvisibleSessionManager.isSession = false // Vanaf hier ook naar report gaan als "end session" knop word ingedrukt }, modifier = Modifier @@ -166,29 +160,21 @@ private fun Timer(viewModel: SessionViewModel = hiltViewModel(), mediaplayer: Me } } -fun test() { - start = Calendar.getInstance().time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime() -} - -object SessionTest { +object InvisibleSessionManager { lateinit var viewModel: SessionViewModel - private var isSession: Boolean = false + var isSession: Boolean = false fun setNewViewModel(viewModel: SessionViewModel) { isSession = true this.viewModel = viewModel } - fun updateTimer() { + suspend fun updateTimer() { if (isSession) { - val end = Calendar.getInstance().time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime() - - val duration = Duration.between(start, end) - - val hours = duration.toHours() - val minutes = duration.toMinutes() % 60 - val seconds = duration.seconds % 60 - viewModel.getTimer().time.min((hours + minutes + seconds).toInt()) + while (true) { + delay(1.seconds) + viewModel.getTimer().tick() + } } }