Added a few minor tweaks to resources and screens

This commit is contained in:
Arty Bishop committed 2025-12-27 15:01:47 +00:00
1 parent 6c3aeab041
commit 82f41940c7
8 files changed
+68 -39

No files matched your search

@@ -33,6 +33,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -216,10 +217,24 @@ fun CardLoadingIndicator() {
}
}
@Composable
fun EmptyListCard(message: String) {
Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize()) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(16.dp),
modifier = Modifier.padding(32.dp)
) {
Text(text = stringResource(R.string.empty_list_title), fontSize = 21.sp)
Text(text = message, fontSize = 18.sp, textAlign = TextAlign.Center)
}
}
}
fun getDefaultPass(): OrbitalPass {
val orbitalData = OrbitalData("No Future Passes", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0)
val orbitalData = OrbitalData("||=<☉>=||", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0.0)
val satellite = NearEarthObject(orbitalData)
return OrbitalPass(0L, 0.0, 0L, 0.0, 0, 0.0, satellite, 0f)
return OrbitalPass(0L, 0.0, Long.MAX_VALUE, 0.0, 0, 0.0, satellite, 0f)
}
@Composable
@@ -45,6 +45,7 @@ import com.rtbishop.look4sat.domain.predict.OrbitalData
import com.rtbishop.look4sat.domain.predict.OrbitalPass
import com.rtbishop.look4sat.presentation.MainTheme
import com.rtbishop.look4sat.presentation.Screen
import com.rtbishop.look4sat.presentation.common.EmptyListCard
import com.rtbishop.look4sat.presentation.common.IconCard
import com.rtbishop.look4sat.presentation.common.InfoDialog
import com.rtbishop.look4sat.presentation.common.NextPassRow
@@ -139,17 +140,21 @@ private fun PassesList(
)
}
) {
LazyVerticalGrid(
columns = GridCells.Adaptive(320.dp),
modifier = Modifier.fillMaxSize()
) {
items(items = passes, key = { item -> item.catNum + item.aosTime }) { pass ->
NearEarthPass(
pass = pass,
navigateToRadar = navigateToRadar,
modifier = Modifier.animateItem(),
isVerticalLayout = isVerticalLayout
)
if (passes.isEmpty()) {
EmptyListCard(message = stringResource(R.string.passes_empty_list_message))
} else {
LazyVerticalGrid(
columns = GridCells.Adaptive(320.dp),
modifier = Modifier.fillMaxSize()
) {
items(items = passes, key = { item -> item.catNum + item.aosTime }) { pass ->
NearEarthPass(
pass = pass,
navigateToRadar = navigateToRadar,
modifier = Modifier.animateItem(),
isVerticalLayout = isVerticalLayout
)
}
}
}
}
@@ -65,6 +65,7 @@ class PassesViewModel(
init {
viewModelScope.launch {
delay(1000)
satelliteRepo.passes.collectLatest { passes ->
processing?.cancelAndJoin()
processing = viewModelScope.launch {
@@ -117,7 +118,7 @@ class PassesViewModel(
val nextPass = passes.first { it.aosTime.minus(timeNow) > 0 }
val time = nextPass.aosTime.minus(timeNow).toTimerString()
_uiState.update { it.copy(nextPass = nextPass, nextTime = time, isNextTimeAos = true) }
} catch (exception: NoSuchElementException) {
} catch (_: NoSuchElementException) {
val lastPass = passes.last()
val time = lastPass.losTime.minus(timeNow).toTimerString()
_uiState.update { it.copy(nextPass = lastPass, nextTime = time, isNextTimeAos = false) }
@@ -100,6 +100,9 @@ private fun RadarScreen(uiState: RadarState, navigateUp: () -> Unit) {
if(isVerticalLayout()) {
ElevatedCard(modifier = Modifier.weight(1f)) {
Box(contentAlignment = Alignment.Center) {
if (uiState.orbitalPos == null) {
ElevatedCard(modifier = Modifier.fillMaxSize()) {}
}
uiState.orbitalPos?.let { position ->
RadarViewCompose(
item = position,
@@ -182,6 +185,9 @@ private fun RadarScreen(uiState: RadarState, navigateUp: () -> Unit) {
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
ElevatedCard(modifier = Modifier.weight(1f)) {
Box(contentAlignment = Alignment.Center) {
if (uiState.orbitalPos == null) {
ElevatedCard(modifier = Modifier.fillMaxSize()) {}
}
uiState.orbitalPos?.let { position ->
RadarViewCompose(
item = position,
@@ -355,7 +361,7 @@ private fun TransmitterItem(radio: SatRadio) {
// BluetoothCIV.updateOnce(radio)
// }
// })
) {
) {
Surface(modifier = Modifier.padding(bottom = 2.dp)) {
Column(
verticalArrangement = Arrangement.spacedBy(4.dp),
@@ -436,7 +442,7 @@ private fun FrequencyText(frequency: Long?) {
Text(
text = freqText,
textAlign = TextAlign.Center,
fontSize = 21.sp,
fontSize = 18.sp,
fontWeight = FontWeight.Bold,
color = MaterialTheme.colorScheme.primary
)
@@ -46,6 +46,7 @@ import com.rtbishop.look4sat.domain.model.SatItem
import com.rtbishop.look4sat.presentation.MainTheme
import com.rtbishop.look4sat.presentation.Screen
import com.rtbishop.look4sat.presentation.common.CardLoadingIndicator
import com.rtbishop.look4sat.presentation.common.EmptyListCard
import com.rtbishop.look4sat.presentation.common.IconCard
import com.rtbishop.look4sat.presentation.common.InfoDialog
import com.rtbishop.look4sat.presentation.common.TopBar
@@ -104,10 +105,11 @@ private fun SatellitesScreen(uiState: SatellitesState, navigateUp: () -> Unit) {
}
}
ElevatedCard(modifier = Modifier.fillMaxSize()) {
if (uiState.isLoading) {
CardLoadingIndicator()
} else {
SatellitesCard(uiState.itemsList) { id, isTicked ->
val emptyMessage = stringResource(R.string.satellites_empty_list_message)
when {
uiState.isLoading -> CardLoadingIndicator()
uiState.itemsList.isEmpty() -> EmptyListCard(message = emptyMessage)
else -> SatellitesCard(uiState.itemsList) { id, isTicked ->
uiState.takeAction(SatellitesAction.SelectSingle(id, isTicked))
}
}