From d43610d92dd9c7e152683ec28c1580c8e5a9cf68 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sun, 26 Jun 2022 02:05:42 +0200 Subject: [PATCH] Add: Collapsing TopBar to the main pages --- .../looker/droidify/ui/fragments/ExploreFragment.kt | 13 ++++++++++++- .../droidify/ui/fragments/InstalledFragment.kt | 13 ++++++++++++- .../looker/droidify/ui/fragments/LatestFragment.kt | 13 ++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt index 98442ef2..0da8996d 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -17,10 +17,13 @@ import androidx.compose.material.icons.rounded.Sync import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTopAppBarScrollState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.stringResource import com.looker.droidify.R @@ -71,6 +74,10 @@ class ExploreFragment : MainNavFragmentX() { val searchQuery by viewModel.searchQuery.observeAsState("") val favorites by mainActivityX.db.extrasDao.favoritesLive.observeAsState(emptyArray()) + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior( + rememberTopAppBarScrollState() + ) { true } + AppTheme( darkTheme = when (Preferences[Preferences.Key.Theme]) { is Preferences.Theme.System -> isSystemInDarkTheme() @@ -80,8 +87,12 @@ class ExploreFragment : MainNavFragmentX() { ) { Scaffold( // TODO add the topBar to the activity instead of the fragments + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { - TopBar(title = stringResource(id = R.string.application_name)) { + TopBar( + title = stringResource(id = R.string.application_name), + scrollBehavior = scrollBehavior + ) { ExpandableSearchAction( query = searchQuery.orEmpty(), onClose = { diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt index d1caa78f..e9f5db36 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -28,6 +28,8 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.SuggestionChip import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTopAppBarScrollState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @@ -36,6 +38,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -89,6 +92,10 @@ class InstalledFragment : MainNavFragmentX() { val searchQuery by viewModel.searchQuery.observeAsState("") val favorites by mainActivityX.db.extrasDao.favoritesLive.observeAsState(emptyArray()) + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior( + rememberTopAppBarScrollState() + ) { true } + AppTheme( darkTheme = when (Preferences[Preferences.Key.Theme]) { is Preferences.Theme.System -> isSystemInDarkTheme() @@ -98,8 +105,12 @@ class InstalledFragment : MainNavFragmentX() { ) { Scaffold( // TODO add the topBar to the activity instead of the fragments + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { - TopBar(title = stringResource(id = R.string.application_name)) { + TopBar( + title = stringResource(id = R.string.application_name), + scrollBehavior = scrollBehavior + ) { ExpandableSearchAction( query = searchQuery.orEmpty(), onClose = { diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt index 121c3312..84da6c51 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -23,11 +23,14 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.SuggestionChip import androidx.compose.material3.SuggestionChipDefaults import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTopAppBarScrollState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -79,6 +82,10 @@ class LatestFragment : MainNavFragmentX() { val searchQuery by viewModel.searchQuery.observeAsState("") val favorites by mainActivityX.db.extrasDao.favoritesLive.observeAsState(emptyArray()) + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior( + rememberTopAppBarScrollState() + ) { true } + AppTheme( darkTheme = when (Preferences[Preferences.Key.Theme]) { is Preferences.Theme.System -> isSystemInDarkTheme() @@ -88,8 +95,12 @@ class LatestFragment : MainNavFragmentX() { ) { Scaffold( // TODO add the topBar to the activity instead of the fragments + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { - TopBar(title = stringResource(id = R.string.application_name)) { + TopBar( + title = stringResource(id = R.string.application_name), + scrollBehavior = scrollBehavior + ) { ExpandableSearchAction( query = searchQuery.orEmpty(), onClose = {