Handle long press on list item to toggle edition mode

This commit is contained in:
Sylvain Berfini 2020-10-20 20:37:14 +02:00
parent bee45b949d
commit 23dc18d41a
11 changed files with 51 additions and 12 deletions

View file

@ -131,7 +131,7 @@ class ChatMessagesListAdapter(
val chatMessageViewModel = ChatMessageViewModel(chatMessage, contentClickedListener) val chatMessageViewModel = ChatMessageViewModel(chatMessage, contentClickedListener)
viewModel = chatMessageViewModel viewModel = chatMessageViewModel
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
// This is for item selection through ListTopBarFragment // This is for item selection through ListTopBarFragment
selectionListViewModel = selectionViewModel selectionListViewModel = selectionViewModel
@ -139,7 +139,7 @@ class ChatMessagesListAdapter(
position = adapterPosition position = adapterPosition
}) })
binding.setClickListener { setClickListener {
if (selectionViewModel.isEditionEnabled.value == true) { if (selectionViewModel.isEditionEnabled.value == true) {
selectionViewModel.onToggleSelect(adapterPosition) selectionViewModel.onToggleSelect(adapterPosition)
} }

View file

@ -77,7 +77,7 @@ class ChatRoomCreationContactsAdapter(
val searchResultViewModel = ChatRoomCreationContactViewModel(searchResult) val searchResultViewModel = ChatRoomCreationContactViewModel(searchResult)
viewModel = searchResultViewModel viewModel = searchResultViewModel
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
updateSecurity(searchResult, searchResultViewModel, securityEnabled) updateSecurity(searchResult, searchResultViewModel, securityEnabled)

View file

@ -66,7 +66,7 @@ class ChatRoomsListAdapter(
val chatRoomViewModel = ChatRoomViewModel(chatRoom) val chatRoomViewModel = ChatRoomViewModel(chatRoom)
viewModel = chatRoomViewModel viewModel = chatRoomViewModel
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
// This is for item selection through ListTopBarFragment // This is for item selection through ListTopBarFragment
selectionListViewModel = selectionViewModel selectionListViewModel = selectionViewModel
@ -74,7 +74,7 @@ class ChatRoomsListAdapter(
position = adapterPosition position = adapterPosition
}) })
binding.setClickListener { setClickListener {
if (selectionViewModel.isEditionEnabled.value == true) { if (selectionViewModel.isEditionEnabled.value == true) {
selectionViewModel.onToggleSelect(adapterPosition) selectionViewModel.onToggleSelect(adapterPosition)
} else { } else {
@ -83,6 +83,15 @@ class ChatRoomsListAdapter(
} }
} }
setLongClickListener {
if (selectionViewModel.isEditionEnabled.value == false) {
selectionViewModel.isEditionEnabled.value = true
// Selection will be handled by click listener
true
}
false
}
executePendingBindings() executePendingBindings()
} }
} }

View file

@ -69,7 +69,7 @@ class GroupInfoParticipantsAdapter(
participantViewModel.showAdminControls.value = showAdmin participantViewModel.showAdminControls.value = showAdmin
viewModel = participantViewModel viewModel = participantViewModel
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
setRemoveClickListener { setRemoveClickListener {
participantRemovedEvent.value = Event(participant) participantRemovedEvent.value = Event(participant)

View file

@ -58,7 +58,7 @@ class ImdnAdapter(
with(binding) { with(binding) {
viewModel = ImdnParticipantViewModel(participantImdnState) viewModel = ImdnParticipantViewModel(participantImdnState)
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
executePendingBindings() executePendingBindings()
} }

View file

@ -66,7 +66,7 @@ class ContactsListAdapter(
val contactViewModel = ContactViewModel(contact) val contactViewModel = ContactViewModel(contact)
viewModel = contactViewModel viewModel = contactViewModel
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
// This is for item selection through ListTopBarFragment // This is for item selection through ListTopBarFragment
selectionListViewModel = selectionViewModel selectionListViewModel = selectionViewModel
@ -74,7 +74,7 @@ class ContactsListAdapter(
position = adapterPosition position = adapterPosition
}) })
binding.setClickListener { setClickListener {
if (selectionViewModel.isEditionEnabled.value == true) { if (selectionViewModel.isEditionEnabled.value == true) {
selectionViewModel.onToggleSelect(adapterPosition) selectionViewModel.onToggleSelect(adapterPosition)
} else { } else {
@ -82,6 +82,15 @@ class ContactsListAdapter(
} }
} }
setLongClickListener {
if (selectionViewModel.isEditionEnabled.value == false) {
selectionViewModel.isEditionEnabled.value = true
// Selection will be handled by click listener
true
}
false
}
executePendingBindings() executePendingBindings()
} }
} }

