From d59f9c75067437cc013bc355c2c2461272a10b08 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sun, 13 Aug 2023 13:02:49 +0100 Subject: [PATCH] Created future InfoScreen, added resources --- .../look4sat/presentation/MainScreen.kt | 19 +++-- .../presentation/entries/EntriesScreen.kt | 4 +- .../look4sat/presentation/info/InfoScreen.kt | 85 +++++++++++++++++++ .../presentation/settings/SettingsScreen.kt | 52 ------------ .../{ic_checkbox_off.xml => ic_check_off.xml} | 0 .../{ic_checkbox_on.xml => ic_check_on.xml} | 0 app/src/main/res/drawable/ic_info.xml | 9 ++ 7 files changed, 106 insertions(+), 63 deletions(-) create mode 100644 app/src/main/java/com/rtbishop/look4sat/presentation/info/InfoScreen.kt rename app/src/main/res/drawable/{ic_checkbox_off.xml => ic_check_off.xml} (100%) rename app/src/main/res/drawable/{ic_checkbox_on.xml => ic_check_on.xml} (100%) create mode 100644 app/src/main/res/drawable/ic_info.xml 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 547bda74..54d73df3 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/MainScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/MainScreen.kt @@ -22,6 +22,7 @@ import androidx.navigation.navArgument import com.rtbishop.look4sat.R import com.rtbishop.look4sat.presentation.entries.EntriesScreen import com.rtbishop.look4sat.presentation.entries.EntriesViewModel +import com.rtbishop.look4sat.presentation.info.InfoScreen import com.rtbishop.look4sat.presentation.map.MapScreen import com.rtbishop.look4sat.presentation.passes.PassesScreen import com.rtbishop.look4sat.presentation.radar.RadarScreen @@ -30,9 +31,10 @@ import com.rtbishop.look4sat.presentation.settings.SettingsScreen sealed class Screen(var title: String, var icon: Int, var route: String) { data object Entries : Screen("Entries", R.drawable.ic_sputnik, "entries") data object Passes : Screen("Passes", R.drawable.ic_passes, "passes") - data object Radar : Screen("Radar", R.drawable.ic_settings, "radar") + data object Radar : Screen("Radar", R.drawable.ic_passes, "passes.radar") data object Map : Screen("World Map", R.drawable.ic_world_map, "world_map") data object Settings : Screen("Settings", R.drawable.ic_settings, "settings") + data object Info : Screen("Info", R.drawable.ic_info, "info") } @Composable @@ -44,20 +46,18 @@ fun MainScreen(navController: NavHostController = rememberNavController()) { @Composable private fun MainNavBar(navController: NavController) { - val items = listOf(Screen.Entries, Screen.Passes, Screen.Radar, Screen.Map, Screen.Settings) + val items = listOf(Screen.Entries, Screen.Passes, Screen.Map, Screen.Settings, Screen.Info) NavigationBar(modifier = Modifier.height(48.dp)) { val navBackStackEntry = navController.currentBackStackEntryAsState() val currentRoute = navBackStackEntry.value?.destination?.route - items.forEach { item -> - NavigationBarItem(selected = currentRoute?.contains(item.route) ?: false, onClick = { - navController.navigate(item.route) { - navController.graph.startDestinationRoute?.let { route -> - popUpTo(route) { saveState = false } - } + items.forEach { screen -> + NavigationBarItem(selected = currentRoute?.contains(screen.route) ?: false, onClick = { + navController.navigate(screen.route) { + navController.graph.startDestinationRoute?.let { popUpTo(it) { saveState = false } } launchSingleTop = true restoreState = false } - }, icon = { Icon(painterResource(id = item.icon), contentDescription = item.title) }) + }, icon = { Icon(painterResource(id = screen.icon), contentDescription = screen.title) }) } } } @@ -81,5 +81,6 @@ private fun MainNavGraph(navController: NavHostController) { composable(radarRoute, radarArgs) { RadarScreen() } composable(Screen.Map.route) { MapScreen() } composable(Screen.Settings.route) { SettingsScreen() } + composable(Screen.Info.route) { InfoScreen() } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesScreen.kt index 8fc7a8a7..c6e9138f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesScreen.kt @@ -151,8 +151,8 @@ private fun MiddleBarPreview() = MainTheme { MiddleBar("Amateur", {}, {}, {}) } private fun MiddleBar(type: String, navigate: () -> Unit, uncheck: () -> Unit, check: () -> Unit) { Row(horizontalArrangement = Arrangement.spacedBy(6.dp), modifier = Modifier.height(48.dp)) { EntryTypeCard(type = type, { navigate() }, modifier = Modifier.weight(1f)) - CardIcon(onClick = { uncheck() }, iconId = R.drawable.ic_checkbox_off) - CardIcon(onClick = { check() }, iconId = R.drawable.ic_checkbox_on) + CardIcon(onClick = { uncheck() }, iconId = R.drawable.ic_check_off) + CardIcon(onClick = { check() }, iconId = R.drawable.ic_check_on) } } 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..9aefdf9f --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/info/InfoScreen.kt @@ -0,0 +1,85 @@ +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.LocalContext +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 com.rtbishop.look4sat.R +import com.rtbishop.look4sat.presentation.CardButton +import com.rtbishop.look4sat.presentation.MainTheme +import com.rtbishop.look4sat.presentation.gotoUrl + +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 +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 context = LocalContext.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.secondary, + 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.secondary, + modifier = modifier.padding(6.dp) + ) + Row(horizontalArrangement = Arrangement.SpaceEvenly) { + CardButton( + onClick = { gotoUrl(context, LICENSE_URL) }, + text = stringResource(id = R.string.btn_license), + modifier = Modifier.weight(1f) + ) + Spacer(modifier = Modifier.width(6.dp)) + CardButton( + onClick = { gotoUrl(context, POLICY_URL) }, + text = stringResource(id = R.string.btn_privacy), + modifier = Modifier.weight(1f) + ) + } + } + } +} 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 05436ad5..0faefe38 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 @@ -28,7 +28,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource 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 @@ -48,8 +47,6 @@ 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" private const val GITHUB_URL = "https://github.com/rt-bishop/Look4Sat/" private const val DONATE_URL = "https://ko-fi.com/rt_bishop" private const val FDROID_URL = "https://f-droid.org/en/packages/com.rtbishop.look4sat/" @@ -123,7 +120,6 @@ fun SettingsScreen() { item { LocationCard(positionSettings, setGpsPos, showPosDialog, showLocDialog, dismissPos) } item { DataCard(dataSettings, updateFromWeb, updateFromFile, clearAllData) } item { OtherCard(otherSettings, toggleUtc, toggleUpdate, toggleSweep, toggleSensor) } - item { CardCredits() } } } @@ -423,54 +419,6 @@ private fun OtherCard( } } -@Preview(showBackground = true) -@Composable -private fun CardCreditsPreview() = MainTheme { CardCredits() } - -@Composable -private fun CardCredits(modifier: Modifier = Modifier) { - val context = LocalContext.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.secondary, - 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.secondary, - modifier = modifier.padding(6.dp) - ) - Row(horizontalArrangement = Arrangement.SpaceEvenly) { - CardButton( - onClick = { gotoUrl(context, LICENSE_URL) }, - text = stringResource(id = R.string.btn_license), - modifier = Modifier.weight(1f) - ) - Spacer(modifier = Modifier.width(6.dp)) - CardButton( - onClick = { gotoUrl(context, POLICY_URL) }, - text = stringResource(id = R.string.btn_privacy), - modifier = Modifier.weight(1f) - ) - } - } - } -} - @Composable private fun setUpdateTime(updateTime: Long): String { val updateDate = if (updateTime != 0L) { diff --git a/app/src/main/res/drawable/ic_checkbox_off.xml b/app/src/main/res/drawable/ic_check_off.xml similarity index 100% rename from app/src/main/res/drawable/ic_checkbox_off.xml rename to app/src/main/res/drawable/ic_check_off.xml diff --git a/app/src/main/res/drawable/ic_checkbox_on.xml b/app/src/main/res/drawable/ic_check_on.xml similarity index 100% rename from app/src/main/res/drawable/ic_checkbox_on.xml rename to app/src/main/res/drawable/ic_check_on.xml diff --git a/app/src/main/res/drawable/ic_info.xml b/app/src/main/res/drawable/ic_info.xml new file mode 100644 index 00000000..8e9cc5f1 --- /dev/null +++ b/app/src/main/res/drawable/ic_info.xml @@ -0,0 +1,9 @@ + + +