mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 11:22:12 +00:00
Add: Reset & apply buttons to SortFilterSheet
This commit is contained in:
parent
553e89f9ff
commit
d75a0631e3
@ -62,6 +62,7 @@ const val PREFS_LANGUAGE = "languages"
|
|||||||
const val PREFS_LANGUAGE_DEFAULT = "system"
|
const val PREFS_LANGUAGE_DEFAULT = "system"
|
||||||
|
|
||||||
const val EXTRA_REPOSITORY_ID = "repositoryId"
|
const val EXTRA_REPOSITORY_ID = "repositoryId"
|
||||||
|
const val EXTRA_PAGE_ROUTE = "pageRoute"
|
||||||
|
|
||||||
const val HELP_SOURCECODE = "https://github.com/NeoApplications/Neo-Store"
|
const val HELP_SOURCECODE = "https://github.com/NeoApplications/Neo-Store"
|
||||||
const val HELP_CHANGELOG = "https://github.com/NeoApplications/Neo-Store/blob/master/CHANGELOG.md"
|
const val HELP_CHANGELOG = "https://github.com/NeoApplications/Neo-Store/blob/master/CHANGELOG.md"
|
||||||
|
@ -5,12 +5,15 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.wrapContentHeight
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@ -27,6 +30,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
|
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
@ -37,6 +41,7 @@ import com.machiav3lli.fdroid.MainApplication
|
|||||||
import com.machiav3lli.fdroid.R
|
import com.machiav3lli.fdroid.R
|
||||||
import com.machiav3lli.fdroid.content.Preferences
|
import com.machiav3lli.fdroid.content.Preferences
|
||||||
import com.machiav3lli.fdroid.index.RepositoryUpdater.db
|
import com.machiav3lli.fdroid.index.RepositoryUpdater.db
|
||||||
|
import com.machiav3lli.fdroid.ui.compose.components.ActionButton
|
||||||
import com.machiav3lli.fdroid.ui.compose.components.ChipsSwitch
|
import com.machiav3lli.fdroid.ui.compose.components.ChipsSwitch
|
||||||
import com.machiav3lli.fdroid.ui.compose.components.SelectChip
|
import com.machiav3lli.fdroid.ui.compose.components.SelectChip
|
||||||
import com.machiav3lli.fdroid.ui.compose.theme.AppTheme
|
import com.machiav3lli.fdroid.ui.compose.theme.AppTheme
|
||||||
@ -111,7 +116,53 @@ class SortFilterSheet() : FullscreenBottomSheetDialogFragment() {
|
|||||||
else -> Preferences.Key.CategoriesFilterExplore // NavItem.Explore
|
else -> Preferences.Key.CategoriesFilterExplore // NavItem.Explore
|
||||||
}
|
}
|
||||||
|
|
||||||
Scaffold() { paddingValues ->
|
var sortOption by remember(Preferences[sortKey]) {
|
||||||
|
mutableStateOf(Preferences[sortKey])
|
||||||
|
}
|
||||||
|
var sortAscending by remember(Preferences[sortAscendingKey]) {
|
||||||
|
mutableStateOf(Preferences[sortAscendingKey])
|
||||||
|
}
|
||||||
|
val filteredOutRepos by remember(Preferences[reposFilterKey]) {
|
||||||
|
mutableStateOf(Preferences[reposFilterKey].toMutableSet())
|
||||||
|
}
|
||||||
|
val filteredOutCategories by remember(Preferences[categoriesFilterKey]) {
|
||||||
|
mutableStateOf(Preferences[categoriesFilterKey].toMutableSet())
|
||||||
|
}
|
||||||
|
|
||||||
|
Scaffold(
|
||||||
|
bottomBar = {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier
|
||||||
|
.background(color = MaterialTheme.colorScheme.surface)
|
||||||
|
.fillMaxWidth()
|
||||||
|
.padding(12.dp)
|
||||||
|
.wrapContentHeight(),
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||||
|
) {
|
||||||
|
ActionButton(
|
||||||
|
modifier = Modifier.weight(1f),
|
||||||
|
text = stringResource(id = R.string.action_reset),
|
||||||
|
icon = painterResource(id = R.drawable.ic_delete),
|
||||||
|
positive = false,
|
||||||
|
onClick = ::dismissAllowingStateLoss
|
||||||
|
)
|
||||||
|
ActionButton(
|
||||||
|
text = stringResource(id = R.string.action_apply),
|
||||||
|
icon = painterResource(id = R.drawable.ic_check),
|
||||||
|
modifier = Modifier.weight(1f),
|
||||||
|
positive = true,
|
||||||
|
onClick = {
|
||||||
|
// TODO save prefs
|
||||||
|
Preferences[sortKey] = sortOption
|
||||||
|
Preferences[sortAscendingKey] = sortAscending
|
||||||
|
Preferences[reposFilterKey] = filteredOutRepos
|
||||||
|
Preferences[categoriesFilterKey] = filteredOutCategories
|
||||||
|
dismissAllowingStateLoss()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) { paddingValues ->
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(paddingValues)
|
.padding(paddingValues)
|
||||||
@ -133,35 +184,25 @@ class SortFilterSheet() : FullscreenBottomSheetDialogFragment() {
|
|||||||
crossAxisSpacing = 4.dp,
|
crossAxisSpacing = 4.dp,
|
||||||
mainAxisAlignment = MainAxisAlignment.Center,
|
mainAxisAlignment = MainAxisAlignment.Center,
|
||||||
) {
|
) {
|
||||||
var selected by remember {
|
|
||||||
mutableStateOf(
|
|
||||||
Preferences[sortKey]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
sortKey.default.value.values.forEach {
|
sortKey.default.value.values.forEach {
|
||||||
SelectChip(
|
SelectChip(
|
||||||
text = stringResource(id = it.order.titleResId),
|
text = stringResource(id = it.order.titleResId),
|
||||||
checked = it == selected
|
checked = it == sortOption
|
||||||
) {
|
) {
|
||||||
Preferences[sortKey] = it
|
sortOption = it
|
||||||
selected = it
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var ascending by remember {
|
|
||||||
mutableStateOf(Preferences[sortAscendingKey])
|
|
||||||
}
|
|
||||||
|
|
||||||
ChipsSwitch(
|
ChipsSwitch(
|
||||||
firstTextId = R.string.sort_ascending,
|
firstTextId = R.string.sort_ascending,
|
||||||
firstIconId = R.drawable.ic_arrow_up,
|
firstIconId = R.drawable.ic_arrow_up,
|
||||||
secondTextId = R.string.sort_descending,
|
secondTextId = R.string.sort_descending,
|
||||||
secondIconId = R.drawable.ic_arrow_down,
|
secondIconId = R.drawable.ic_arrow_down,
|
||||||
firstSelected = ascending,
|
firstSelected = sortAscending,
|
||||||
onCheckedChange = { checked ->
|
onCheckedChange = { checked ->
|
||||||
ascending = checked
|
sortAscending = checked
|
||||||
Preferences[sortAscendingKey] = checked
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -181,8 +222,7 @@ class SortFilterSheet() : FullscreenBottomSheetDialogFragment() {
|
|||||||
activeRepos.forEach {
|
activeRepos.forEach {
|
||||||
var checked by remember {
|
var checked by remember {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
!Preferences[reposFilterKey]
|
!filteredOutRepos.contains(it.id.toString())
|
||||||
.contains(it.id.toString())
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,13 +232,9 @@ class SortFilterSheet() : FullscreenBottomSheetDialogFragment() {
|
|||||||
) {
|
) {
|
||||||
checked = !checked
|
checked = !checked
|
||||||
if (checked)
|
if (checked)
|
||||||
Preferences[reposFilterKey] =
|
filteredOutRepos.remove(it.id.toString())
|
||||||
Preferences[reposFilterKey]
|
|
||||||
.minus(it.id.toString())
|
|
||||||
else
|
else
|
||||||
Preferences[reposFilterKey] =
|
filteredOutRepos.add(it.id.toString())
|
||||||
Preferences[reposFilterKey]
|
|
||||||
.plus(it.id.toString())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -219,7 +255,7 @@ class SortFilterSheet() : FullscreenBottomSheetDialogFragment() {
|
|||||||
categories.sorted().forEach {
|
categories.sorted().forEach {
|
||||||
var checked by remember {
|
var checked by remember {
|
||||||
mutableStateOf(
|
mutableStateOf(
|
||||||
!Preferences[categoriesFilterKey].contains(it)
|
!filteredOutCategories.contains(it)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,13 +265,9 @@ class SortFilterSheet() : FullscreenBottomSheetDialogFragment() {
|
|||||||
) {
|
) {
|
||||||
checked = !checked
|
checked = !checked
|
||||||
if (checked)
|
if (checked)
|
||||||
Preferences[categoriesFilterKey] =
|
filteredOutCategories.remove(it)
|
||||||
Preferences[categoriesFilterKey]
|
|
||||||
.minus(it)
|
|
||||||
else
|
else
|
||||||
Preferences[categoriesFilterKey] =
|
filteredOutCategories.add(it)
|
||||||
Preferences[categoriesFilterKey]
|
|
||||||
.plus(it)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,4 +222,6 @@
|
|||||||
<string name="categories">Categories</string>
|
<string name="categories">Categories</string>
|
||||||
<string name="sort_ascending">Ascending</string>
|
<string name="sort_ascending">Ascending</string>
|
||||||
<string name="sort_descending">Descending</string>
|
<string name="sort_descending">Descending</string>
|
||||||
|
<string name="action_apply">Apply</string>
|
||||||
|
<string name="action_reset">Reset</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user