View file

@ -69,7 +69,7 @@ class CallLogsListAdapter(
val callLogViewModel = CallLogViewModel(callLogGroup.lastCallLog) val callLogViewModel = CallLogViewModel(callLogGroup.lastCallLog)
viewModel = callLogViewModel viewModel = callLogViewModel
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
// This is for item selection through ListTopBarFragment // This is for item selection through ListTopBarFragment
selectionListViewModel = selectionViewModel selectionListViewModel = selectionViewModel
@ -85,6 +85,15 @@ class CallLogsListAdapter(
} }
} }
setLongClickListener {
if (selectionViewModel.isEditionEnabled.value == false) {
selectionViewModel.isEditionEnabled.value = true
// Selection will be handled by click listener
true
}
false
}
// This listener is disabled when in edition mode // This listener is disabled when in edition mode
setDetailsClickListener { setDetailsClickListener {
selectedCallLogEvent.value = Event(callLogGroup) selectedCallLogEvent.value = Event(callLogGroup)

View file

@ -69,7 +69,7 @@ class RecordingsListAdapter(
with(binding) { with(binding) {
viewModel = recording viewModel = recording
binding.lifecycleOwner = viewLifecycleOwner lifecycleOwner = viewLifecycleOwner
// This is for item selection through ListTopBarFragment // This is for item selection through ListTopBarFragment
position = adapterPosition position = adapterPosition

View file

@ -8,6 +8,9 @@
<variable <variable
name="clickListener" name="clickListener"
type="android.view.View.OnClickListener"/> type="android.view.View.OnClickListener"/>
<variable
name="longClickListener"
type="android.view.View.OnLongClickListener"/>
<variable <variable
name="position" name="position"
type="Integer"/> type="Integer"/>
@ -20,10 +23,11 @@
</data> </data>
<LinearLayout <LinearLayout
android:onClick="@{clickListener}"
android:onLongClick="@{longClickListener}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="80dp" android:layout_height="80dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:onClick="@{clickListener}"
android:paddingLeft="10dp" android:paddingLeft="10dp"
android:paddingTop="5dp" android:paddingTop="5dp"
android:paddingRight="10dp" android:paddingRight="10dp"

View file

@ -8,6 +8,9 @@
<variable <variable
name="clickListener" name="clickListener"
type="android.view.View.OnClickListener"/> type="android.view.View.OnClickListener"/>
<variable
name="longClickListener"
type="android.view.View.OnLongClickListener"/>
<variable <variable
name="position" name="position"
type="Integer"/> type="Integer"/>
@ -21,6 +24,7 @@
<RelativeLayout <RelativeLayout
android:onClick="@{clickListener}" android:onClick="@{clickListener}"
android:onLongClick="@{longClickListener}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:paddingTop="5dp" android:paddingTop="5dp"

View file

@ -8,6 +8,9 @@
<variable <variable
name="clickListener" name="clickListener"
type="android.view.View.OnClickListener"/> type="android.view.View.OnClickListener"/>
<variable
name="longClickListener"
type="android.view.View.OnLongClickListener"/>
<variable <variable
name="detailsClickListener" name="detailsClickListener"
type="android.view.View.OnClickListener"/> type="android.view.View.OnClickListener"/>
@ -27,6 +30,7 @@
<RelativeLayout <RelativeLayout
android:onClick="@{clickListener}" android:onClick="@{clickListener}"
android:onLongClick="@{longClickListener}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:paddingTop="5dp" android:paddingTop="5dp"