mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
fix some glitches related to selecting events at the list view
This commit is contained in:
@ -70,9 +70,9 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = listItems[position] is ListEvent
|
override fun getIsItemSelectable(position: Int) = listItems[position] is ListEvent
|
||||||
|
|
||||||
override fun getItemSelectionKey(position: Int) = (listItems.getOrNull(position) as? ListEvent)?.id?.toInt()
|
override fun getItemSelectionKey(position: Int) = (listItems.getOrNull(position) as? ListEvent)?.hashCode()
|
||||||
|
|
||||||
override fun getItemKeyPosition(key: Int) = listItems.indexOfFirst { (it as? ListEvent)?.id?.toInt() == key }
|
override fun getItemKeyPosition(key: Int) = listItems.indexOfFirst { (it as? ListEvent)?.hashCode() == key }
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
|
||||||
val layoutId = when (viewType) {
|
val layoutId = when (viewType) {
|
||||||
@ -136,7 +136,7 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
|
|
||||||
private fun setupListEvent(view: View, listEvent: ListEvent) {
|
private fun setupListEvent(view: View, listEvent: ListEvent) {
|
||||||
view.apply {
|
view.apply {
|
||||||
event_item_frame.isSelected = selectedKeys.contains(listEvent.id.toInt())
|
event_item_frame.isSelected = selectedKeys.contains(listEvent.hashCode())
|
||||||
event_item_title.text = listEvent.title
|
event_item_title.text = listEvent.title
|
||||||
event_item_description?.text = if (replaceDescription) listEvent.location else listEvent.description
|
event_item_description?.text = if (replaceDescription) listEvent.location else listEvent.description
|
||||||
event_item_start.text = if (listEvent.isAllDay) allDayString else Formatter.getTimeFromTS(context, listEvent.startTS)
|
event_item_start.text = if (listEvent.isAllDay) allDayString else Formatter.getTimeFromTS(context, listEvent.startTS)
|
||||||
@ -195,11 +195,13 @@ class EventListAdapter(activity: SimpleActivity, var listItems: ArrayList<ListIt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shareEvents() = activity.shareEvents(selectedKeys.distinct().map { it.toLong() })
|
private fun shareEvents() = activity.shareEvents(getSelectedEventIds())
|
||||||
|
|
||||||
|
private fun getSelectedEventIds() = listItems.filter { it is ListEvent && selectedKeys.contains(it.hashCode()) }.map { (it as ListEvent).id }.toMutableList() as ArrayList<Long>
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
val eventIds = selectedKeys.toMutableList().map { it.toLong() }
|
val eventIds = getSelectedEventIds()
|
||||||
val eventsToDelete = listItems.filter { selectedKeys.contains((it as? ListEvent)?.id?.toInt()) } as List<ListEvent>
|
val eventsToDelete = listItems.filter { selectedKeys.contains((it as? ListEvent)?.hashCode()) } as List<ListEvent>
|
||||||
val timestamps = eventsToDelete.mapNotNull { (it as? ListEvent)?.startTS }
|
val timestamps = eventsToDelete.mapNotNull { (it as? ListEvent)?.startTS }
|
||||||
|
|
||||||
val hasRepeatableEvent = eventsToDelete.any { it.isRepeatable }
|
val hasRepeatableEvent = eventsToDelete.any { it.isRepeatable }
|
||||||
|
Reference in New Issue
Block a user