From 1c2846c292e1554128bab4aac2e4fbdbac0d4349 Mon Sep 17 00:00:00 2001 From: Naveen Date: Fri, 27 May 2022 13:59:29 +0530 Subject: [PATCH] Add "Remove" context menu option in favorites --- .../pro/adapters/ManageFavoritesAdapter.kt | 48 ++++++++++++++++--- .../main/res/layout/activity_favorites.xml | 5 +- .../main/res/layout/item_manage_favorite.xml | 25 ++++++++-- 3 files changed, 68 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters/ManageFavoritesAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters/ManageFavoritesAdapter.kt index ddaabef3..a81bd6ef 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters/ManageFavoritesAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/pro/adapters/ManageFavoritesAdapter.kt @@ -1,10 +1,10 @@ package com.simplemobiletools.filemanager.pro.adapters -import android.view.Menu -import android.view.View -import android.view.ViewGroup +import android.view.* +import android.widget.PopupMenu import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.extensions.getPopupMenuTheme import com.simplemobiletools.commons.extensions.getProperTextColor import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.commons.views.MyRecyclerView @@ -65,14 +65,50 @@ class ManageFavoritesAdapter( } manage_favorite_holder?.isSelected = isSelected + + overflow_menu_icon.drawable.apply { + mutate() + setTint(activity.getProperTextColor()) + } + + overflow_menu_icon.setOnClickListener { + showPopupMenu(overflow_menu_anchor, favorite) + } } } + private fun showPopupMenu(view: View, favorite: String) { + finishActMode() + val theme = activity.getPopupMenuTheme() + val contextTheme = ContextThemeWrapper(activity, theme) + + PopupMenu(contextTheme, view, Gravity.END).apply { + inflate(getActionMenuId()) + setOnMenuItemClickListener { item -> + val eventTypeId = favorite.hashCode() + when (item.itemId) { + R.id.cab_remove -> { + executeItemMenuOperation(eventTypeId) { + removeSelection() + } + } + } + true + } + show() + } + } + + private fun executeItemMenuOperation(eventTypeId: Int, callback: () -> Unit) { + selectedKeys.clear() + selectedKeys.add(eventTypeId) + callback() + } + private fun removeSelection() { val removeFavorites = ArrayList(selectedKeys.size) val positions = ArrayList() - selectedKeys.forEach { - val key = it + selectedKeys.forEach { key -> val position = favorites.indexOfFirst { it.hashCode() == key } if (position != -1) { positions.add(position) @@ -88,7 +124,7 @@ class ManageFavoritesAdapter( positions.sortDescending() removeSelectedItems(positions) - favorites.removeAll(removeFavorites) + favorites.removeAll(removeFavorites.toSet()) if (favorites.isEmpty()) { listener?.refreshItems() } diff --git a/app/src/main/res/layout/activity_favorites.xml b/app/src/main/res/layout/activity_favorites.xml index 607c7529..7f43c1af 100644 --- a/app/src/main/res/layout/activity_favorites.xml +++ b/app/src/main/res/layout/activity_favorites.xml @@ -1,6 +1,7 @@ @@ -10,7 +11,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" - app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" /> + app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" + tools:itemCount="4" + tools:listitem="@layout/item_manage_favorite" /> + android:paddingStart="@dimen/activity_margin" + android:paddingEnd="0dp"> + android:layout_toStartOf="@+id/overflow_menu_icon" + tools:text="/Internal/DCIM" /> + + + +