Merge pull request #586 from Naveen3Singh/add_floating_menu
Add "Remove" context menu option in favorites
This commit is contained in:
commit
5e8a1dc308
|
@ -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<String>(selectedKeys.size)
|
||||
val positions = ArrayList<Int>()
|
||||
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()
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/manage_favorites_wrapper"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
@ -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" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/manage_favorites_placeholder"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/manage_favorite_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -7,15 +8,33 @@
|
|||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="@drawable/selector"
|
||||
android:padding="@dimen/activity_margin">
|
||||
android:paddingStart="@dimen/activity_margin"
|
||||
android:paddingEnd="0dp">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/manage_favorite_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="@dimen/medium_margin"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:layout_marginEnd="@dimen/medium_margin" />
|
||||
android:layout_toStartOf="@+id/overflow_menu_icon"
|
||||
tools:text="/Internal/DCIM" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/overflow_menu_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:src="@drawable/ic_three_dots_vector" />
|
||||
|
||||
<View
|
||||
android:id="@+id/overflow_menu_anchor"
|
||||
style="@style/OverflowMenuAnchorStyle"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
Loading…
Reference in New Issue