Add option to not scroll the search bar out of view
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user