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 753d4ccd4..b498f8a11 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 @@ -84,6 +84,7 @@ class ConferenceCallFragment : GenericFragment startTimer(R.id.active_conference_timer) + if (displayMode == ConferenceDisplayMode.ACTIVE_SPEAKER) { if (conferenceViewModel.conferenceExists.value == true) { Log.i("[Conference Call] Local participant is in conference and current layout is active speaker, updating Core's native window id") @@ -107,6 +108,8 @@ class ConferenceCallFragment : GenericFragment conferenceViewModel.maxParticipantsForMosaicLayout ) { showSnackBar(R.string.conference_too_many_participants_for_mosaic_layout) + Log.w("[Conference Call] More than ${conferenceViewModel.maxParticipantsForMosaicLayout} participants (${it.size}), forcing active speaker layout") + conferenceViewModel.conferenceDisplayMode.value = ConferenceDisplayMode.ACTIVE_SPEAKER } } 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 7f74b2522..d9ddf36bb 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 @@ -49,7 +49,7 @@ class ConferenceLayoutFragment : GenericFragment conferenceViewModel.maxParticipantsForMosaicLayout) { + if (it.size > conferenceViewModel.maxParticipantsForMosaicLayout && conferenceViewModel.conferenceDisplayMode.value == ConferenceDisplayMode.GRID) { showTooManyParticipantsForMosaicLayoutDialog() } } diff --git a/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt b/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt index de476e654..55ff3b8bf 100644 --- a/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt +++ b/app/src/main/java/org/linphone/activities/voip/viewmodels/ConferenceViewModel.kt @@ -69,12 +69,6 @@ class ConferenceViewModel : ViewModel() { override fun onParticipantAdded(conference: Conference, participant: Participant) { Log.i("[Conference] Participant added: ${participant.address.asStringUriOnly()}") updateParticipantsList(conference) - - val count = conferenceParticipants.value.orEmpty().size - if (count > maxParticipantsForMosaicLayout && conferenceDisplayMode.value == ConferenceDisplayMode.GRID) { - Log.w("[Conference] More than $maxParticipantsForMosaicLayout participants ($count), forcing active speaker layout") - conferenceDisplayMode.value = ConferenceDisplayMode.ACTIVE_SPEAKER - } } override fun onParticipantRemoved(conference: Conference, participant: Participant) { diff --git a/app/src/main/res/layout/voip_conference_layout_fragment.xml b/app/src/main/res/layout/voip_conference_layout_fragment.xml index 890da6a72..bb9ca13b2 100644 --- a/app/src/main/res/layout/voip_conference_layout_fragment.xml +++ b/app/src/main/res/layout/voip_conference_layout_fragment.xml @@ -93,7 +93,6 @@ android:checked="@{conferenceViewModel.conferenceDisplayMode == ConferenceDisplayMode.ACTIVE_SPEAKER}" android:drawableEnd="@drawable/icon_conference_layout_active_speaker" android:drawableTint="?attr/voipDrawableColor" - android:enabled="@{conferenceViewModel.conferenceParticipantDevices.size() > conferenceViewModel.maxParticipantsForMosaicLayout ? false : true}" android:onClickListener="@{() -> conferenceViewModel.changeLayout(ConferenceDisplayMode.ACTIVE_SPEAKER)}" android:text="@string/conference_display_mode_active_speaker" />