Highlight selected list in drawer

pull/2617/head
Alex Baker 2 years ago
parent 33bab626e0
commit 287b106dd4

@ -72,6 +72,7 @@ class MainActivityViewModel @Inject constructor(
fun setFilter(filter: Filter) { fun setFilter(filter: Filter) {
_state.update { it.copy(filter = filter) } _state.update { it.copy(filter = filter) }
updateFilters()
defaultFilterProvider.lastViewedFilter = filter defaultFilterProvider.lastViewedFilter = filter
} }
@ -94,6 +95,7 @@ class MainActivityViewModel @Inject constructor(
} }
fun updateFilters() = viewModelScope.launch(Dispatchers.Default) { fun updateFilters() = viewModelScope.launch(Dispatchers.Default) {
val selected = state.value.filter
filterProvider filterProvider
.drawerItems() .drawerItems()
.map { item -> .map { item ->
@ -109,6 +111,7 @@ class MainActivityViewModel @Inject constructor(
Timber.e(e) Timber.e(e)
0 0
}, },
selected = item == selected,
shareCount = if (item is CaldavFilter) item.principals else 0, shareCount = if (item is CaldavFilter) item.principals else 0,
type = { item }, type = { item },
) )

@ -6,6 +6,7 @@ import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.spring import androidx.compose.animation.core.spring
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -82,7 +83,10 @@ fun TaskListDrawer(
) { ) {
items(items = filters) { items(items = filters) {
when (it) { when (it) {
is DrawerItem.Filter -> FilterItem(item = it, onClick = { onClick(it) }) is DrawerItem.Filter -> FilterItem(
item = it,
onClick = { onClick(it) }
)
is DrawerItem.Header -> HeaderItem( is DrawerItem.Header -> HeaderItem(
item = it, item = it,
canAdd = it.canAdd, canAdd = it.canAdd,
@ -138,6 +142,14 @@ private fun FilterItem(
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
MenuRow( MenuRow(
modifier = Modifier
.background(
if (item.selected)
MaterialTheme.colors.onSurface.copy(alpha = .1f)
else
Color.Transparent
)
.clickable(onClick = onClick),
onClick = onClick, onClick = onClick,
) { ) {
if (item.icon != -1) { if (item.icon != -1) {
@ -263,12 +275,13 @@ private fun HeaderItem(
@Composable @Composable
private fun MenuRow( private fun MenuRow(
modifier: Modifier = Modifier,
padding: PaddingValues = PaddingValues(horizontal = 16.dp), padding: PaddingValues = PaddingValues(horizontal = 16.dp),
onClick: () -> Unit, onClick: () -> Unit,
content: @Composable RowScope.() -> Unit, content: @Composable RowScope.() -> Unit,
) { ) {
Row( Row(
modifier = Modifier modifier = modifier
.clickable(onClick = onClick) .clickable(onClick = onClick)
.height(48.dp) .height(48.dp)
.padding(padding) .padding(padding)

Loading…
Cancel
Save