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