From 7c0afedc05e28661f3154ca4776724c157c0856d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 27 Mar 2025 11:32:11 +0100 Subject: [PATCH] Show floating action button to open numpad in outgoing early media call, prevent display name & SIP address being displayed twice if early media is audio only --- .../ui/call/fragment/OutgoingCallFragment.kt | 12 + .../in_call_button_background_tint_color.xml | 6 + .../layout-land/call_outgoing_fragment.xml | 248 +++++++++-------- .../res/layout/call_incoming_fragment.xml | 4 +- .../res/layout/call_outgoing_fragment.xml | 254 ++++++++++-------- 5 files changed, 301 insertions(+), 223 deletions(-) create mode 100644 app/src/main/res/color/in_call_button_background_tint_color.xml diff --git a/app/src/main/java/org/linphone/ui/call/fragment/OutgoingCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/OutgoingCallFragment.kt index e4b0bdbd3..ffbb9714a 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/OutgoingCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/OutgoingCallFragment.kt @@ -26,6 +26,7 @@ import android.view.ViewGroup import androidx.annotation.UiThread import androidx.core.view.doOnLayout import androidx.lifecycle.ViewModelProvider +import com.google.android.material.bottomsheet.BottomSheetBehavior import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.core.tools.Log import org.linphone.databinding.CallOutgoingFragmentBinding @@ -60,6 +61,7 @@ class OutgoingCallFragment : GenericCallFragment() { binding.lifecycleOwner = viewLifecycleOwner binding.viewModel = callViewModel + binding.numpadModel = callViewModel.numpadModel callViewModel.isOutgoingEarlyMedia.observe(viewLifecycleOwner) { earlyMedia -> if (earlyMedia) { @@ -69,6 +71,16 @@ class OutgoingCallFragment : GenericCallFragment() { } } } + + val numpadBottomSheetBehavior = BottomSheetBehavior.from(binding.callNumpad.root) + numpadBottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN + numpadBottomSheetBehavior.skipCollapsed = true + + callViewModel.showNumpadBottomSheetEvent.observe(viewLifecycleOwner) { + it.consume { + numpadBottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED + } + } } override fun onResume() { diff --git a/app/src/main/res/color/in_call_button_background_tint_color.xml b/app/src/main/res/color/in_call_button_background_tint_color.xml new file mode 100644 index 000000000..67e4952cb --- /dev/null +++ b/app/src/main/res/color/in_call_button_background_tint_color.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/layout-land/call_outgoing_fragment.xml b/app/src/main/res/layout-land/call_outgoing_fragment.xml index 2f9c0292f..539be70ce 100644 --- a/app/src/main/res/layout-land/call_outgoing_fragment.xml +++ b/app/src/main/res/layout-land/call_outgoing_fragment.xml @@ -8,133 +8,163 @@ + - + android:layout_height="match_parent"> - + - - - - - + + android:layout_marginStart="10dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:text="@string/call_outgoing" + app:layout_constraintStart_toEndOf="@id/call_direction_icon" + app:layout_constraintTop_toTopOf="parent"/> - + + + android:layout_marginStart="30dp" + android:orientation="vertical" + android:gravity="center" + app:layout_constraintStart_toEndOf="@id/avatar" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@id/call_direction_label" + app:layout_constraintBottom_toTopOf="@id/bottom_bar"> - + - + - + - + + + + + + + + + + + + android:id="@+id/call_numpad" + layout="@layout/call_numpad_bottom_sheet" + bind:model="@{numpadModel}"/> - + \ No newline at end of file diff --git a/app/src/main/res/layout/call_incoming_fragment.xml b/app/src/main/res/layout/call_incoming_fragment.xml index c8b55177f..cd3d4c0fd 100644 --- a/app/src/main/res/layout/call_incoming_fragment.xml +++ b/app/src/main/res/layout/call_incoming_fragment.xml @@ -110,7 +110,7 @@ android:text="@{viewModel.displayedName, default=`John Doe`}" android:textColor="@color/bc_white" android:textSize="22sp" - android:visibility="@{viewModel.isIncomingEarlyMedia ? View.VISIBLE : View.GONE, default=gone}" + android:visibility="@{viewModel.isIncomingEarlyMedia && viewModel.isVideoEnabled ? View.VISIBLE : View.GONE, default=gone}" app:layout_constraintBottom_toTopOf="@id/early_media_address" app:layout_constraintStart_toStartOf="parent" /> @@ -124,7 +124,7 @@ android:text="@{viewModel.displayedAddress, default=`sip:johndoe@sip.linphone.org`}" android:textColor="@color/bc_white" android:textSize="14sp" - android:visibility="@{viewModel.isIncomingEarlyMedia ? View.VISIBLE : View.GONE, default=gone}" + android:visibility="@{viewModel.isIncomingEarlyMedia && viewModel.isVideoEnabled ? View.VISIBLE : View.GONE, default=gone}" app:layout_constraintBottom_toTopOf="@id/bottom_bar" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/call_outgoing_fragment.xml b/app/src/main/res/layout/call_outgoing_fragment.xml index fe69ccf88..73fcddeaa 100644 --- a/app/src/main/res/layout/call_outgoing_fragment.xml +++ b/app/src/main/res/layout/call_outgoing_fragment.xml @@ -8,127 +8,157 @@ + - + android:layout_height="match_parent"> - + - + - + - + + + + + + + + + + + + + + + + + + android:id="@+id/call_numpad" + layout="@layout/call_numpad_bottom_sheet" + bind:model="@{numpadModel}"/> - - - - - - - - - + \ No newline at end of file