From f435b8c65be47dac30d27b16ab958d8beb8fb973 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sat, 24 Sep 2022 06:08:31 +0200 Subject: [PATCH] Add: SortFilter launcher button to main Pages --- .../fdroid/ui/pages/ExplorePage.kt | 28 +++++++++++++++++++ .../fdroid/ui/pages/InstalledPage.kt | 9 ++++-- .../machiav3lli/fdroid/ui/pages/LatestPage.kt | 18 +++++++++--- 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt index fb353500..504d9cec 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/ExplorePage.kt @@ -8,15 +8,20 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SuggestionChip import androidx.compose.material3.SuggestionChipDefaults +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -30,6 +35,7 @@ import com.machiav3lli.fdroid.ui.activities.MainActivityX import com.machiav3lli.fdroid.ui.compose.ProductsVerticalRecycler import com.machiav3lli.fdroid.ui.compose.components.CategoryChip import com.machiav3lli.fdroid.ui.compose.theme.AppTheme +import com.machiav3lli.fdroid.ui.navigation.NavItem import com.machiav3lli.fdroid.ui.viewmodels.MainNavFragmentViewModelX import com.machiav3lli.fdroid.utility.isDarkTheme import com.machiav3lli.fdroid.utility.onLaunchClick @@ -37,6 +43,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3Api::class) @Composable fun ExplorePage(viewModel: MainNavFragmentViewModelX) { val context = LocalContext.current @@ -78,6 +85,27 @@ fun ExplorePage(viewModel: MainNavFragmentViewModelX) { var favoriteFilter by remember { mutableStateOf(false) } + + SuggestionChip( + shape = MaterialTheme.shapes.medium, + colors = SuggestionChipDefaults.suggestionChipColors( + containerColor = MaterialTheme.colorScheme.surface, + labelColor = MaterialTheme.colorScheme.onSurface, + ), + onClick = { + mainActivityX.navigateSortFilter(NavItem.Explore) + }, + icon = { + Icon( + modifier = Modifier.size(18.dp), + painter = painterResource(id = R.drawable.ic_sort), + contentDescription = stringResource(id = R.string.sort_filter) + ) + }, + label = { + Text(text = stringResource(id = R.string.sort_filter)) + } + ) Spacer(modifier = Modifier.weight(1f)) CategoryChip( category = stringResource(id = R.string.favorite_applications), diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt index a1d9889c..7cf540bd 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/InstalledPage.kt @@ -40,6 +40,7 @@ import com.machiav3lli.fdroid.ui.activities.MainActivityX import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler import com.machiav3lli.fdroid.ui.compose.ProductsVerticalRecycler import com.machiav3lli.fdroid.ui.compose.theme.AppTheme +import com.machiav3lli.fdroid.ui.navigation.NavItem import com.machiav3lli.fdroid.ui.viewmodels.MainNavFragmentViewModelX import com.machiav3lli.fdroid.utility.isDarkTheme import com.machiav3lli.fdroid.utility.onLaunchClick @@ -152,13 +153,15 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) { text = stringResource(id = R.string.installed_applications), modifier = Modifier.weight(1f), ) - /*SuggestionChip( + SuggestionChip( shape = MaterialTheme.shapes.medium, colors = SuggestionChipDefaults.suggestionChipColors( containerColor = MaterialTheme.colorScheme.surface, labelColor = MaterialTheme.colorScheme.onSurface, ), - onClick = { }, // TODO add sort & filter + onClick = { + mainActivityX.navigateSortFilter(NavItem.Installed) + }, icon = { Icon( modifier = Modifier.size(18.dp), @@ -169,7 +172,7 @@ fun InstalledPage(viewModel: MainNavFragmentViewModelX) { label = { Text(text = stringResource(id = R.string.sort_filter)) } - )*/ + ) } ProductsVerticalRecycler( productsList = primaryList?.sortedBy { it.label.lowercase() }, diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt index 463b73d3..25ec803f 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/pages/LatestPage.kt @@ -1,13 +1,18 @@ -package com.machiav3lli.fdroid.ui.pages + package com.machiav3lli.fdroid.ui.pages import androidx.compose.foundation.background import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SuggestionChip +import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect @@ -18,6 +23,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Alignment 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.unit.dp import com.machiav3lli.fdroid.R @@ -26,6 +32,7 @@ import com.machiav3lli.fdroid.ui.activities.MainActivityX import com.machiav3lli.fdroid.ui.compose.ProductsHorizontalRecycler import com.machiav3lli.fdroid.ui.compose.components.ProductsListItem import com.machiav3lli.fdroid.ui.compose.theme.AppTheme +import com.machiav3lli.fdroid.ui.navigation.NavItem import com.machiav3lli.fdroid.ui.viewmodels.MainNavFragmentViewModelX import com.machiav3lli.fdroid.utility.isDarkTheme import com.machiav3lli.fdroid.utility.onLaunchClick @@ -33,6 +40,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3Api::class) @Composable fun LatestPage(viewModel: MainNavFragmentViewModelX) { val context = LocalContext.current @@ -86,13 +94,15 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) { text = stringResource(id = R.string.recently_updated), modifier = Modifier.weight(1f), ) - /*SuggestionChip( + SuggestionChip( shape = MaterialTheme.shapes.medium, colors = SuggestionChipDefaults.suggestionChipColors( containerColor = MaterialTheme.colorScheme.surface, labelColor = MaterialTheme.colorScheme.onSurface, ), - onClick = { }, // TODO add sort & filter + onClick = { + mainActivityX.navigateSortFilter(NavItem.Latest) + }, icon = { Icon( modifier = Modifier.size(18.dp), @@ -103,7 +113,7 @@ fun LatestPage(viewModel: MainNavFragmentViewModelX) { label = { Text(text = stringResource(id = R.string.sort_filter)) } - )*/ + ) } } items(