localdatetime version

This commit is contained in:
Rune Dyselinck 2023-04-24 19:52:36 +02:00
parent dc43b26dc0
commit e20e972b88
5 changed files with 64 additions and 2 deletions

2
.idea/misc.xml generated
View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View file

@ -1,6 +1,7 @@
package be.ugent.sel.studeez.activities package be.ugent.sel.studeez.activities
import android.os.Bundle import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@ -11,6 +12,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import be.ugent.sel.studeez.StudeezApp 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.ui.theme.StudeezTheme import be.ugent.sel.studeez.ui.theme.StudeezTheme
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -30,6 +33,16 @@ class MainActivity : ComponentActivity() {
} }
} }
} }
override fun onStop() {
test()
super.onStop()
}
override fun onStart() {
SessionTest.updateTimer()
super.onStart()
}
} }
@Composable @Composable

View file

@ -1,7 +1,7 @@
package be.ugent.sel.studeez.data.local.models.timer_functional package be.ugent.sel.studeez.data.local.models.timer_functional
abstract class FunctionalTimer(initialValue: Int) { abstract class FunctionalTimer(initialValue: Int) {
val time: Time = Time(initialValue) var time: Time = Time(initialValue)
var view: StudyState = StudyState.FOCUS var view: StudyState = StudyState.FOCUS
fun getHoursMinutesSeconds(): HoursMinutesSeconds { fun getHoursMinutesSeconds(): HoursMinutesSeconds {

View file

@ -4,6 +4,10 @@ class Time(initialTime: Int) {
var time = initialTime var time = initialTime
fun min(i: Int) {
time -= i
}
fun minOne() { fun minOne() {
time-- time--
} }

View file

@ -3,6 +3,7 @@ package be.ugent.sel.studeez.screens.session
import android.media.MediaPlayer import android.media.MediaPlayer
import android.media.RingtoneManager import android.media.RingtoneManager
import android.net.Uri import android.net.Uri
import android.util.Log
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@ -31,10 +32,20 @@ import androidx.hilt.navigation.compose.hiltViewModel
import be.ugent.sel.studeez.R import be.ugent.sel.studeez.R
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer.StudyState import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer.StudyState
import be.ugent.sel.studeez.data.local.models.timer_functional.Time
import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.resources
import kotlinx.coroutines.delay 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 import kotlin.time.Duration.Companion.seconds
var start: LocalDateTime = Calendar.getInstance().time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()
@Composable @Composable
fun SessionScreen( fun SessionScreen(
open: (String) -> Unit, open: (String) -> Unit,
@ -46,6 +57,8 @@ fun SessionScreen(
val mediaplayer = MediaPlayer.create(context, uri) val mediaplayer = MediaPlayer.create(context, uri)
mediaplayer.isLooping = false mediaplayer.isLooping = false
SessionTest.setNewViewModel(viewModel = viewModel)
Column( Column(
modifier = Modifier.padding(10.dp) modifier = Modifier.padding(10.dp)
) { ) {
@ -81,6 +94,11 @@ fun SessionScreen(
} }
} }
private operator fun Time.minus(time: Time): Time {
return Time(this.time - time.time)
}
@Composable @Composable
private fun Timer(viewModel: SessionViewModel = hiltViewModel(), mediaplayer: MediaPlayer) { private fun Timer(viewModel: SessionViewModel = hiltViewModel(), mediaplayer: MediaPlayer) {
var tikker by remember { mutableStateOf(false) } var tikker by remember { mutableStateOf(false) }
@ -146,6 +164,33 @@ private fun Timer(viewModel: SessionViewModel = hiltViewModel(), mediaplayer: Me
} }
} }
} }
}
fun test() {
start = Calendar.getInstance().time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()
}
object SessionTest {
lateinit var viewModel: SessionViewModel
private var isSession: Boolean = false
fun setNewViewModel(viewModel: SessionViewModel) {
isSession = true
this.viewModel = viewModel
}
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())
}
}
} }