mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Attended transfer
This commit is contained in:
parent
d0f052177e
commit
1d0abc4cb9
5 changed files with 44 additions and 19 deletions
|
|
@ -135,11 +135,6 @@ class ActiveCallFragment : GenericCallFragment() {
|
|||
findNavController().navigate(action)
|
||||
}
|
||||
|
||||
binding.setTransferClickListener {
|
||||
val action = ActiveCallFragmentDirections.actionActiveCallFragmentToTransferCallFragment()
|
||||
findNavController().navigate(action)
|
||||
}
|
||||
|
||||
binding.setCallsListClickListener {
|
||||
val action = ActiveCallFragmentDirections.actionActiveCallFragmentToCallsListFragment()
|
||||
findNavController().navigate(action)
|
||||
|
|
@ -153,6 +148,13 @@ class ActiveCallFragment : GenericCallFragment() {
|
|||
updateHingeRelatedConstraints(feature)
|
||||
}
|
||||
|
||||
callViewModel.goToInitiateBlindTransferEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
val action = ActiveCallFragmentDirections.actionActiveCallFragmentToTransferCallFragment()
|
||||
findNavController().navigate(action)
|
||||
}
|
||||
}
|
||||
|
||||
callViewModel.fullScreenMode.observe(viewLifecycleOwner) { hide ->
|
||||
Log.i("$TAG Switching full screen mode to ${if (hide) "ON" else "OFF"}")
|
||||
sharedViewModel.toggleFullScreenEvent.value = Event(hide)
|
||||
|
|
|
|||
|
|
@ -102,6 +102,10 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() {
|
|||
MutableLiveData<String>()
|
||||
}
|
||||
|
||||
val goToInitiateBlindTransferEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
val goTEndedCallEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
|
@ -595,6 +599,35 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() {
|
|||
showNumpadBottomSheetEvent.value = Event(true)
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun transferClicked() {
|
||||
coreContext.postOnCoreThread { core ->
|
||||
if (core.callsNb == 1) {
|
||||
Log.i("$TAG Only one call, initiate blind call transfer")
|
||||
goToInitiateBlindTransferEvent.postValue(Event(true))
|
||||
} else {
|
||||
val callToTransferTo = core.calls.findLast {
|
||||
it.state == Call.State.Paused && it != currentCall
|
||||
}
|
||||
if (callToTransferTo == null) {
|
||||
Log.e(
|
||||
"$TAG Couldn't find a call in Paused state to transfer current call to"
|
||||
)
|
||||
return@postOnCoreThread
|
||||
}
|
||||
|
||||
Log.i(
|
||||
"$TAG Doing an attended transfer between currently displayed call [${currentCall.remoteAddress.asStringUriOnly()}] and paused call [${callToTransferTo.remoteAddress.asStringUriOnly()}]"
|
||||
)
|
||||
if (callToTransferTo.transferToAnother(currentCall) != 0) {
|
||||
Log.e("$TAG Failed to make attended transfer!")
|
||||
} else {
|
||||
Log.i("$TAG Attended transfer is successful")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
fun blindTransferCallTo(to: Address) {
|
||||
if (::currentCall.isInitialized) {
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
<variable
|
||||
name="transferClickListener"
|
||||
type="View.OnClickListener" />
|
||||
<variable
|
||||
name="newCallClickListener"
|
||||
type="View.OnClickListener" />
|
||||
|
|
@ -45,7 +42,7 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:onClick="@{transferClickListener}"
|
||||
android:onClick="@{() -> viewModel.transferClicked()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/call_button_size"
|
||||
android:layout_marginTop="@dimen/call_extra_button_top_margin"
|
||||
|
|
@ -171,7 +168,7 @@
|
|||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/in_call_extra_action_label_style"
|
||||
android:id="@+id/transfer_label"
|
||||
android:onClick="@{transferClickListener}"
|
||||
android:onClick="@{() -> viewModel.transferClicked()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="15dp"
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@
|
|||
<data>
|
||||
<import type="android.view.View" />
|
||||
<import type="org.linphone.core.ChatRoom.SecurityLevel" />
|
||||
<variable
|
||||
name="transferClickListener"
|
||||
type="View.OnClickListener" />
|
||||
<variable
|
||||
name="newCallClickListener"
|
||||
type="View.OnClickListener" />
|
||||
|
|
@ -267,7 +264,6 @@
|
|||
layout="@layout/call_extra_actions"
|
||||
bind:viewModel="@{viewModel}"
|
||||
bind:callsViewModel="@{callsViewModel}"
|
||||
bind:transferClickListener="@{transferClickListener}"
|
||||
bind:newCallClickListener="@{newCallClickListener}"
|
||||
bind:callsListClickListener="@{callsListClickListener}"/>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
<variable
|
||||
name="transferClickListener"
|
||||
type="View.OnClickListener" />
|
||||
<variable
|
||||
name="newCallClickListener"
|
||||
type="View.OnClickListener" />
|
||||
|
|
@ -45,7 +42,7 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:onClick="@{transferClickListener}"
|
||||
android:onClick="@{() -> viewModel.transferClicked()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/call_button_size"
|
||||
android:layout_marginTop="@dimen/call_extra_button_top_margin"
|
||||
|
|
@ -171,7 +168,7 @@
|
|||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/in_call_extra_action_label_style"
|
||||
android:id="@+id/transfer_label"
|
||||
android:onClick="@{transferClickListener}"
|
||||
android:onClick="@{() -> viewModel.transferClicked()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/call_action_transfer"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue