diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/MainScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/MainScreen.kt
index ff7dd8a8..437ff6c2 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/MainScreen.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/MainScreen.kt
@@ -1,32 +1,97 @@
package com.rtbishop.look4sat.presentation
import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.Icon
+import androidx.compose.material3.NavigationBar
+import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.navigation.NavController
+import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
+import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
+import com.rtbishop.look4sat.R
+import com.rtbishop.look4sat.presentation.info.infoDestination
import com.rtbishop.look4sat.presentation.map.mapDestination
import com.rtbishop.look4sat.presentation.passes.passesDestination
import com.rtbishop.look4sat.presentation.radar.radarDestination
import com.rtbishop.look4sat.presentation.satellites.satellitesDestination
import com.rtbishop.look4sat.presentation.settings.settingsDestination
+sealed class Screen(var title: String, var icon: Int, var route: String) {
+ data object Main : Screen("Main", R.drawable.ic_sputnik, "main")
+ data object Radar : Screen("Radar", R.drawable.ic_sputnik, "radar")
+ data object Satellites : Screen("Satellites", R.drawable.ic_sputnik, "satellites")
+ data object Passes : Screen("Passes", R.drawable.ic_passes, "passes")
+ data object Map : Screen("Map", R.drawable.ic_map, "map")
+ data object Settings : Screen("Settings", R.drawable.ic_settings, "settings")
+ data object Info : Screen("Info", R.drawable.ic_info, "info")
+}
+
@Composable
fun MainScreen() {
- val navController: NavHostController = rememberNavController()
- Scaffold { innerPadding ->
+ val outerNavController: NavHostController = rememberNavController()
+ val navigateToRadar = { catNum: Int, aosTime: Long ->
+ val routeWithParams = "${Screen.Radar.route}?catNum=${catNum}&aosTime=${aosTime}"
+ outerNavController.navigate(routeWithParams)
+ }
+ NavHost(navController = outerNavController, startDestination = Screen.Main.route) {
+ mainDestination(navigateToRadar)
+ radarDestination { outerNavController.navigateUp() }
+ }
+}
+
+private fun NavGraphBuilder.mainDestination(navigateToRadar: (Int, Long) -> Unit) {
+ composable(Screen.Main.route) { NavBarScreen(navigateToRadar) }
+}
+
+@Composable
+private fun NavBarScreen(navigateToRadar: (Int, Long) -> Unit) {
+ val innerNavController: NavHostController = rememberNavController()
+ val navigateToPasses = { innerNavController.navigate(Screen.Passes.route) }
+ Scaffold(bottomBar = { MainNavBar(innerNavController) }) { innerPadding ->
NavHost(
- navController = navController,
- startDestination = "passes",
+ navController = innerNavController,
+ startDestination = Screen.Passes.route,
modifier = Modifier.padding(innerPadding)
) {
- satellitesDestination(navController)
- passesDestination(navController)
- radarDestination(navController)
- mapDestination(navController)
- settingsDestination(navController)
+ satellitesDestination(navigateToPasses)
+ passesDestination(navigateToRadar)
+ mapDestination()
+ settingsDestination()
+ infoDestination()
+ }
+ }
+}
+
+@Composable
+private fun MainNavBar(navController: NavController) {
+ val items = listOf(Screen.Satellites, Screen.Passes, Screen.Map, Screen.Settings, Screen.Info)
+ val destinationRoute = navController.currentBackStackEntryAsState().value?.destination?.route
+ NavigationBar {
+ items.forEach { item ->
+ NavigationBarItem(
+ icon = { Icon(painterResource(item.icon), item.title) },
+ label = { Text(item.title) },
+ selected = item.route == destinationRoute,
+ onClick = {
+ if (item.route == destinationRoute) {
+ // reselecting the same tab
+ } else {
+ navController.navigate(item.route) {
+ popUpTo(Screen.Passes.route) { saveState = false }
+ launchSingleTop = true
+ restoreState = false
+ }
+ }
+ }
+ )
}
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/info/InfoScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/info/InfoScreen.kt
new file mode 100644
index 00000000..1fba1a5a
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/info/InfoScreen.kt
@@ -0,0 +1,91 @@
+package com.rtbishop.look4sat.presentation.info
+
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.material3.ElevatedCard
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalUriHandler
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.navigation.NavGraphBuilder
+import androidx.navigation.compose.composable
+import com.rtbishop.look4sat.R
+import com.rtbishop.look4sat.presentation.MainTheme
+import com.rtbishop.look4sat.presentation.Screen
+import com.rtbishop.look4sat.presentation.components.CardButton
+
+private const val POLICY_URL = "https://sites.google.com/view/look4sat-privacy-policy/home"
+private const val LICENSE_URL = "https://www.gnu.org/licenses/gpl-3.0.html"
+
+fun NavGraphBuilder.infoDestination() {
+ composable(Screen.Info.route) { InfoScreen() }
+}
+
+@Composable
+private fun InfoScreen() {
+ LazyColumn(modifier = Modifier.padding(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) {
+ item { CardCredits() }
+ }
+}
+
+@Preview(showBackground = true)
+@Composable
+private fun CardCreditsPreview() = MainTheme { CardCredits() }
+
+@Composable
+private fun CardCredits(modifier: Modifier = Modifier) {
+ val uriHandler = LocalUriHandler.current
+ ElevatedCard(modifier = modifier.fillMaxWidth()) {
+ Column(
+ horizontalAlignment = Alignment.CenterHorizontally,
+ modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp)
+ ) {
+ Text(
+ text = stringResource(id = R.string.outro_title),
+ fontSize = 18.sp,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colorScheme.primary,
+ modifier = modifier.padding(6.dp)
+ )
+ Text(
+ text = stringResource(
+ id = R.string.outro_thanks
+ ), fontSize = 16.sp, textAlign = TextAlign.Center
+ )
+ Text(
+ text = stringResource(id = R.string.outro_license),
+ fontSize = 18.sp,
+ fontWeight = FontWeight.Medium,
+ color = MaterialTheme.colorScheme.primary,
+ modifier = modifier.padding(6.dp)
+ )
+ Row(horizontalArrangement = Arrangement.SpaceEvenly) {
+ CardButton(
+ onClick = { uriHandler.openUri(LICENSE_URL) },
+ text = stringResource(id = R.string.btn_license),
+ modifier = Modifier.weight(1f)
+ )
+ Spacer(modifier = Modifier.width(6.dp))
+ CardButton(
+ onClick = { uriHandler.openUri(POLICY_URL) },
+ text = stringResource(id = R.string.btn_privacy),
+ modifier = Modifier.weight(1f)
+ )
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt
index b4c7048f..e2844fc3 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt
@@ -37,12 +37,12 @@ import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavGraphBuilder
-import androidx.navigation.NavHostController
import androidx.navigation.compose.composable
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.domain.predict.GeoPos
import com.rtbishop.look4sat.domain.predict.OrbitalObject
import com.rtbishop.look4sat.domain.predict.OrbitalPos
+import com.rtbishop.look4sat.presentation.Screen
import com.rtbishop.look4sat.presentation.components.CardIcon
import com.rtbishop.look4sat.presentation.components.NextPassRow
import com.rtbishop.look4sat.presentation.components.TimerBar
@@ -80,8 +80,8 @@ private val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
}
private val labelRect = Rect()
-fun NavGraphBuilder.mapDestination(navController: NavHostController) {
- composable("map") {
+fun NavGraphBuilder.mapDestination() {
+ composable(Screen.Map.route) {
val viewModel = viewModel(MapViewModel::class.java, factory = MapViewModel.Factory)
val uiState = viewModel.uiState.collectAsStateWithLifecycle()
val mapView = rememberMapViewWithLifecycle()
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt
index ab75401a..b4ac7589 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt
@@ -36,7 +36,6 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavGraphBuilder
-import androidx.navigation.NavHostController
import androidx.navigation.compose.composable
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.domain.predict.DeepSpaceObject
@@ -44,12 +43,12 @@ import com.rtbishop.look4sat.domain.predict.NearEarthObject
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.components.CardIcon
import com.rtbishop.look4sat.presentation.components.InfoDialog
import com.rtbishop.look4sat.presentation.components.NextPassRow
import com.rtbishop.look4sat.presentation.components.TimerBar
import com.rtbishop.look4sat.presentation.components.TimerRow
-import com.rtbishop.look4sat.presentation.radar.navigateToRadar
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
@@ -57,16 +56,13 @@ import java.util.Locale
private val sdfDate = SimpleDateFormat("EEE dd MMM", Locale.ENGLISH)
private val sdfTime = SimpleDateFormat("HH:mm:ss", Locale.ENGLISH)
-fun NavGraphBuilder.passesDestination(navController: NavHostController) {
- composable("passes") {
+fun NavGraphBuilder.passesDestination(navigateToRadar: (Int, Long) -> Unit) {
+ composable(Screen.Passes.route) {
val viewModel = viewModel(
modelClass = PassesViewModel::class.java,
factory = PassesViewModel.Factory
)
val uiState = viewModel.uiState.collectAsStateWithLifecycle().value
- val navigateToRadar = { catNum: Int, aosTime: Long ->
- navController.navigateToRadar(catNum, aosTime)
- }
PassesScreen(uiState, navigateToRadar)
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt
index e6655fea..66f6efba 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt
@@ -27,6 +27,7 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -45,21 +46,21 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavGraphBuilder
-import androidx.navigation.NavHostController
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.domain.model.SatRadio
import com.rtbishop.look4sat.domain.utility.toDegrees
import com.rtbishop.look4sat.presentation.MainTheme
+import com.rtbishop.look4sat.presentation.Screen
import com.rtbishop.look4sat.presentation.components.CardIcon
import com.rtbishop.look4sat.presentation.components.NextPassRow
import com.rtbishop.look4sat.presentation.components.TimerBar
import com.rtbishop.look4sat.presentation.components.TimerRow
import com.rtbishop.look4sat.presentation.components.getDefaultPass
-fun NavGraphBuilder.radarDestination(navController: NavHostController) {
- val radarRoute = "radar?catNum={catNum}&aosTime={aosTime}"
+fun NavGraphBuilder.radarDestination(navigateBack: () -> Unit) {
+ val radarRoute = "${Screen.Radar.route}?catNum={catNum}&aosTime={aosTime}"
val radarArgs = listOf(
navArgument("catNum") { defaultValue = 0 },
navArgument("aosTime") { defaultValue = 0L }
@@ -67,14 +68,10 @@ fun NavGraphBuilder.radarDestination(navController: NavHostController) {
composable(radarRoute, radarArgs) {
val viewModel = viewModel(RadarViewModel::class.java, factory = RadarViewModel.Factory)
val uiState = viewModel.uiState.collectAsStateWithLifecycle().value
- RadarScreen(uiState) { navController.navigateUp() }
+ RadarScreen(uiState, navigateBack)
}
}
-fun NavHostController.navigateToRadar(catNum: Int, aosTime: Long) {
- navigate("radar?catNum=${catNum}&aosTime=${aosTime}")
-}
-
@Composable
private fun RadarScreen(uiState: RadarState, navigateBack: () -> Unit) {
// BluetoothCIV.init(LocalContext.current)
@@ -84,91 +81,94 @@ private fun RadarScreen(uiState: RadarState, navigateBack: () -> Unit) {
uiState.sendAction(RadarAction.AddToCalendar(pass.name, pass.aosTime, pass.losTime))
}
}
- Column(
- modifier = Modifier.padding(6.dp),
- verticalArrangement = Arrangement.spacedBy(6.dp)
- ) {
- TimerRow {
- CardIcon(onClick = navigateBack, iconId = R.drawable.ic_back)
- TimerBar(timeString = uiState.currentTime, isTimeAos = uiState.isCurrentTimeAos)
- CardIcon(onClick = addToCalendar, iconId = R.drawable.ic_calendar)
- }
- NextPassRow(pass = uiState.currentPass ?: getDefaultPass())
- Box(contentAlignment = Alignment.BottomCenter, modifier = Modifier.aspectRatio(1f)) {
- uiState.orbitalPos?.let { position ->
- ElevatedCard {
- RadarViewCompose(
- item = position,
- items = uiState.satTrack,
- azimElev = uiState.orientationValues,
- shouldShowSweep = uiState.shouldShowSweep,
- shouldUseCompass = uiState.shouldUseCompass
- )
- }
- Column(
- verticalArrangement = Arrangement.SpaceBetween,
- modifier = Modifier
- .fillMaxSize()
- .padding(horizontal = 6.dp, vertical = 4.dp)
- ) {
- Row(
- horizontalArrangement = Arrangement.SpaceBetween,
- modifier = Modifier.fillMaxWidth()
- ) {
- RadarTextTop(
- position.azimuth,
- stringResource(R.string.radar_az_text),
- true
- )
- RadarTextTop(
- position.elevation,
- stringResource(R.string.radar_el_text),
- false
+ Scaffold { innerPadding ->
+ val paddingMod = Modifier.padding(innerPadding)
+ Column(
+ modifier = paddingMod.padding(6.dp),
+ verticalArrangement = Arrangement.spacedBy(6.dp)
+ ) {
+ TimerRow {
+ CardIcon(onClick = navigateBack, iconId = R.drawable.ic_back)
+ TimerBar(timeString = uiState.currentTime, isTimeAos = uiState.isCurrentTimeAos)
+ CardIcon(onClick = addToCalendar, iconId = R.drawable.ic_calendar)
+ }
+ NextPassRow(pass = uiState.currentPass ?: getDefaultPass())
+ Box(contentAlignment = Alignment.BottomCenter, modifier = Modifier.aspectRatio(1f)) {
+ uiState.orbitalPos?.let { position ->
+ ElevatedCard {
+ RadarViewCompose(
+ item = position,
+ items = uiState.satTrack,
+ azimElev = uiState.orientationValues,
+ shouldShowSweep = uiState.shouldShowSweep,
+ shouldUseCompass = uiState.shouldUseCompass
)
}
- Row(
- horizontalArrangement = Arrangement.SpaceBetween,
- modifier = Modifier.fillMaxWidth()
+ Column(
+ verticalArrangement = Arrangement.SpaceBetween,
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(horizontal = 6.dp, vertical = 4.dp)
) {
- RadarTextBottom(
- position.altitude,
- stringResource(R.string.radar_alt_text),
- true
- )
- RadarTextBottom(
- position.distance,
- stringResource(R.string.radar_dist_text),
- false
- )
+ Row(
+ horizontalArrangement = Arrangement.SpaceBetween,
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ RadarTextTop(
+ position.azimuth,
+ stringResource(R.string.radar_az_text),
+ true
+ )
+ RadarTextTop(
+ position.elevation,
+ stringResource(R.string.radar_el_text),
+ false
+ )
+ }
+ Row(
+ horizontalArrangement = Arrangement.SpaceBetween,
+ modifier = Modifier.fillMaxWidth()
+ ) {
+ RadarTextBottom(
+ position.altitude,
+ stringResource(R.string.radar_alt_text),
+ true
+ )
+ RadarTextBottom(
+ position.distance,
+ stringResource(R.string.radar_dist_text),
+ false
+ )
+ }
}
}
}
- }
- ElevatedCard(modifier = Modifier.fillMaxSize()) {
- if (uiState.transmitters.isEmpty()) {
- Column(
- modifier = Modifier.fillMaxSize(),
- horizontalAlignment = Alignment.CenterHorizontally,
- verticalArrangement = Arrangement.Center
- ) {
- Icon(
- painter = painterResource(R.drawable.ic_satellite),
- contentDescription = null,
- modifier = Modifier.size(64.dp)
- )
- Spacer(modifier = Modifier.height(16.dp))
- Text(
- text = "This satellite doesn't have any known transcievers...",
- textAlign = TextAlign.Center,
- fontSize = 18.sp,
- modifier = Modifier.padding(16.dp)
- )
- }
- } else {
- Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
- TransmittersList(transmitters = uiState.transmitters)
- if (uiState.orbitalPos?.eclipsed == true) {
- EclipsedIndicator()
+ ElevatedCard(modifier = Modifier.fillMaxSize()) {
+ if (uiState.transmitters.isEmpty()) {
+ Column(
+ modifier = Modifier.fillMaxSize(),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.Center
+ ) {
+ Icon(
+ painter = painterResource(R.drawable.ic_satellite),
+ contentDescription = null,
+ modifier = Modifier.size(64.dp)
+ )
+ Spacer(modifier = Modifier.height(16.dp))
+ Text(
+ text = "This satellite doesn't have any known transcievers...",
+ textAlign = TextAlign.Center,
+ fontSize = 18.sp,
+ modifier = Modifier.padding(16.dp)
+ )
+ }
+ } else {
+ Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
+ TransmittersList(transmitters = uiState.transmitters)
+ if (uiState.orbitalPos?.eclipsed == true) {
+ EclipsedIndicator()
+ }
}
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesScreen.kt
index 52454537..e44b635d 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesScreen.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesScreen.kt
@@ -41,23 +41,23 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavGraphBuilder
-import androidx.navigation.NavHostController
import androidx.navigation.compose.composable
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.domain.model.SatItem
import com.rtbishop.look4sat.presentation.MainTheme
+import com.rtbishop.look4sat.presentation.Screen
import com.rtbishop.look4sat.presentation.components.CardIcon
import com.rtbishop.look4sat.presentation.components.CardLoadingIndicator
import com.rtbishop.look4sat.presentation.components.InfoDialog
-fun NavGraphBuilder.satellitesDestination(navController: NavHostController) {
- composable("satellites") {
+fun NavGraphBuilder.satellitesDestination(navigateToPasses: () -> Unit) {
+ composable(Screen.Satellites.route) {
val viewModel = viewModel(
modelClass = SatellitesViewModel::class.java,
factory = SatellitesViewModel.Factory
)
val uiState = viewModel.uiState.collectAsStateWithLifecycle().value
- SatellitesScreen(uiState) { navController.navigateUp() }
+ SatellitesScreen(uiState, navigateToPasses)
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt
index 484fbfe0..8fc9e4a1 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt
@@ -37,22 +37,19 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavGraphBuilder
-import androidx.navigation.NavHostController
import androidx.navigation.compose.composable
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.domain.model.OtherSettings
import com.rtbishop.look4sat.domain.predict.GeoPos
import com.rtbishop.look4sat.presentation.MainTheme
+import com.rtbishop.look4sat.presentation.Screen
import com.rtbishop.look4sat.presentation.components.CardButton
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
-private const val POLICY_URL = "https://sites.google.com/view/look4sat-privacy-policy/home"
-private const val LICENSE_URL = "https://www.gnu.org/licenses/gpl-3.0.html"
-
-fun NavGraphBuilder.settingsDestination(navController: NavHostController) {
- composable("settings") {
+fun NavGraphBuilder.settingsDestination() {
+ composable(Screen.Settings.route) {
val viewModel = viewModel(
modelClass = SettingsViewModel::class.java,
factory = SettingsViewModel.Factory
@@ -62,6 +59,9 @@ fun NavGraphBuilder.settingsDestination(navController: NavHostController) {
}
}
+private const val POLICY_URL = "https://sites.google.com/view/look4sat-privacy-policy/home"
+private const val LICENSE_URL = "https://www.gnu.org/licenses/gpl-3.0.html"
+
@Composable
private fun SettingsScreen(uiState: SettingsState) {
// Permissions setup
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index f28e0f29..f7b70792 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -69,7 +69,7 @@
- Поиск по Имени / Id
+ Имя / Id
Нет предстоящих пролётов спутников
Пожалуйста, обновите базу данных спутников через меню Настроек
diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml
index 8768a81c..717b62e2 100644
--- a/app/src/main/res/values-si/strings.xml
+++ b/app/src/main/res/values-si/strings.xml
@@ -69,7 +69,7 @@
- නමින් / Id මගින් සොයන්න
+ Name / Id
ප්රදර්ශනය කිරීමට ඉදිරියට එන චන්ද්රිකා පසුකර යෑම් නැත.
පෙන්වීමට දත්ත නැත. කරුණාකර දත්ත සමුදාය යාවත්කාලීන කරන්න.
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 250ae77d..721ca07d 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -69,7 +69,7 @@
- 按名称或 ID 搜索
+ Name / Id
没有即将过境的卫星
没有数据可显示,请通过设置菜单更新卫星数据。
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9fea7704..f64c5414 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -81,7 +81,7 @@
- Search by Name / Id
+ Name / Id
There are no upcoming satellite passes to display
No data to show. Please update the database via Settings menu.
diff --git a/fastlane/metadata/android/en-US/changelogs/320.txt b/fastlane/metadata/android/en-US/changelogs/320.txt
deleted file mode 100644
index 3ec9bb22..00000000
--- a/fastlane/metadata/android/en-US/changelogs/320.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Added calendar reminder support by zhou2008
-Added Sinhala translation by Dilshan Hapuarachchi
\ No newline at end of file