From 1408bee0410c9740e3361074ee467bfff46a72eb Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 23 Mar 2021 17:41:58 +0530 Subject: [PATCH] Wire in ability to toggle sorting order Signed-off-by: Harsh Shandilya --- .../msfjarvis/lobsters/ui/main/LobstersApp.kt | 6 +++ .../lobsters/ui/main/LobstersTopAppBar.kt | 44 +++++++++++++++++++ app/src/main/res/drawable/ic_sort_24px.xml | 9 ++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 60 insertions(+) create mode 100644 app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersTopAppBar.kt create mode 100644 app/src/main/res/drawable/ic_sort_24px.xml diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt index 65abc778..475c5f22 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersApp.kt @@ -54,6 +54,12 @@ fun LobstersApp() { } Scaffold( + topBar = { + LobstersTopAppBar( + currentDestination, + viewModel::toggleSortOrder, + ) + }, bottomBar = { LobstersBottomNav( currentDestination, diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersTopAppBar.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersTopAppBar.kt new file mode 100644 index 00000000..8bc2bacf --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/LobstersTopAppBar.kt @@ -0,0 +1,44 @@ +package dev.msfjarvis.lobsters.ui.main + +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Text +import androidx.compose.material.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import dev.msfjarvis.lobsters.R +import dev.msfjarvis.lobsters.ui.navigation.Destination +import dev.msfjarvis.lobsters.util.IconResource +import kotlinx.coroutines.launch + +@OptIn(ExperimentalAnimationApi::class) +@Composable +fun LobstersTopAppBar( + currentDestination: Destination, + toggleSortingOrder: suspend () -> Unit, +) { + val scope = rememberCoroutineScope() + TopAppBar( + title = { + Text( + text = stringResource(id = R.string.app_name), + modifier = Modifier.padding(vertical = 8.dp), + ) + }, + actions = { + if (currentDestination == Destination.Saved) { + IconResource( + resourceId = R.drawable.ic_sort_24px, + contentDescription = stringResource(id = R.string.change_sorting_order), + modifier = Modifier + .padding(horizontal = 8.dp, vertical = 8.dp) + .clickable { scope.launch { toggleSortingOrder() } }, + ) + } + } + ) +} diff --git a/app/src/main/res/drawable/ic_sort_24px.xml b/app/src/main/res/drawable/ic_sort_24px.xml new file mode 100644 index 00000000..b37f2638 --- /dev/null +++ b/app/src/main/res/drawable/ic_sort_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 75e20d9d..95271949 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,4 +10,5 @@ Remove from saved posts Refresh posts Open comments + Change sort order