From 69042e4d2f6b3c62de6f488e906225f33cde61a8 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 25 Sep 2022 18:48:43 +0200 Subject: [PATCH] Unpin items when dragging them to tags --- .../ui/launcher/modals/EditFavoritesSheet.kt | 3 ++- .../launcher/modals/EditFavoritesSheetVM.kt | 22 +++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) 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 347f1e1a..eb230210 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 @@ -183,6 +183,7 @@ fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM) { val gridState = rememberLazyGridState() val tagsListState = rememberLazyListState() val tagsTitleSize = 48.dp.toPixels() + val tagsSpacing = 12.dp.toPixels() val state = rememberLazyDragAndDropGridState( gridState = gridState, onDragStart = { @@ -211,7 +212,7 @@ fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM) { ) { val scroll = tagsListState.layoutInfo.viewportStartOffset val tag = tagsListState.layoutInfo.visibleItemsInfo.find { - position.x + scroll > it.offset && position.x + scroll < it.offset + it.size + draggedCenter.x + scroll > it.offset && draggedCenter.x + scroll < it.offset + it.size - tagsSpacing } hoveredTag = tag?.index?.let { pinnedTags[it].tag } } else { diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheetVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheetVM.kt index 61d1918c..f3d47f92 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheetVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/modals/EditFavoritesSheetVM.kt @@ -55,8 +55,8 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent { val pinnedTags = MutableLiveData>(emptyList()) val availableTags = MutableLiveData>(emptyList()) - suspend fun reload() { - loading.value = true + suspend fun reload(showLoadingIndicator: Boolean = true) { + loading.value = showLoadingIndicator manuallySorted = mutableListOf() manuallySorted = repository.getFavorites( manuallySorted = true, @@ -236,8 +236,10 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent { gridItems.find { it is FavoritesSheetGridItem.Favorite && it.item.key == key } as FavoritesSheetGridItem.Favorite? if (item != null) { repository.removeFromFavorites(item.item) - gridItems.remove(item) - this.gridItems.value = gridItems + automaticallySorted.removeAll { it.key == item.item.key } + || manuallySorted.removeAll { it.key == item.item.key } + || frequentlyUsed.removeAll { it.key == item.item.key } + buildItemList() } } @@ -302,7 +304,19 @@ class EditFavoritesSheetVM : ViewModel(), KoinComponent { val item = gridItems.find { it is FavoritesSheetGridItem.Favorite && it.item.key == key } as FavoritesSheetGridItem.Favorite? if (item != null) { + automaticallySorted.removeAll { it.key == item.item.key } + || manuallySorted.removeAll { it.key == item.item.key } + || frequentlyUsed.removeAll { it.key == item.item.key } + buildItemList() customAttributesRepository.addTag(item.item, tag) + repository.unpinItem(item.item) + viewModelScope.launch { + frequentlyUsed = repository.getFavorites( + frequentlyUsed = true, + excludeTypes = listOf("tag"), + ).first().toMutableList() + buildItemList() + } } }