From ef93ec0010f88720d8f93f1cffd60dba61c17765 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Wed, 19 Oct 2022 11:41:49 +0200 Subject: [PATCH] Hide grid labels in favorites widget when grid labels are disabled --- .../de/mm20/launcher2/ui/base/ProvideSettings.kt | 16 +++++----------- .../ui/launcher/modals/EditFavoritesSheet.kt | 4 ++-- .../launcher2/ui/launcher/search/SearchColumn.kt | 12 +++--------- .../launcher2/ui/launcher/search/SearchVM.kt | 2 -- .../launcher2/ui/launcher/search/apps/AppItem.kt | 4 ++-- .../customattrs/CustomizeSearchableSheet.kt | 4 ++-- .../ui/launcher/search/common/grid/GridItem.kt | 8 ++++---- .../search/common/grid/SearchResultGrid.kt | 6 +++--- .../ui/launcher/search/contacts/ContactItem.kt | 4 ++-- .../ui/launcher/search/files/FileItem.kt | 4 ++-- .../ui/launcher/search/shortcut/ShortcutItem.kt | 4 ++-- .../launcher2/ui/locals/CompositionLocals.kt | 5 ++--- 12 files changed, 29 insertions(+), 44 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt b/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt index 622aad82..af7b57d5 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt @@ -7,8 +7,7 @@ import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.ui.component.ProvideIconShape import de.mm20.launcher2.ui.locals.LocalCardStyle import de.mm20.launcher2.ui.locals.LocalFavoritesEnabled -import de.mm20.launcher2.ui.locals.LocalGridColumns -import de.mm20.launcher2.ui.locals.LocalGridIconSize +import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.widgets.WidgetRepository import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged @@ -42,19 +41,14 @@ fun ProvideSettings( ) { a, b, c -> a || b || c }.distinctUntilChanged() }.collectAsState(true) - val gridColumns by remember { - dataStore.data.map { it.grid.columnCount }.distinctUntilChanged() - }.collectAsState(5) - - val gridIconSize by remember { - dataStore.data.map { it.grid.iconSize.dp }.distinctUntilChanged() - }.collectAsState(48.dp) + val gridSettings by remember { + dataStore.data.map { it.grid }.distinctUntilChanged() + }.collectAsState(Settings.GridSettings.newBuilder().setColumnCount(5).setShowLabels(true).setIconSize(48).build()) CompositionLocalProvider( LocalCardStyle provides cardStyle, LocalFavoritesEnabled provides favoritesEnabled, - LocalGridColumns provides gridColumns, - LocalGridIconSize provides gridIconSize, + LocalGridSettings provides gridSettings, ) { ProvideIconShape(iconShape) { content() diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheet.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheet.kt index 362d54bb..b242b935 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheet.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheet.kt @@ -100,7 +100,7 @@ import de.mm20.launcher2.ui.launcher.helper.LazyDragAndDropRow import de.mm20.launcher2.ui.launcher.helper.LazyVerticalDragAndDropGrid import de.mm20.launcher2.ui.launcher.helper.rememberLazyDragAndDropGridState import de.mm20.launcher2.ui.launcher.helper.rememberLazyDragAndDropListState -import de.mm20.launcher2.ui.locals.LocalGridColumns +import de.mm20.launcher2.ui.locals.LocalGridSettings import kotlinx.coroutines.currentCoroutineContext import kotlin.math.roundToInt @@ -169,7 +169,7 @@ fun EditFavoritesSheet( @Composable fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM) { val items by viewModel.gridItems.observeAsState(emptyList()) - val columns = LocalGridColumns.current + val columns = LocalGridSettings.current.columnCount val availableTags by viewModel.availableTags.observeAsState(emptyList()) val pinnedTags by viewModel.pinnedTags.observeAsState(emptyList()) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt index d0abc0fa..8db873dc 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchColumn.kt @@ -57,7 +57,7 @@ import de.mm20.launcher2.ui.launcher.search.hidden.HiddenResults import de.mm20.launcher2.ui.launcher.search.unitconverter.UnitConverterItem import de.mm20.launcher2.ui.launcher.search.website.WebsiteItem import de.mm20.launcher2.ui.launcher.search.wikipedia.WikipediaItem -import de.mm20.launcher2.ui.locals.LocalGridColumns +import de.mm20.launcher2.ui.locals.LocalGridSettings import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import kotlin.math.ceil @@ -70,7 +70,7 @@ fun SearchColumn( reverse: Boolean = false, ) { - val columns = LocalGridColumns.current + val columns = LocalGridSettings.current.columnCount val context = LocalContext.current val viewModel: SearchVM = viewModel() @@ -78,8 +78,6 @@ fun SearchColumn( val favoritesVM: SearchFavoritesVM = viewModel() val favorites by favoritesVM.favorites.collectAsState(emptyList()) - val showLabels by viewModel.showLabels.observeAsState(true) - var showWorkProfileApps by remember { mutableStateOf(false) } val hideFavs by viewModel.hideFavorites.observeAsState(true) @@ -119,7 +117,6 @@ fun SearchColumn( GridResults( items = favorites.toImmutableList(), columns = columns, - showLabels = showLabels, key = "favorites", reverse = reverse, before = if (favorites.isEmpty()) { @@ -205,7 +202,6 @@ fun SearchColumn( GridResults( items = if (showWorkProfileApps && workApps.isNotEmpty()) workApps.toImmutableList() else apps.toImmutableList(), columns = columns, - showLabels = showLabels, reverse = reverse, key = "apps", before = if (workApps.isNotEmpty()) { @@ -380,7 +376,6 @@ fun LazyListScope.GridResults( items: ImmutableList, columns: Int, reverse: Boolean, - showLabels: Boolean, key: String, before: (@Composable () -> Unit)? = null, after: (@Composable () -> Unit)? = null, @@ -421,7 +416,6 @@ fun LazyListScope.GridResults( (it * columns + columns).coerceAtMost(items.size) ), columns = columns, - showLabels = showLabels, ) } } @@ -444,7 +438,7 @@ fun GridRow( modifier: Modifier = Modifier, items: ImmutableList, columns: Int, - showLabels: Boolean, + showLabels: Boolean = LocalGridSettings.current.showLabels, ) { Row( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt index ed7ad134..1621f7f6 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/SearchVM.kt @@ -31,8 +31,6 @@ class SearchVM : ViewModel(), KoinComponent { val searchQuery = MutableLiveData("") val isSearchEmpty = MutableLiveData(true) - val showLabels = dataStore.data.map { it.grid.showLabels }.asLiveData() - val appResults = MutableLiveData>(emptyList()) val workAppResults = MutableLiveData>(emptyList()) val appShortcutResults = MutableLiveData>(emptyList()) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt index fdfa9587..561853dd 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/apps/AppItem.kt @@ -30,7 +30,7 @@ import de.mm20.launcher2.ui.ktx.toDp import de.mm20.launcher2.ui.ktx.toPixels import de.mm20.launcher2.ui.launcher.search.common.customattrs.CustomizeSearchableSheet import de.mm20.launcher2.ui.locals.LocalFavoritesEnabled -import de.mm20.launcher2.ui.locals.LocalGridIconSize +import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.ui.modifier.scale import kotlinx.coroutines.launch @@ -361,7 +361,7 @@ fun AppItemGridPopup( modifier = Modifier .fillMaxWidth() .scale( - 1 - (1 - LocalGridIconSize.current / 84.dp) * (1 - animationProgress), + 1 - (1 - LocalGridSettings.current.iconSize / 84f) * (1 - animationProgress), transformOrigin = TransformOrigin(1f, 0f) ) .offset( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt index c1e8b50b..f89585f5 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/customattrs/CustomizeSearchableSheet.kt @@ -29,7 +29,7 @@ import de.mm20.launcher2.ui.component.BottomSheetDialog import de.mm20.launcher2.ui.component.ShapedLauncherIcon import de.mm20.launcher2.ui.component.OutlinedTagsInputField import de.mm20.launcher2.ui.ktx.toPixels -import de.mm20.launcher2.ui.locals.LocalGridColumns +import de.mm20.launcher2.ui.locals.LocalGridSettings import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch @@ -158,7 +158,7 @@ fun CustomizeSearchableSheet( val isSearching by viewModel.isSearchingIcons.observeAsState(initial = false) val iconResults by viewModel.iconSearchResults.observeAsState(emptyList()) - val columns = LocalGridColumns.current + val columns = LocalGridSettings.current.columnCount LazyVerticalGrid( modifier = Modifier.fillMaxSize(), diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt index 9036a8ba..201811ce 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/GridItem.kt @@ -38,7 +38,7 @@ import de.mm20.launcher2.ui.launcher.search.website.WebsiteItemGridPopup import de.mm20.launcher2.ui.launcher.search.wikipedia.WikipediaItemGridPopup import de.mm20.launcher2.ui.launcher.transitions.HandleHomeTransition import de.mm20.launcher2.ui.launcher.transitions.HomeTransitionParams -import de.mm20.launcher2.ui.locals.LocalGridIconSize +import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalWindowPosition import de.mm20.launcher2.ui.locals.LocalWindowSize import kotlinx.coroutines.delay @@ -54,7 +54,7 @@ fun GridItem(modifier: Modifier = Modifier, item: SavableSearchable, showLabels: var bounds by remember { mutableStateOf(Rect.Zero) } Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) { val badge by remember(item.key) { viewModel.badge }.collectAsState(null) - val iconSize = LocalGridIconSize.current.toPixels() + val iconSize = LocalGridSettings.current.iconSize.dp.toPixels() val icon by remember(item.key) { viewModel.getIcon(iconSize.toInt()) }.collectAsState(null) val launchOnPress = !item.preferDetailsOverLaunch @@ -72,7 +72,7 @@ fun GridItem(modifier: Modifier = Modifier, item: SavableSearchable, showLabels: return@HandleHomeTransition HomeTransitionParams( bounds ) { _, _ -> - ShapedLauncherIcon(size = LocalGridIconSize.current, icon = { icon }) + ShapedLauncherIcon(size = LocalGridSettings.current.iconSize.dp, icon = { icon }) } } return@HandleHomeTransition null @@ -85,7 +85,7 @@ fun GridItem(modifier: Modifier = Modifier, item: SavableSearchable, showLabels: .onGloballyPositioned { bounds = it.boundsInWindow() }, - size = LocalGridIconSize.current, + size = LocalGridSettings.current.iconSize.dp, badge = { badge }, icon = { icon }, onClick = { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/SearchResultGrid.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/SearchResultGrid.kt index dc237c81..fa204cee 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/SearchResultGrid.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/common/grid/SearchResultGrid.kt @@ -7,15 +7,15 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import de.mm20.launcher2.search.SavableSearchable import de.mm20.launcher2.ui.layout.BottomReversed -import de.mm20.launcher2.ui.locals.LocalGridColumns +import de.mm20.launcher2.ui.locals.LocalGridSettings import kotlin.math.ceil @Composable fun SearchResultGrid( items: List, modifier: Modifier = Modifier, - showLabels: Boolean = true, - columns: Int = LocalGridColumns.current, + showLabels: Boolean = LocalGridSettings.current.showLabels, + columns: Int = LocalGridSettings.current.columnCount, reverse: Boolean = false ) { Column( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt index b84e1024..75964483 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/contacts/ContactItem.kt @@ -33,7 +33,7 @@ import de.mm20.launcher2.ui.ktx.toDp import de.mm20.launcher2.ui.ktx.toPixels import de.mm20.launcher2.ui.launcher.search.common.customattrs.CustomizeSearchableSheet import de.mm20.launcher2.ui.locals.LocalFavoritesEnabled -import de.mm20.launcher2.ui.locals.LocalGridIconSize +import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.ui.modifier.scale import kotlinx.coroutines.launch @@ -349,7 +349,7 @@ fun ContactItemGridPopup( modifier = Modifier .fillMaxWidth() .scale( - 1 - (1 - LocalGridIconSize.current / 48.dp) * (1 - animationProgress), + 1 - (1 - LocalGridSettings.current.iconSize / 48f) * (1 - animationProgress), transformOrigin = TransformOrigin(0f, 0f) ) .offset( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt index a6beecc4..c0f76bd7 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/files/FileItem.kt @@ -32,7 +32,7 @@ import de.mm20.launcher2.ui.ktx.toDp import de.mm20.launcher2.ui.ktx.toPixels import de.mm20.launcher2.ui.launcher.search.common.customattrs.CustomizeSearchableSheet import de.mm20.launcher2.ui.locals.LocalFavoritesEnabled -import de.mm20.launcher2.ui.locals.LocalGridIconSize +import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.ui.modifier.scale import kotlinx.coroutines.launch @@ -321,7 +321,7 @@ fun FileItemGridPopup( modifier = Modifier .fillMaxWidth() .scale( - 1 - (1 - LocalGridIconSize.current / 48.dp) * (1 - animationProgress), + 1 - (1 - LocalGridSettings.current.iconSize / 48f) * (1 - animationProgress), transformOrigin = TransformOrigin(1f, 0f) ) .offset( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt index 9d95fe96..d10df221 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/search/shortcut/ShortcutItem.kt @@ -28,7 +28,7 @@ import de.mm20.launcher2.ui.ktx.toDp import de.mm20.launcher2.ui.ktx.toPixels import de.mm20.launcher2.ui.launcher.search.common.customattrs.CustomizeSearchableSheet import de.mm20.launcher2.ui.locals.LocalFavoritesEnabled -import de.mm20.launcher2.ui.locals.LocalGridIconSize +import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.ui.modifier.scale import kotlinx.coroutines.launch @@ -267,7 +267,7 @@ fun ShortcutItemGridPopup( modifier = Modifier .fillMaxWidth() .scale( - 1 - (1 - LocalGridIconSize.current / 84.dp) * (1 - animationProgress), + 1 - (1 - LocalGridSettings.current.iconSize / 84f) * (1 - animationProgress), transformOrigin = TransformOrigin(1f, 0f) ) .offset( diff --git a/ui/src/main/java/de/mm20/launcher2/ui/locals/CompositionLocals.kt b/ui/src/main/java/de/mm20/launcher2/ui/locals/CompositionLocals.kt index df49dacf..cae89e97 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/locals/CompositionLocals.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/locals/CompositionLocals.kt @@ -7,6 +7,7 @@ import androidx.compose.ui.geometry.Size import androidx.compose.ui.unit.dp import androidx.navigation.NavController import de.mm20.launcher2.preferences.Settings +import de.mm20.launcher2.preferences.Settings.GridSettings val LocalWindowSize = compositionLocalOf { Size(0f, 0f) } @@ -18,9 +19,7 @@ val LocalCardStyle = compositionLocalOf { Settings.CardSe val LocalFavoritesEnabled = compositionLocalOf { true } -val LocalGridColumns = compositionLocalOf { 5 } - -val LocalGridIconSize = compositionLocalOf { 48.dp } +val LocalGridSettings = compositionLocalOf { GridSettings.newBuilder().setColumnCount(5).setShowLabels(true).setIconSize(48).build() } val LocalSnackbarHostState = compositionLocalOf { SnackbarHostState() }