From 50f6bb5871c10f7ea3f81d629bcbab42a952d1c0 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 9 May 2022 22:18:21 +0200 Subject: [PATCH] add floating contextual menu at some setting screens --- .../pro/adapters/ManageFoldersAdapter.kt | 43 +++++++++++++++++-- .../main/res/layout/item_manage_folder.xml | 27 ++++++++++-- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt index 9e3829068..1c425f624 100644 --- a/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/gallery/pro/adapters/ManageFoldersAdapter.kt @@ -1,10 +1,10 @@ package com.simplemobiletools.gallery.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 @@ -66,9 +66,46 @@ class ManageFoldersAdapter( text = folder setTextColor(context.getProperTextColor()) } + + overflow_menu_icon.drawable.apply { + mutate() + setTint(activity.getProperTextColor()) + } + + overflow_menu_icon.setOnClickListener { + showPopupMenu(overflow_menu_anchor, folder) + } } } + private fun showPopupMenu(view: View, folder: String) { + finishActMode() + val theme = activity.getPopupMenuTheme() + val contextTheme = ContextThemeWrapper(activity, theme) + + PopupMenu(contextTheme, view, Gravity.END).apply { + inflate(getActionMenuId()) + setOnMenuItemClickListener { item -> + val eventTypeId = folder.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 removeFolders = ArrayList(selectedKeys.size) val positions = getSelectedItemPositions() diff --git a/app/src/main/res/layout/item_manage_folder.xml b/app/src/main/res/layout/item_manage_folder.xml index fd3c8ca02..ef96250ef 100644 --- a/app/src/main/res/layout/item_manage_folder.xml +++ b/app/src/main/res/layout/item_manage_folder.xml @@ -1,6 +1,6 @@ - + android:paddingStart="@dimen/activity_margin"> + android:layout_marginTop="@dimen/medium_margin" + android:layout_toStartOf="@+id/overflow_menu_icon" + tools:text="/Internal/DCIM" /> + + + +