From f33eec86171800385304370a4230a02878a41141 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 6 Apr 2022 17:50:39 +0200 Subject: [PATCH] Fixed no video while being alone in video conference with mosaic layout + fixed issue in French translation --- .../voip/data/ConferenceParticipantDeviceData.kt | 10 +++++----- .../activities/voip/viewmodels/ControlsViewModel.kt | 11 ++++++----- app/src/main/res/layout/voip_buttons.xml | 4 ++-- app/src/main/res/layout/voip_single_call_fragment.xml | 2 +- app/src/main/res/values-fr/strings.xml | 4 ++-- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/voip/data/ConferenceParticipantDeviceData.kt b/app/src/main/java/org/linphone/activities/voip/data/ConferenceParticipantDeviceData.kt index ffc0eb39f..b9a7f5143 100644 --- a/app/src/main/java/org/linphone/activities/voip/data/ConferenceParticipantDeviceData.kt +++ b/app/src/main/java/org/linphone/activities/voip/data/ConferenceParticipantDeviceData.kt @@ -40,7 +40,7 @@ class ConferenceParticipantDeviceData( val videoAvailable = MutableLiveData() - val videoSendReceive = MutableLiveData() + val isSendingVideo = MutableLiveData() val activeSpeaker = MutableLiveData() @@ -82,7 +82,7 @@ class ConferenceParticipantDeviceData( ) { if (streamType == StreamType.Video) { Log.i("[Conference Participant Device] Participant [${participantDevice.address.asStringUriOnly()}] video capability changed to $direction") - videoSendReceive.value = direction == MediaDirection.SendRecv + isSendingVideo.value = direction == MediaDirection.SendRecv || direction == MediaDirection.SendOnly } } @@ -110,14 +110,14 @@ class ConferenceParticipantDeviceData( videoAvailable.value = participantDevice.getStreamAvailability(StreamType.Video) val videoCapability = participantDevice.getStreamCapability(StreamType.Video) - videoSendReceive.value = videoCapability == MediaDirection.SendRecv + isSendingVideo.value = videoCapability == MediaDirection.SendRecv || videoCapability == MediaDirection.SendOnly isInConference.value = participantDevice.isInConference videoEnabled.value = isVideoAvailableAndSendReceive() videoEnabled.addSource(videoAvailable) { videoEnabled.value = isVideoAvailableAndSendReceive() } - videoEnabled.addSource(videoSendReceive) { + videoEnabled.addSource(isSendingVideo) { videoEnabled.value = isVideoAvailableAndSendReceive() } @@ -183,6 +183,6 @@ class ConferenceParticipantDeviceData( } private fun isVideoAvailableAndSendReceive(): Boolean { - return videoAvailable.value == true && videoSendReceive.value == true + return videoAvailable.value == true && isSendingVideo.value == true } } diff --git a/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt b/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt index 2afa1cdde..29e6fc0d0 100644 --- a/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/voip/viewmodels/ControlsViewModel.kt @@ -53,7 +53,7 @@ class ControlsViewModel : ViewModel() { val isVideoEnabled = MutableLiveData() - val isVideoSendReceive = MutableLiveData() + val isSendingVideo = MutableLiveData() val isVideoUpdateInProgress = MutableLiveData() @@ -312,7 +312,7 @@ class ControlsViewModel : ViewModel() { params.isVideoEnabled = true params.videoDirection = MediaDirection.SendRecv } else { - if (params?.videoDirection == MediaDirection.SendRecv) { + if (params?.videoDirection == MediaDirection.SendRecv || params?.videoDirection == MediaDirection.SendOnly) { params.videoDirection = MediaDirection.RecvOnly } else { params?.videoDirection = MediaDirection.SendRecv @@ -457,10 +457,11 @@ class ControlsViewModel : ViewModel() { isVideoEnabled.value = enabled showTakeSnaptshotButton.value = enabled && corePreferences.showScreenshotButton isSwitchCameraAvailable.value = enabled && coreContext.showSwitchCameraButton() - if (coreContext.core.currentCall?.conference != null) { - isVideoSendReceive.value = coreContext.core.currentCall?.currentParams?.videoDirection == MediaDirection.SendRecv + isSendingVideo.value = if (coreContext.core.currentCall?.conference != null) { + val videoDirection = coreContext.core.currentCall?.currentParams?.videoDirection + videoDirection == MediaDirection.SendRecv || videoDirection == MediaDirection.SendOnly } else { - isVideoSendReceive.value = true + true } } diff --git a/app/src/main/res/layout/voip_buttons.xml b/app/src/main/res/layout/voip_buttons.xml index 928d668a6..d733453be 100644 --- a/app/src/main/res/layout/voip_buttons.xml +++ b/app/src/main/res/layout/voip_buttons.xml @@ -94,11 +94,11 @@ android:layout_height="match_parent" android:layout_marginStart="5dp" android:background="@drawable/button_background_reverse" - android:contentDescription="@{controlsViewModel.isVideoEnabled && controlsViewModel.isVideoSendReceive ? @string/content_description_disable_video : @string/content_description_enable_video}" + android:contentDescription="@{controlsViewModel.isVideoEnabled && controlsViewModel.isSendingVideo ? @string/content_description_disable_video : @string/content_description_enable_video}" android:enabled="@{controlsViewModel.isVideoAvailable && !controlsViewModel.isVideoUpdateInProgress && conferenceViewModel.conferenceDisplayMode != ConferenceDisplayMode.AUDIO_ONLY}}" android:onClick="@{() -> controlsViewModel.toggleVideo()}" android:padding="5dp" - android:selected="@{controlsViewModel.isVideoEnabled && controlsViewModel.isVideoSendReceive}" + android:selected="@{controlsViewModel.isVideoEnabled && controlsViewModel.isSendingVideo}" android:src="@drawable/icon_toggle_camera" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="W,1:1" diff --git a/app/src/main/res/layout/voip_single_call_fragment.xml b/app/src/main/res/layout/voip_single_call_fragment.xml index 692e40344..7e00ae5da 100644 --- a/app/src/main/res/layout/voip_single_call_fragment.xml +++ b/app/src/main/res/layout/voip_single_call_fragment.xml @@ -135,7 +135,7 @@ android:layout_width="0dp" android:layout_height="0dp" android:onClick="@{() -> controlsViewModel.toggleFullScreen()}" - android:visibility="@{controlsViewModel.isVideoEnabled && controlsViewModel.isVideoSendReceive && !callsViewModel.currentCallData.isRemotelyPaused ? View.VISIBLE : View.GONE, default=gone}" + android:visibility="@{controlsViewModel.isVideoEnabled && controlsViewModel.isSendingVideo && !callsViewModel.currentCallData.isRemotelyPaused ? View.VISIBLE : View.GONE, default=gone}" app:layout_constraintBottom_toBottomOf="@id/background" app:layout_constraintEnd_toEndOf="@id/background" app:layout_constraintStart_toStartOf="@id/background" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 24cfd24fc..b68bfd1d6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -684,10 +684,10 @@ Heure Durée Fuseau horaire - Envoyer l\'invitation par &appName; + Envoyer l\'invitation par &appName; Envoyer l\'invitation par courriel Voulez-vous chiffrer la conférence \? - L\'invitation va être envoyée depuis mon compte &appName; + L\'invitation va être envoyée depuis mon compte &appName; Liste des participants Créer la conférence Planifier une conférence