localdatetime version
This commit is contained in:
		
							parent
							
								
									dc43b26dc0
								
							
						
					
					
						commit
						e20e972b88
					
				
					 5 changed files with 64 additions and 2 deletions
				
			
		
							
								
								
									
										2
									
								
								.idea/misc.xml
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/misc.xml
									
										
									
										generated
									
									
									
								
							|  | @ -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"> | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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 { | ||||||
|  |  | ||||||
|  | @ -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-- | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -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()) | ||||||
|  |         } | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
		Reference in a new issue
	
	 Rune Dyselinck
						Rune Dyselinck