From 5d048ee6db395bfac7089e91e0cfede64eacaa97 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 29 Jun 2021 13:43:30 +0200 Subject: [PATCH] Don't show video popup if video is globally disabled + don't hide mandatory encryption setting if encryption is disabled --- .../activities/call/fragments/ControlsFragment.kt | 8 ++++++-- .../linphone/activities/call/viewmodels/CallsViewModel.kt | 8 ++++++-- .../main/settings/viewmodels/CallSettingsViewModel.kt | 3 +++ .../main/settings/viewmodels/VideoSettingsViewModel.kt | 5 +++++ app/src/main/res/layout/settings_call_fragment.xml | 3 +-- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt index f46eb0a3c..2df5f3b50 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt @@ -108,8 +108,12 @@ class ControlsFragment : GenericFragment() { if (call.state == Call.State.StreamsRunning) { dialog?.dismiss() } else if (call.state == Call.State.UpdatedByRemote) { - if (call.currentParams.videoEnabled() != call.remoteParams?.videoEnabled()) { - showCallVideoUpdateDialog(call) + if (coreContext.core.videoCaptureEnabled() || coreContext.core.videoDisplayEnabled()) { + if (call.currentParams.videoEnabled() != call.remoteParams?.videoEnabled()) { + showCallVideoUpdateDialog(call) + } + } else { + Log.w("[Controls Fragment] Video display & capture are disabled, don't show video dialog") } } } diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt index 463559189..83bb8007f 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/CallsViewModel.kt @@ -78,8 +78,12 @@ class CallsViewModel : ViewModel() { val localVideo = call.currentParams.videoEnabled() val autoAccept = call.core.videoActivationPolicy.automaticallyAccept if (remoteVideo && !localVideo && !autoAccept) { - call.deferUpdate() - callUpdateEvent.value = Event(call) + if (coreContext.core.videoCaptureEnabled() || coreContext.core.videoDisplayEnabled()) { + call.deferUpdate() + callUpdateEvent.value = Event(call) + } else { + coreContext.answerCallVideoUpdateRequest(call, false) + } } } else if (state == Call.State.StreamsRunning) { callUpdateEvent.value = Event(call) diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt index f69ba3dfd..a8627769c 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt @@ -46,6 +46,9 @@ class CallSettingsViewModel : GenericSettingsViewModel() { override fun onListValueChanged(position: Int) { core.mediaEncryption = MediaEncryption.fromInt(encryptionValues[position]) encryptionIndex.value = position + if (position == 0) { + encryptionMandatory.value = false + } } } val encryptionIndex = MutableLiveData() diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/VideoSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/VideoSettingsViewModel.kt index 0622b6e16..f8ed1bfc1 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/VideoSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/VideoSettingsViewModel.kt @@ -33,6 +33,11 @@ class VideoSettingsViewModel : GenericSettingsViewModel() { override fun onBoolValueChanged(newValue: Boolean) { core.enableVideoCapture(newValue) core.enableVideoDisplay(newValue) + if (!newValue) { + tabletPreview.value = false + initiateCall.value = false + autoAccept.value = false + } } } val enableVideo = MutableLiveData() diff --git a/app/src/main/res/layout/settings_call_fragment.xml b/app/src/main/res/layout/settings_call_fragment.xml index d0527ed9a..9dcee1ab6 100644 --- a/app/src/main/res/layout/settings_call_fragment.xml +++ b/app/src/main/res/layout/settings_call_fragment.xml @@ -89,8 +89,7 @@ linphone:title="@{@string/call_settings_encryption_mandatory_title}" linphone:listener="@{viewModel.encryptionMandatoryListener}" linphone:checked="@={viewModel.encryptionMandatory}" - linphone:enabled="@{viewModel.encryptionIndex != 0}" - android:visibility="@{viewModel.encryptionIndex != 0 ? View.VISIBLE : View.GONE}"/> + linphone:enabled="@{viewModel.encryptionIndex != 0}" />