diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/bottomNav/BottomNavBar.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/bottomNav/BottomNavBar.kt index 4554f5b5..1507e9cf 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/bottomNav/BottomNavBar.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/bottomNav/BottomNavBar.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -20,6 +21,7 @@ import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.aboutScreen.AboutScreen import com.rtbishop.look4sat.presentation.entriesScreen.EntriesScreen import com.rtbishop.look4sat.presentation.passesScreen.PassesScreen +import com.rtbishop.look4sat.presentation.passesScreen.PassesViewModel @Composable fun BottomNavBar(navController: NavController) { @@ -50,9 +52,12 @@ fun BottomNavBar(navController: NavController) { @Composable fun NavigationGraph(navController: NavHostController) { val navToPasses = { navController.navigate(BottomNavItem.Passes.screen_route) } + val passesViewModel: PassesViewModel = hiltViewModel() NavHost(navController, startDestination = BottomNavItem.Passes.screen_route) { - composable(BottomNavItem.Satellites.screen_route) { EntriesScreen(navToPasses) } - composable(BottomNavItem.Passes.screen_route) { PassesScreen() } + composable(BottomNavItem.Satellites.screen_route) { + EntriesScreen(navToPasses, passesViewModel = passesViewModel) + } + composable(BottomNavItem.Passes.screen_route) { PassesScreen(viewModel = passesViewModel) } composable(BottomNavItem.WorldMap.screen_route) {} composable(BottomNavItem.Settings.screen_route) {} composable(BottomNavItem.About.screen_route) { AboutScreen() } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesScreen.kt index 96b86455..56f59fe2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesScreen.kt @@ -33,9 +33,12 @@ import com.rtbishop.look4sat.presentation.onClick import com.rtbishop.look4sat.presentation.passesScreen.PassesViewModel @Composable -fun EntriesScreen(navToPasses: () -> Unit, viewModel: EntriesViewModel = hiltViewModel()) { +fun EntriesScreen( + navToPasses: () -> Unit, + viewModel: EntriesViewModel = hiltViewModel(), + passesViewModel: PassesViewModel = hiltViewModel() +) { val state = viewModel.satData.observeAsState(DataState.Loading) - val passesViewModel: PassesViewModel = hiltViewModel() val unselectAll = { viewModel.selectCurrentItems(false) } val selectAll = { viewModel.selectCurrentItems(true) } Column(modifier = Modifier.padding(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) { diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt index d1c5b3ee..fd6ad9d5 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesAdapter.kt @@ -105,7 +105,7 @@ class PassesAdapter(private val clickListener: PassesClickListener) : passStart.text = startFormat.format(Date(satPass.aosTime)) passElev.text = String.format(elevFormat, satPass.maxElevation) passEnd.text = endFormat.format(Date(satPass.losTime)) - passProgress.progress = satPass.progress + passProgress.progress = satPass.progress.toInt() } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesScreen.kt index 5aba142d..fae82d76 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesScreen.kt @@ -36,7 +36,7 @@ private fun PassPreview() { "Satellite", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 45000, 0.0 ) val satellite = NearEarthSat(data) - val pass = SatPass(1L, 25.0, 10L, 75.0, 850, 45.0, satellite, 150) + val pass = SatPass(1L, 25.0, 10L, 75.0, 850, 45.0, satellite, 0.5f) MainTheme { Pass(pass = pass) } } @@ -82,7 +82,7 @@ private fun Pass(pass: SatPass, modifier: Modifier = Modifier) { Text(text = "Elevation: 75") Text(text = "Sun - 16:02:28") } - LinearProgressIndicator(progress = 0.5f, modifier.fillMaxWidth()) + LinearProgressIndicator(progress = pass.progress, modifier = modifier.fillMaxWidth()) } } } @@ -95,7 +95,7 @@ private fun PassesCard(state: DataState>) { when (state) { is DataState.Success -> { LazyColumn { - items(items = state.data, key = { item -> item.aosTime }) { pass -> + items(items = state.data, key = { item -> item.catNum + item.aosTime }) { pass -> Pass(pass, Modifier.animateItemPlacement()) } } diff --git a/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt b/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt index 018987b8..f939fce4 100644 --- a/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt +++ b/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt @@ -18,16 +18,14 @@ package com.rtbishop.look4sat.domain.predict data class SatPass( - val aosTime: Long, - val aosAzimuth: Double, - val losTime: Long, - val losAzimuth: Double, -// val tcaTime: Long, -// val tcaAzimuth: Double, - val altitude: Int, - val maxElevation: Double, + val aosTime: Long = 0L, + val aosAzimuth: Double = 90.0, + val losTime: Long = 0L, + val losAzimuth: Double = 270.0, + val altitude: Int = 1000, + val maxElevation: Double = 75.0, val satellite: Satellite, - var progress: Int = 0 + var progress: Float = 0.0f ) { val catNum: Int = satellite.data.catnum val name: String = satellite.data.name diff --git a/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatelliteManager.kt b/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatelliteManager.kt index e2e55366..3295a5f0 100644 --- a/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatelliteManager.kt +++ b/base/src/main/java/com/rtbishop/look4sat/domain/predict/SatelliteManager.kt @@ -78,11 +78,11 @@ class SatelliteManager(private val defaultDispatcher: CoroutineDispatcher) : ISa if (time > timeStart) { val deltaNow = time.minus(timeStart).toFloat() val deltaTotal = pass.losTime.minus(timeStart).toFloat() - pass.progress = ((deltaNow / deltaTotal) * 100).toInt() + pass.progress = (deltaNow / deltaTotal).round(2) } } } - passList.filter { pass -> pass.progress < 100 }.map { it.copy() } + passList.filter { pass -> pass.progress < 1.0 }.map { it.copy() } } } diff --git a/base/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt b/base/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt index 35e1b22a..7b698008 100644 --- a/base/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt +++ b/base/src/main/java/com/rtbishop/look4sat/utility/Extensions.kt @@ -29,6 +29,12 @@ fun Long.toTimerString(): String { return String.format(format, hours, minutes, seconds) } +fun Float.round(decimals: Int): Float { + var multiplier = 1.0f + repeat(decimals) { multiplier *= 10 } + return kotlin.math.round(this * multiplier) / multiplier +} + fun Double.round(decimals: Int): Double { var multiplier = 1.0 repeat(decimals) { multiplier *= 10 }