From cca2ceaab95cd95760fa3285cfa511789ed52d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Mon, 21 Aug 2023 08:44:46 +0200 Subject: [PATCH] Add max capacity for folders --- .../launcher/models/HomeScreenGridItem.kt | 4 ++++ .../launcher/views/HomeScreenGrid.kt | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/models/HomeScreenGridItem.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/models/HomeScreenGridItem.kt index 7d2791e..d7ee046 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/models/HomeScreenGridItem.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/models/HomeScreenGridItem.kt @@ -33,6 +33,10 @@ data class HomeScreenGridItem( @Ignore var widthCells: Int = 1, @Ignore var heightCells: Int = 1 ) { + companion object { + const val FOLDER_MAX_CAPACITY = 16 + } + constructor() : this(null, -1, -1, -1, -1, 0, "", "", "", ITEM_TYPE_ICON, "", -1, "", null, false, null, null, null, null, 1, 1) fun getWidthInCells() = if (right == -1 || left == -1) { diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt index 690a39c..2c91c63 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt @@ -313,7 +313,12 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel if (it == null) { draggingEnteredNewFolderAt = System.currentTimeMillis() } else if (System.currentTimeMillis() - it > PAGE_CHANGE_HOLD_THRESHOLD) { - openFolder(coveredFolder) + if (coveredFolder.getFolderItems().count() >= HomeScreenGridItem.FOLDER_MAX_CAPACITY && draggedItem?.parentId != coveredFolder.id) { + performHapticFeedback() + draggingEnteredNewFolderAt = null + } else { + openFolder(coveredFolder) + } } } } else { @@ -597,6 +602,18 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel newParentId: Long? = null, toFolderEnd: Boolean = true ) { + if (newParentId != null && newParentId != draggedHomeGridItem?.parentId) { + gridItems.firstOrNull { it.id == newParentId }?.also { + if (it.getFolderItems().count() >= HomeScreenGridItem.FOLDER_MAX_CAPACITY) { + performHapticFeedback() + draggedItem = null + draggedItemCurrentCoords = Pair(-1, -1) + redrawGrid() + return + } + } + } + val finalXIndex = if (newParentId != null) { if (toFolderEnd) { gridItems.firstOrNull { it.id == newParentId }?.getFolderItems()?.maxOf { it.left + 1 } ?: 0