Add option to not scroll the search bar out of view
This commit is contained in:
parent
b0f3ddf325
commit
1ad18f14ad
@ -39,6 +39,7 @@ fun AssistantScaffold(
|
|||||||
darkNavBarIcons: Boolean = false,
|
darkNavBarIcons: Boolean = false,
|
||||||
bottomSearchBar: Boolean = false,
|
bottomSearchBar: Boolean = false,
|
||||||
reverseSearchResults: Boolean = false,
|
reverseSearchResults: Boolean = false,
|
||||||
|
fixedSearchBar: Boolean = false,
|
||||||
) {
|
) {
|
||||||
val viewModel: LauncherScaffoldVM = viewModel()
|
val viewModel: LauncherScaffoldVM = viewModel()
|
||||||
|
|
||||||
@ -185,7 +186,7 @@ fun AssistantScaffold(
|
|||||||
.windowInsetsPadding(WindowInsets.safeDrawing)
|
.windowInsetsPadding(WindowInsets.safeDrawing)
|
||||||
.padding(8.dp)
|
.padding(8.dp)
|
||||||
.offset {
|
.offset {
|
||||||
if (searchBarFocused) IntOffset.Zero
|
if (searchBarFocused || fixedSearchBar) IntOffset.Zero
|
||||||
else IntOffset(
|
else IntOffset(
|
||||||
0,
|
0,
|
||||||
searchBarOffset.toInt() * if (bottomSearchBar) -1 else 1
|
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 baseLayout = dataStore.data.map { it.layout.baseLayout }.asLiveData()
|
||||||
val bottomSearchBar = dataStore.data.map { it.layout.bottomSearchBar }.asLiveData()
|
val bottomSearchBar = dataStore.data.map { it.layout.bottomSearchBar }.asLiveData()
|
||||||
val reverseSearchResults = dataStore.data.map { it.layout.reverseSearchResults }.asLiveData()
|
val reverseSearchResults = dataStore.data.map { it.layout.reverseSearchResults }.asLiveData()
|
||||||
|
val fixedSearchBar = dataStore.data.map { it.layout.fixedSearchBar }.asLiveData()
|
||||||
|
|
||||||
val isSearchOpen = MutableLiveData(false)
|
val isSearchOpen = MutableLiveData(false)
|
||||||
val isWidgetEditMode = MutableLiveData(false)
|
val isWidgetEditMode = MutableLiveData(false)
|
||||||
|
|||||||
@ -91,6 +91,7 @@ fun PagerScaffold(
|
|||||||
reverse: Boolean = false,
|
reverse: Boolean = false,
|
||||||
bottomSearchBar: Boolean = true,
|
bottomSearchBar: Boolean = true,
|
||||||
reverseSearchResults: Boolean = true,
|
reverseSearchResults: Boolean = true,
|
||||||
|
fixedSearchBar: Boolean = false,
|
||||||
) {
|
) {
|
||||||
val viewModel: LauncherScaffoldVM = viewModel()
|
val viewModel: LauncherScaffoldVM = viewModel()
|
||||||
val searchVM: SearchVM = viewModel()
|
val searchVM: SearchVM = viewModel()
|
||||||
@ -488,7 +489,7 @@ fun PagerScaffold(
|
|||||||
.offset {
|
.offset {
|
||||||
IntOffset(
|
IntOffset(
|
||||||
0,
|
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),
|
.offset(y = widgetEditModeOffset),
|
||||||
|
|||||||
@ -88,6 +88,7 @@ fun PullDownScaffold(
|
|||||||
darkNavBarIcons: Boolean = false,
|
darkNavBarIcons: Boolean = false,
|
||||||
bottomSearchBar: Boolean = false,
|
bottomSearchBar: Boolean = false,
|
||||||
reverseSearchResults: Boolean = false,
|
reverseSearchResults: Boolean = false,
|
||||||
|
fixedSearchBar: Boolean = false,
|
||||||
) {
|
) {
|
||||||
val viewModel: LauncherScaffoldVM = viewModel()
|
val viewModel: LauncherScaffoldVM = viewModel()
|
||||||
val searchVM: SearchVM = viewModel()
|
val searchVM: SearchVM = viewModel()
|
||||||
@ -520,7 +521,7 @@ fun PullDownScaffold(
|
|||||||
.offset {
|
.offset {
|
||||||
IntOffset(
|
IntOffset(
|
||||||
0,
|
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 {
|
.offset {
|
||||||
|
|||||||
@ -125,6 +125,7 @@ abstract class SharedLauncherActivity(
|
|||||||
val layout by viewModel.baseLayout.observeAsState(null)
|
val layout by viewModel.baseLayout.observeAsState(null)
|
||||||
val bottomSearchBar by viewModel.bottomSearchBar.observeAsState(false)
|
val bottomSearchBar by viewModel.bottomSearchBar.observeAsState(false)
|
||||||
val reverseSearchResults by viewModel.reverseSearchResults.observeAsState(false)
|
val reverseSearchResults by viewModel.reverseSearchResults.observeAsState(false)
|
||||||
|
val fixedSearchBar by viewModel.fixedSearchBar.observeAsState(false)
|
||||||
|
|
||||||
val systemUiController = rememberSystemUiController()
|
val systemUiController = rememberSystemUiController()
|
||||||
|
|
||||||
@ -182,6 +183,7 @@ abstract class SharedLauncherActivity(
|
|||||||
darkNavBarIcons = lightNav,
|
darkNavBarIcons = lightNav,
|
||||||
bottomSearchBar = bottomSearchBar,
|
bottomSearchBar = bottomSearchBar,
|
||||||
reverseSearchResults = reverseSearchResults,
|
reverseSearchResults = reverseSearchResults,
|
||||||
|
fixedSearchBar = fixedSearchBar,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -202,6 +204,7 @@ abstract class SharedLauncherActivity(
|
|||||||
darkNavBarIcons = lightNav,
|
darkNavBarIcons = lightNav,
|
||||||
bottomSearchBar = bottomSearchBar,
|
bottomSearchBar = bottomSearchBar,
|
||||||
reverseSearchResults = reverseSearchResults,
|
reverseSearchResults = reverseSearchResults,
|
||||||
|
fixedSearchBar = fixedSearchBar,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -222,6 +225,7 @@ abstract class SharedLauncherActivity(
|
|||||||
reverse = layout == Settings.LayoutSettings.Layout.PagerReversed,
|
reverse = layout == Settings.LayoutSettings.Layout.PagerReversed,
|
||||||
bottomSearchBar = bottomSearchBar,
|
bottomSearchBar = bottomSearchBar,
|
||||||
reverseSearchResults = reverseSearchResults,
|
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.ListPreference
|
||||||
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
|
import de.mm20.launcher2.ui.component.preferences.PreferenceCategory
|
||||||
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
|
import de.mm20.launcher2.ui.component.preferences.PreferenceScreen
|
||||||
|
import de.mm20.launcher2.ui.component.preferences.SwitchPreference
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LayoutSettingsScreen() {
|
fun LayoutSettingsScreen() {
|
||||||
@ -43,6 +44,15 @@ fun LayoutSettingsScreen() {
|
|||||||
if (it != null) viewModel.setBottomSearchBar(it)
|
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()
|
val reverseSearchResults by viewModel.reverseSearchResults.observeAsState()
|
||||||
ListPreference(title = stringResource(R.string.preference_layout_search_results),
|
ListPreference(title = stringResource(R.string.preference_layout_search_results),
|
||||||
items = listOf(
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -732,6 +732,8 @@
|
|||||||
<string name="preference_layout_search_results">Arrangement of search results</string>
|
<string name="preference_layout_search_results">Arrangement of search results</string>
|
||||||
<string name="search_results_order_top_down">Top-down</string>
|
<string name="search_results_order_top_down">Top-down</string>
|
||||||
<string name="search_results_order_bottom_up">Bottom-up</string>
|
<string name="search_results_order_bottom_up">Bottom-up</string>
|
||||||
|
<string name="preference_layout_fixed_search_bar">Fixed search bar</string>
|
||||||
|
<string name="preference_layout_fixed_search_bar_summary">Don\'t scroll the search bar out of view</string>
|
||||||
<string name="preference_screen_gestures">Gestures</string>
|
<string name="preference_screen_gestures">Gestures</string>
|
||||||
<string name="preference_screen_gestures_summary">Gestures and gesture actions</string>
|
<string name="preference_screen_gestures_summary">Gestures and gesture actions</string>
|
||||||
<string name="preference_gesture_swipe_down">Swipe down</string>
|
<string name="preference_gesture_swipe_down">Swipe down</string>
|
||||||
|
|||||||
@ -297,6 +297,7 @@ message Settings {
|
|||||||
Layout base_layout = 1;
|
Layout base_layout = 1;
|
||||||
bool bottom_search_bar = 2;
|
bool bottom_search_bar = 2;
|
||||||
bool reverse_search_results = 3;
|
bool reverse_search_results = 3;
|
||||||
|
bool fixed_search_bar = 4;
|
||||||
}
|
}
|
||||||
LayoutSettings layout = 27;
|
LayoutSettings layout = 27;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user