From 2ac328e1df0230b0f0c204817e2a40a4310cb149 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 3 Mar 2025 09:55:03 -0600 Subject: [PATCH] Bottom search bar on all Android levels --- .../todoroo/astrid/activity/MainActivity.kt | 8 +-- .../tasks/previews/TaskListDrawerPreview.kt | 1 - .../tasks/compose/drawer/TaskListDrawer.kt | 60 ++++++------------- 3 files changed, 18 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 2121a8137..f3051cfc2 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -199,14 +199,8 @@ class MainActivity : AppCompatActivity() { ) { val context = LocalContext.current val scope = rememberCoroutineScope() - val bottomSearchBar = atLeastR() TaskListDrawer( - arrangement = when { - state.menuQuery.isBlank() -> Arrangement.Top - bottomSearchBar -> Arrangement.Bottom - else -> Arrangement.Top - }, - bottomSearchBar = bottomSearchBar, + arrangement = if (state.menuQuery.isBlank()) Arrangement.Top else Arrangement.Bottom, filters = if (state.menuQuery.isNotEmpty()) state.searchItems else state.drawerItems, onClick = { when (it) { diff --git a/kmp/src/androidMain/kotlin/org/tasks/previews/TaskListDrawerPreview.kt b/kmp/src/androidMain/kotlin/org/tasks/previews/TaskListDrawerPreview.kt index 4af9f0f7f..e91ee073d 100644 --- a/kmp/src/androidMain/kotlin/org/tasks/previews/TaskListDrawerPreview.kt +++ b/kmp/src/androidMain/kotlin/org/tasks/previews/TaskListDrawerPreview.kt @@ -28,7 +28,6 @@ fun MenuPreview() { onQueryChange = {} ) }, - bottomSearchBar = true, filters = persistentListOf( DrawerItem.Filter( title = "My Tasks", diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt index b9bd5f393..a7e0b8ebb 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt @@ -39,8 +39,6 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -75,7 +73,6 @@ private val SEARCH_BAR_BOTTOM_PADDING = androidx.compose.material3.OutlinedTextF @Composable fun TaskListDrawer( arrangement: Arrangement.Vertical, - bottomSearchBar: Boolean, filters: ImmutableList, onClick: (DrawerItem) -> Unit, onAddClick: (DrawerItem.Header) -> Unit, @@ -83,52 +80,29 @@ fun TaskListDrawer( searchBar: @Composable RowScope.() -> Unit, ) { val bottomAppBarScrollBehavior = BottomAppBarDefaults.exitAlwaysScrollBehavior() - val topAppBarScrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior() Scaffold( modifier = Modifier .imePadding() - .nestedScroll( - if (bottomSearchBar) - bottomAppBarScrollBehavior.nestedScrollConnection - else - topAppBarScrollBehavior.nestedScrollConnection - ), + .nestedScroll(bottomAppBarScrollBehavior.nestedScrollConnection), bottomBar = { - if (bottomSearchBar) { - BottomAppBar( - modifier = Modifier - .layout { measurable, constraints -> - val placeable = measurable.measure(constraints) - bottomAppBarScrollBehavior.state.heightOffsetLimit = - -placeable.height.toFloat() - val height = - placeable.height + bottomAppBarScrollBehavior.state.heightOffset - layout(placeable.width, height.roundToInt().coerceAtLeast(0)) { - placeable.place(0, 0) - } - }, - containerColor = MaterialTheme.colorScheme.surface, - scrollBehavior = bottomAppBarScrollBehavior - ) { - searchBar() - } - } - }, - topBar = { - if (!bottomSearchBar) { - TopAppBar( - colors = TopAppBarDefaults.topAppBarColors( - containerColor = MaterialTheme.colorScheme.surface, - ), - scrollBehavior = topAppBarScrollBehavior, - title = { - Row { - searchBar() + BottomAppBar( + modifier = Modifier + .layout { measurable, constraints -> + val placeable = measurable.measure(constraints) + bottomAppBarScrollBehavior.state.heightOffsetLimit = + -placeable.height.toFloat() + val height = + placeable.height + bottomAppBarScrollBehavior.state.heightOffset + layout(placeable.width, height.roundToInt().coerceAtLeast(0)) { + placeable.place(0, 0) } - } - ) + }, + containerColor = MaterialTheme.colorScheme.surface, + scrollBehavior = bottomAppBarScrollBehavior + ) { + searchBar() } - } + }, ) { contentPadding -> val keyboardOpen = rememberImeState().value LazyColumn(