diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index ec0273b32..0e2086884 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -83,6 +83,14 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C showCallActivity() } } + Call.State.UpdatedByRemote -> { + // TODO FIXME: remove + val params = core.createCallParams(call) + params?.isVideoEnabled = true + core.isVideoCaptureEnabled = true + core.isVideoDisplayEnabled = true + call.acceptUpdate(params) + } else -> { } } diff --git a/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt b/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt index a9a934fb1..72639ac02 100644 --- a/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/voip/fragment/ActiveCallFragment.kt @@ -214,11 +214,11 @@ class ActiveCallFragment : GenericCallFragment() { if (feature.state == FoldingFeature.State.HALF_OPENED) { set.setGuidelinePercent(R.id.hinge_top, 0.5f) set.setGuidelinePercent(R.id.hinge_bottom, 0.5f) - sharedViewModel.folded.value = true + callViewModel.halfOpenedFolded.value = true } else { set.setGuidelinePercent(R.id.hinge_top, 0f) set.setGuidelinePercent(R.id.hinge_bottom, 1f) - sharedViewModel.folded.value = false + callViewModel.halfOpenedFolded.value = false } set.applyTo(constraintLayout) diff --git a/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt index 8f1862304..72deab15e 100644 --- a/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/voip/viewmodel/CurrentCallViewModel.kt @@ -69,6 +69,8 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { val pipMode = MutableLiveData() + val halfOpenedFolded = MutableLiveData() + // To synchronize chronometers in UI val callDuration = MutableLiveData() diff --git a/app/src/main/java/org/linphone/ui/voip/viewmodel/SharedCallViewModel.kt b/app/src/main/java/org/linphone/ui/voip/viewmodel/SharedCallViewModel.kt index 05554aa4a..e0533c468 100644 --- a/app/src/main/java/org/linphone/ui/voip/viewmodel/SharedCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/voip/viewmodel/SharedCallViewModel.kt @@ -29,6 +29,4 @@ class SharedCallViewModel @UiThread constructor() : ViewModel() { val toggleFullScreenEvent = MutableLiveData>() val foldingState = MutableLiveData() - - val folded = MutableLiveData() } diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index a97d57834..bbd92a93a 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -36,6 +36,7 @@ import androidx.annotation.ColorRes import androidx.annotation.UiThread import androidx.appcompat.widget.AppCompatEditText import androidx.appcompat.widget.AppCompatTextView +import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat @@ -307,6 +308,22 @@ fun AppCompatEditText.editTextSetting(lambda: () -> Unit) { }) } +@BindingAdapter("android:layout_marginBottom") +fun setConstraintLayoutBottomMargin(view: View, margins: Float) { + val params = view.layoutParams as ConstraintLayout.LayoutParams + val m = margins.toInt() + params.setMargins(params.leftMargin, params.topMargin, params.rightMargin, m) + view.layoutParams = params +} + +@BindingAdapter("android:layout_marginTop") +fun setConstraintLayoutTopMargin(view: View, margins: Float) { + val params = view.layoutParams as ConstraintLayout.LayoutParams + val m = margins.toInt() + params.setMargins(params.leftMargin, m, params.rightMargin, params.bottomMargin) + view.layoutParams = params +} + @BindingAdapter("focusNextOnInput") fun focusNextOnInput(editText: EditText, enabled: Boolean) { if (!enabled) return diff --git a/app/src/main/res/layout/voip_active_call_fragment.xml b/app/src/main/res/layout/voip_active_call_fragment.xml index 56fc9c71c..6a2f455e6 100644 --- a/app/src/main/res/layout/voip_active_call_fragment.xml +++ b/app/src/main/res/layout/voip_active_call_fragment.xml @@ -106,6 +106,8 @@ android:id="@+id/remote_video_surface" android:layout_width="0dp" android:layout_height="0dp" + android:layout_marginBottom="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/in_call_main_actions_menu_height, default=@dimen/in_call_main_actions_menu_height}" + android:layout_marginTop="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/in_call_top_bar_info_height, default=@dimen/in_call_top_bar_info_height}" android:onClick="@{() -> viewModel.toggleFullScreen()}" android:visibility="@{viewModel.isVideoEnabled ? View.VISIBLE : View.GONE}" app:layout_constraintTop_toTopOf="parent" @@ -122,8 +124,8 @@ + app:layout_constraintTop_toTopOf="@id/call_direction_label"/> + app:layout_constraintTop_toTopOf="@id/call_direction_label"/> 55dp 70dp + 28dp + 48dp 110dp 235dp 345dp