From 3c75ecdefa003446503f00a1d594659a23cc22d5 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 1 Jul 2022 16:53:20 +0200 Subject: [PATCH] Only modify UI when foldable device is half-opened if it is in tabletop mode, not in book posture --- .../org/linphone/activities/voip/CallActivity.kt | 12 +++--------- .../voip/fragments/ConferenceCallFragment.kt | 13 ++++++++----- .../voip/fragments/SingleCallFragment.kt | 14 +++++++++----- .../voip/viewmodels/ControlsViewModel.kt | 3 +-- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/voip/CallActivity.kt b/app/src/main/java/org/linphone/activities/voip/CallActivity.kt index 67f4aabad..e8b109552 100644 --- a/app/src/main/java/org/linphone/activities/voip/CallActivity.kt +++ b/app/src/main/java/org/linphone/activities/voip/CallActivity.kt @@ -51,8 +51,6 @@ class CallActivity : ProximitySensorActivity() { private lateinit var conferenceViewModel: ConferenceViewModel private lateinit var statsViewModel: StatisticsListViewModel - private var foldingFeature: FoldingFeature? = null - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -307,13 +305,9 @@ class CallActivity : ProximitySensorActivity() { } override fun onLayoutChanges(foldingFeature: FoldingFeature?) { - this.foldingFeature = foldingFeature - updateConstraintSetDependingOnFoldingState() - } + foldingFeature ?: return + Log.i("[Call Activity] Folding feature state changed: ${foldingFeature.state}, orientation is ${foldingFeature.orientation}") - private fun updateConstraintSetDependingOnFoldingState() { - val feature = foldingFeature ?: return - Log.i("[Call Activity] Folding feature state changed: $feature.state") - controlsViewModel.foldingState.value = feature.state + controlsViewModel.foldingState.value = foldingFeature } } diff --git a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceCallFragment.kt b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceCallFragment.kt index 060209de7..e07438b1a 100644 --- a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceCallFragment.kt +++ b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceCallFragment.kt @@ -200,8 +200,8 @@ class ConferenceCallFragment : GenericFragment - updateHingeRelatedConstraints(state) + ) { feature -> + updateHingeRelatedConstraints(feature) } callsViewModel.callUpdateEvent.observe( @@ -327,14 +327,17 @@ class ConferenceCallFragment : GenericFragment(R.id.conference_constraint_layout) ?: return val set = ConstraintSet() set.clone(constraintLayout) - if (state == FoldingFeature.State.HALF_OPENED) { + // Only modify UI in table top mode + if (feature.orientation == FoldingFeature.Orientation.HORIZONTAL && + feature.state == FoldingFeature.State.HALF_OPENED + ) { set.setGuidelinePercent(R.id.hinge_top, 0.5f) set.setGuidelinePercent(R.id.hinge_bottom, 0.5f) controlsViewModel.folded.value = true diff --git a/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt b/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt index b1f01940b..35b2c01b9 100644 --- a/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt +++ b/app/src/main/java/org/linphone/activities/voip/fragments/SingleCallFragment.kt @@ -157,8 +157,8 @@ class SingleCallFragment : GenericFragment() { controlsViewModel.foldingState.observe( viewLifecycleOwner - ) { state -> - updateHingeRelatedConstraints(state) + ) { feature -> + updateHingeRelatedConstraints(feature) } callsViewModel.callUpdateEvent.observe( @@ -260,13 +260,17 @@ class SingleCallFragment : GenericFragment() { startActivity(intent) } - private fun updateHingeRelatedConstraints(state: FoldingFeature.State) { - Log.i("[Single Call] Updating constraint layout hinges: $state") + private fun updateHingeRelatedConstraints(feature: FoldingFeature) { + Log.i("[Single Call] Updating constraint layout hinges: $feature") + val constraintLayout = binding.constraintLayout val set = ConstraintSet() set.clone(constraintLayout) - if (state == FoldingFeature.State.HALF_OPENED) { + // Only modify UI in table top mode + if (feature.orientation == FoldingFeature.Orientation.HORIZONTAL && + feature.state == FoldingFeature.State.HALF_OPENED + ) { set.setGuidelinePercent(R.id.hinge_top, 0.5f) set.setGuidelinePercent(R.id.hinge_bottom, 0.5f) controlsViewModel.folded.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 aa0434f7d..b53be2c7f 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 @@ -101,7 +101,7 @@ class ControlsViewModel : ViewModel() { MutableLiveData>() } - val foldingState = MutableLiveData() + val foldingState = MutableLiveData() private val nonEarpieceOutputAudioDevice = MutableLiveData() @@ -199,7 +199,6 @@ class ControlsViewModel : ViewModel() { extraButtonsMenuTranslateY.value = AppUtils.getDimension(R.dimen.voip_call_extra_buttons_translate_y) audioRoutesMenuTranslateY.value = AppUtils.getDimension(R.dimen.voip_audio_routes_menu_translate_y) audioRoutesSelected.value = false - foldingState.value = FoldingFeature.State.FLAT nonEarpieceOutputAudioDevice.value = coreContext.core.outputAudioDevice?.type != AudioDevice.Type.Earpiece proximitySensorEnabled.value = shouldProximitySensorBeEnabled()