Show call transfer icon in calls list shown during call transfer instead of call state

This commit is contained in:
Sylvain Berfini 2026-04-03 14:46:04 +02:00
parent e2db7fe114
commit 4ba4254e46
3 changed files with 9 additions and 3 deletions

View file

@ -28,12 +28,13 @@ import androidx.lifecycle.findViewTreeLifecycleOwner
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.linphone.BR.showTransferIcon
import org.linphone.R import org.linphone.R
import org.linphone.databinding.CallListCellBinding import org.linphone.databinding.CallListCellBinding
import org.linphone.ui.call.model.CallModel import org.linphone.ui.call.model.CallModel
import org.linphone.utils.Event import org.linphone.utils.Event
class CallsListAdapter : class CallsListAdapter(private val showTransferIconInsteadOfCallState: Boolean = false) :
ListAdapter<CallModel, RecyclerView.ViewHolder>(CallDiffCallback()) { ListAdapter<CallModel, RecyclerView.ViewHolder>(CallDiffCallback()) {
var selectedAdapterPosition = -1 var selectedAdapterPosition = -1
@ -55,6 +56,7 @@ class CallsListAdapter :
val viewHolder = ViewHolder(binding) val viewHolder = ViewHolder(binding)
binding.apply { binding.apply {
lifecycleOwner = parent.findViewTreeLifecycleOwner() lifecycleOwner = parent.findViewTreeLifecycleOwner()
showTransferIcon = showTransferIconInsteadOfCallState
setOnClickListener { setOnClickListener {
callClickedEvent.value = Event(model!!) callClickedEvent.value = Event(model!!)

View file

@ -87,7 +87,7 @@ class TransferCallFragment : GenericCallFragment() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
callsAdapter = CallsListAdapter() callsAdapter = CallsListAdapter(showTransferIconInsteadOfCallState = true)
contactsAdapter = ConversationsContactsAndSuggestionsListAdapter() contactsAdapter = ConversationsContactsAndSuggestionsListAdapter()
} }

View file

@ -14,6 +14,9 @@
<variable <variable
name="model" name="model"
type="org.linphone.ui.call.model.CallModel" /> type="org.linphone.ui.call.model.CallModel" />
<variable
name="showTransferIcon"
type="Boolean" />
</data> </data>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
@ -55,7 +58,7 @@
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:contentDescription="@null" android:contentDescription="@null"
android:src="@{model.isPaused ? @drawable/phone_pause : @drawable/phone_call, default=@drawable/phone_pause}" android:src="@{showTransferIcon ? @drawable/phone_transfer : model.isPaused ? @drawable/phone_pause : @drawable/phone_call, default=@drawable/phone_pause}"
app:tint="?attr/color_main2_500" app:tint="?attr/color_main2_500"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@ -70,6 +73,7 @@
android:text="@{model.state, default=`Paused`}" android:text="@{model.state, default=`Paused`}"
android:textSize="12sp" android:textSize="12sp"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:visibility="@{showTransferIcon ? View.GONE : View.VISIBLE}"
app:layout_constraintHorizontal_bias="1" app:layout_constraintHorizontal_bias="1"
app:layout_constraintStart_toEndOf="@id/name" app:layout_constraintStart_toEndOf="@id/name"
app:layout_constraintEnd_toStartOf="@id/call_state_icon" app:layout_constraintEnd_toStartOf="@id/call_state_icon"