From 0fa68e23798f3363089b254c6edd74d45ef01d13 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 25 Mar 2022 12:01:07 +0100 Subject: [PATCH] Added video preview to participants & layout conference fragments so other participants will still see the user video while he's naviagating in conference related fragments --- .../fragments/ConferenceLayoutFragment.kt | 3 + .../ConferenceParticipantsFragment.kt | 11 +-- .../voip_conference_layout_fragment.xml | 70 ++++++++++++------- .../voip_conference_participants_fragment.xml | 57 +++++++++------ 4 files changed, 89 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt index c248b9d3c..3ba59a99b 100644 --- a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt +++ b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceLayoutFragment.kt @@ -23,6 +23,7 @@ import android.os.Bundle import android.view.View import android.widget.LinearLayout import androidx.navigation.navGraphViewModels +import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.activities.GenericFragment import org.linphone.activities.voip.viewmodels.ConferenceViewModel @@ -64,6 +65,8 @@ class ConferenceLayoutFragment : GenericFragment conferenceViewModel.maxParticipantsForMosaicLayout) { showTooManyParticipantsForMosaicLayoutDialog() } + + coreContext.core.nativePreviewWindowId = binding.localPreviewVideoSurface } private fun showTooManyParticipantsForMosaicLayoutDialog() { diff --git a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceParticipantsFragment.kt b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceParticipantsFragment.kt index d8badadea..9396c3226 100644 --- a/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceParticipantsFragment.kt +++ b/app/src/main/java/org/linphone/activities/voip/fragments/ConferenceParticipantsFragment.kt @@ -23,15 +23,14 @@ import android.os.Bundle import android.view.View import android.widget.Toast import androidx.navigation.navGraphViewModels +import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.activities.GenericFragment -import org.linphone.activities.voip.viewmodels.CallsViewModel import org.linphone.activities.voip.viewmodels.ConferenceViewModel import org.linphone.core.tools.Log import org.linphone.databinding.VoipConferenceParticipantsFragmentBinding class ConferenceParticipantsFragment : GenericFragment() { - private val callsViewModel: CallsViewModel by navGraphViewModels(R.id.call_nav_graph) private val conferenceViewModel: ConferenceViewModel by navGraphViewModels(R.id.call_nav_graph) override fun getLayoutId(): Int = R.layout.voip_conference_participants_fragment @@ -41,8 +40,6 @@ class ConferenceParticipantsFragment : GenericFragment + + + + type="android.view.View.OnClickListener" /> + + type="android.view.View.OnClickListener" /> + @@ -28,22 +33,22 @@ app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toBottomOf="@id/top_bar" /> + app:layout_constraintEnd_toEndOf="parent" /> @@ -51,8 +56,8 @@ android:layout_width="match_parent" android:layout_height="0dp" android:background="?attr/voipBackgroundBWColor" - app:layout_constraintTop_toBottomOf="@id/top_bar" - app:layout_constraintBottom_toBottomOf="parent"> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/top_bar"> + android:drawableTint="?attr/voipDrawableColor" + android:enabled="@{conferenceViewModel.conferenceParticipantDevices.size() > conferenceViewModel.maxParticipantsForMosaicLayout ? false : true}" + android:onClickListener="@{() -> conferenceViewModel.changeLayout(ConferenceLayout.Grid)}" + android:text="@string/conference_display_mode_mosaic" /> + android:drawableTint="?attr/voipDrawableColor" + android:enabled="@{conferenceViewModel.conferenceParticipantDevices.size() > conferenceViewModel.maxParticipantsForMosaicLayout ? false : true}" + android:onClickListener="@{() -> conferenceViewModel.changeLayout(ConferenceLayout.ActiveSpeaker)}" + android:text="@string/conference_display_mode_active_speaker" /> + android:drawableTint="?attr/voipDrawableColor" + android:onClickListener="@{() -> conferenceViewModel.changeLayout(ConferenceLayout.Legacy)}" + android:text="@string/conference_display_mode_audio_only" /> + + + app:dismissClickListener="@{dismissDialogClickListener}" /> diff --git a/app/src/main/res/layout/voip_conference_participants_fragment.xml b/app/src/main/res/layout/voip_conference_participants_fragment.xml index d277ad0f1..8f54e9418 100644 --- a/app/src/main/res/layout/voip_conference_participants_fragment.xml +++ b/app/src/main/res/layout/voip_conference_participants_fragment.xml @@ -3,16 +3,17 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + + + type="android.view.View.OnClickListener" /> + - + type="android.view.View.OnClickListener" /> + @@ -30,34 +31,33 @@ app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toBottomOf="@id/top_bar" /> - + + app:layout_constraintEnd_toEndOf="parent" /> @@ -65,27 +65,40 @@ android:layout_width="match_parent" android:layout_height="0dp" android:background="?attr/voipBackgroundBWColor" - app:layout_constraintTop_toBottomOf="@id/top_bar" - app:layout_constraintBottom_toBottomOf="parent"> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/top_bar"> + app:layout="@{@layout/voip_conference_participant_cell}" /> + app:layout_constraintTop_toBottomOf="@id/top_bar" /> + +