Add option to not scroll the search bar out of view

This commit is contained in:
MM20
2023-01-21 14:00:30 +01:00
parent b0f3ddf325
commit 1ad18f14ad
9 changed files with 35 additions and 3 deletions
@@ -39,6 +39,7 @@ fun AssistantScaffold(
darkNavBarIcons: Boolean = false,
bottomSearchBar: Boolean = false,
reverseSearchResults: Boolean = false,
fixedSearchBar: Boolean = false,
) {
val viewModel: LauncherScaffoldVM = viewModel()
@@ -185,7 +186,7 @@ fun AssistantScaffold(
.windowInsetsPadding(WindowInsets.safeDrawing)
.padding(8.dp)
.offset {
if (searchBarFocused) IntOffset.Zero
if (searchBarFocused || fixedSearchBar) IntOffset.Zero
else IntOffset(
0,
searchBarOffset.toInt() * if (bottomSearchBar) -1 else 1
@@ -66,6 +66,7 @@ class LauncherScaffoldVM : ViewModel(), KoinComponent {
val baseLayout = dataStore.data.map { it.layout.baseLayout }.asLiveData()
val bottomSearchBar = dataStore.data.map { it.layout.bottomSearchBar }.asLiveData()
val reverseSearchResults = dataStore.data.map { it.layout.reverseSearchResults }.asLiveData()
val fixedSearchBar = dataStore.data.map { it.layout.fixedSearchBar }.asLiveData()
val isSearchOpen = MutableLiveData(false)
val isWidgetEditMode = MutableLiveData(false)
@@ -91,6 +91,7 @@ fun PagerScaffold(
reverse: Boolean = false,
bottomSearchBar: Boolean = true,
reverseSearchResults: Boolean = true,
fixedSearchBar: Boolean = false,
) {
val viewModel: LauncherScaffoldVM = viewModel()
val searchVM: SearchVM = viewModel()
@@ -488,7 +489,7 @@ fun PagerScaffold(
.offset {
IntOffset(
0,
if (focusSearchBar) 0 else searchBarOffset.value.toInt() * if (bottomSearchBar) 1 else -1
if (focusSearchBar || fixedSearchBar) 0 else searchBarOffset.value.toInt() * if (bottomSearchBar) 1 else -1
)
}
.offset(y = widgetEditModeOffset),
@@ -88,6 +88,7 @@ fun PullDownScaffold(
darkNavBarIcons: Boolean = false,
bottomSearchBar: Boolean = false,
reverseSearchResults: Boolean = false,
fixedSearchBar: Boolean = false,
) {
val viewModel: LauncherScaffoldVM = viewModel()
val searchVM: SearchVM = viewModel()
@@ -520,7 +521,7 @@ fun PullDownScaffold(
.offset {
IntOffset(
0,
if (searchBarFocused) 0 else searchBarOffset.value.toInt() * (if (bottomSearchBar) 1 else -1)
if (searchBarFocused || fixedSearchBar) 0 else searchBarOffset.value.toInt() * (if (bottomSearchBar) 1 else -1)
)
}
.offset {
@@ -125,6 +125,7 @@ abstract class SharedLauncherActivity(
val layout by viewModel.baseLayout.observeAsState(null)
val bottomSearchBar by viewModel.bottomSearchBar.observeAsState(false)
val reverseSearchResults by viewModel.reverseSearchResults.observeAsState(false)
val fixedSearchBar by viewModel.fixedSearchBar.observeAsState(false)
val systemUiController = rememberSystemUiController()
@@ -182,6 +183,7 @@ abstract class SharedLauncherActivity(
darkNavBarIcons = lightNav,
bottomSearchBar = bottomSearchBar,
reverseSearchResults = reverseSearchResults,
fixedSearchBar = fixedSearchBar,
)
}
} else {
@@ -202,6 +204,7 @@ abstract class SharedLauncherActivity(
darkNavBarIcons = lightNav,
bottomSearchBar = bottomSearchBar,
reverseSearchResults = reverseSearchResults,
fixedSearchBar = fixedSearchBar,
)
}
}
@@ -222,6 +225,7 @@ abstract class SharedLauncherActivity(
reverse = layout == Settings.LayoutSettings.Layout.PagerReversed,
bottomSearchBar = bottomSearchBar,
reverseSearchResults = reverseSearchResults,
fixedSearchBar = fixedSearchBar,
)
}
}
@@ -10,6 +10,7 @@ import de.mm20.launcher2.ui.R
import de.mm20.launcher2.ui.component.preferences.ListPreference
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
import de.mm20.launcher2.ui.component.preferences.SwitchPreference
@Composable
fun LayoutSettingsScreen() {
@@ -43,6 +44,15 @@ fun LayoutSettingsScreen() {
if (it != null) viewModel.setBottomSearchBar(it)
},
)
val fixedSearchBar by viewModel.fixedSearchBar.observeAsState()
SwitchPreference(
title = stringResource(R.string.preference_layout_fixed_search_bar),
summary = stringResource(R.string.preference_layout_fixed_search_bar_summary),
value = fixedSearchBar == true,
onValueChanged = {
viewModel.setFixedSearchBar(it)
},
)
val reverseSearchResults by viewModel.reverseSearchResults.observeAsState()
ListPreference(title = stringResource(R.string.preference_layout_search_results),
items = listOf(
@@ -46,4 +46,15 @@ class LayoutSettingsScreenVM: ViewModel(), KoinComponent {
}
}
}
val fixedSearchBar = dataStore.data.map { it.layout.fixedSearchBar }.asLiveData()
fun setFixedSearchBar(fixedSearchBar: Boolean) {
viewModelScope.launch {
dataStore.updateData {
it.toBuilder()
.setLayout(it.layout.toBuilder().setFixedSearchBar(fixedSearchBar))
.build()
}
}
}
}