11package com.simplemobiletools.calendar.pro.adapters
22
3- import android.view.Menu
4- import android.view.View
5- import android.view.ViewGroup
3+ import android.view.*
4+ import android.widget.PopupMenu
65import com.simplemobiletools.calendar.pro.R
76import com.simplemobiletools.calendar.pro.activities.SimpleActivity
8- import com.simplemobiletools.calendar.pro.extensions.config
97import com.simplemobiletools.calendar.pro.extensions.eventsHelper
108import com.simplemobiletools.calendar.pro.helpers.REGULAR_EVENT_TYPE_ID
119import com.simplemobiletools.calendar.pro.interfaces.DeleteEventTypesListener
1210import com.simplemobiletools.calendar.pro.models.EventType
1311import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
1412import com.simplemobiletools.commons.dialogs.ConfirmationDialog
1513import com.simplemobiletools.commons.dialogs.RadioGroupDialog
16- import com.simplemobiletools.commons.extensions.getProperBackgroundColor
17- import com.simplemobiletools.commons.extensions.setFillWithStroke
18- import com.simplemobiletools.commons.extensions.toast
14+ import com.simplemobiletools.commons.extensions.*
1915import com.simplemobiletools.commons.models.RadioItem
2016import com.simplemobiletools.commons.views.MyRecyclerView
2117import kotlinx.android.synthetic.main.item_event_type.view.*
22- import java.util.*
2318
2419class ManageEventTypesAdapter (
2520 activity : SimpleActivity , val eventTypes : ArrayList <EventType >, val listener : DeleteEventTypesListener ? , recyclerView : MyRecyclerView ,
@@ -31,10 +26,19 @@ class ManageEventTypesAdapter(
3126
3227 override fun getActionMenuId () = R .menu.cab_event_type
3328
34- override fun prepareActionMode (menu : Menu ) {}
29+ override fun prepareActionMode (menu : Menu ) {
30+ menu.apply {
31+ findItem(R .id.cab_edit).isVisible = isOneItemSelected()
32+ }
33+ }
3534
3635 override fun actionItemPressed (id : Int ) {
36+ if (selectedKeys.isEmpty()) {
37+ return
38+ }
39+
3740 when (id) {
41+ R .id.cab_edit -> itemClick.invoke(getSelectedItems().first())
3842 R .id.cab_delete -> askConfirmDelete()
3943 }
4044 }
@@ -73,9 +77,50 @@ class ManageEventTypesAdapter(
7377 event_type_title.text = eventType.getDisplayTitle()
7478 event_type_color.setFillWithStroke(eventType.color, activity.getProperBackgroundColor())
7579 event_type_title.setTextColor(textColor)
80+
81+ overflow_menu_icon.drawable.apply {
82+ mutate()
83+ setTint(activity.getProperTextColor())
84+ }
85+
86+ overflow_menu_icon.setOnClickListener {
87+ showPopupMenu(overflow_menu_anchor, eventType)
88+ }
7689 }
7790 }
7891
92+ private fun showPopupMenu (view : View , eventType : EventType ) {
93+ val theme = activity.getPopupMenuTheme()
94+ val contextTheme = ContextThemeWrapper (activity, theme)
95+
96+ PopupMenu (contextTheme, view, Gravity .END ).apply {
97+ inflate(getActionMenuId())
98+ setOnMenuItemClickListener { item ->
99+ val eventTypeId = eventType.id!! .toInt()
100+ when (item.itemId) {
101+ R .id.cab_edit -> {
102+ executeItemMenuOperation(eventTypeId) {
103+ itemClick(eventType)
104+ }
105+ }
106+ R .id.cab_delete -> {
107+ executeItemMenuOperation(eventTypeId) {
108+ askConfirmDelete()
109+ }
110+ }
111+ }
112+ true
113+ }
114+ show()
115+ }
116+ }
117+
118+ private fun executeItemMenuOperation (eventTypeId : Int , callback : () -> Unit ) {
119+ finishActMode()
120+ selectedKeys.add(eventTypeId)
121+ callback()
122+ }
123+
79124 private fun askConfirmDelete () {
80125 val eventTypes = eventTypes.filter { selectedKeys.contains(it.id?.toInt()) }.map { it.id } as ArrayList <Long >
81126
0 commit comments