mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
More fixes for pass item in Compose
This commit is contained in:
1 parent
ac479f80ee
commit
46f0b9608b
7 files changed
+31
-19
No files matched your search
@@ -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() }
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<List<SatPass>>) {
|
||||
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())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 }
|
||||
|
||||
Reference in new issue
Block a user