From 8bcb0278ee07de1df6d0404573b32fafd598d194 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 23 Feb 2022 13:20:53 +0100 Subject: [PATCH] Added layout selector on conference waiting room fragment --- .../ConferenceWaitingRoomViewModel.kt | 42 ++++++++++++ .../color/voip_extra_button_text_color.xml | 4 +- app/src/main/res/drawable/icon_call_add.xml | 10 ++- app/src/main/res/drawable/icon_call_chat.xml | 6 +- .../main/res/drawable/icon_call_forward.xml | 10 ++- .../main/res/drawable/icon_call_numpad.xml | 4 +- .../res/drawable/icon_call_participants.xml | 6 +- app/src/main/res/drawable/icon_call_stats.xml | 6 +- app/src/main/res/drawable/icon_calls_list.xml | 6 +- .../main/res/drawable/icon_conf_layout.xml | 15 ----- .../icon_conference_layout_active_speaker.xml | 10 ++- .../icon_conference_layout_audio_only.xml | 10 ++- .../drawable/icon_conference_layout_grid.xml | 10 ++- .../conference_waiting_room_fragment.xml | 65 ++++++++++++++++++- .../main/res/layout/voip_buttons_extra.xml | 2 +- .../voip_conference_layout_fragment.xml | 9 ++- app/src/main/res/values-night/styles.xml | 3 + app/src/main/res/values/attrs.xml | 3 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 3 + 20 files changed, 184 insertions(+), 41 deletions(-) delete mode 100644 app/src/main/res/drawable/icon_conf_layout.xml diff --git a/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt b/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt index a76e0a148..14268c6af 100644 --- a/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceWaitingRoomViewModel.kt @@ -42,6 +42,12 @@ class ConferenceWaitingRoomViewModel : ViewModel() { val isBluetoothHeadsetSelected = MutableLiveData() + val layoutMenuSelected = MutableLiveData() + + val isActiveSpeakerLayoutSelected = MutableLiveData() + + val isAudioOnlyLayoutSelected = MutableLiveData() + val isVideoAvailable = MutableLiveData() val isVideoEnabled = MutableLiveData() @@ -95,6 +101,11 @@ class ConferenceWaitingRoomViewModel : ViewModel() { Log.i("[Conference Waiting Room] Microphone will be ${if (callParams.isMicEnabled) "enabled" else "muted"}") updateMicState() + layoutMenuSelected.value = false + isActiveSpeakerLayoutSelected.value = false + isAudioOnlyLayoutSelected.value = false + updateLayout() + isVideoAvailable.value = core.isVideoCaptureEnabled || core.isVideoPreviewEnabled callParams.isVideoEnabled = isVideoAvailable.value == true callParams.videoDirection = if (core.videoActivationPolicy.automaticallyInitiate) MediaDirection.SendRecv else MediaDirection.RecvOnly @@ -188,6 +199,31 @@ class ConferenceWaitingRoomViewModel : ViewModel() { updateAudioRouteState() } + fun toggleLayoutMenu() { + layoutMenuSelected.value = layoutMenuSelected.value != true + } + + fun setMosaicLayout() { + Log.i("[Conference Waiting Room] Set default layout to Mosaic") + coreContext.core.defaultConferenceLayout = ConferenceLayout.Grid + updateLayout() + layoutMenuSelected.value = false + } + + fun setActiveSpeakerLayout() { + Log.i("[Conference Waiting Room] Set default layout to ActiveSpeaker") + coreContext.core.defaultConferenceLayout = ConferenceLayout.ActiveSpeaker + updateLayout() + layoutMenuSelected.value = false + } + + fun setAudioOnlyLayout() { + Log.i("[Conference Waiting Room] Set default layout to AudioOnly") + coreContext.core.defaultConferenceLayout = ConferenceLayout.Legacy // TODO: FIXME: Replace Legacy by AudioOnly + updateLayout() + layoutMenuSelected.value = false + } + fun toggleVideo() { if (!PermissionHelper.get().hasCameraPermission()) { askPermissionEvent.value = Event(Manifest.permission.CAMERA) @@ -247,6 +283,12 @@ class ConferenceWaitingRoomViewModel : ViewModel() { isBluetoothHeadsetSelected.value = outputDeviceType == AudioDevice.Type.Bluetooth } + private fun updateLayout() { + val layout = coreContext.core.defaultConferenceLayout + isActiveSpeakerLayoutSelected.value = layout == ConferenceLayout.ActiveSpeaker + isAudioOnlyLayoutSelected.value = layout == ConferenceLayout.Legacy // TODO: FIXME: Replace Legacy by AudioOnly + } + private fun updateVideoState() { isVideoEnabled.value = callParams.videoDirection == MediaDirection.SendRecv isSwitchCameraAvailable.value = callParams.isVideoEnabled && coreContext.showSwitchCameraButton() diff --git a/app/src/main/res/color/voip_extra_button_text_color.xml b/app/src/main/res/color/voip_extra_button_text_color.xml index 4c7f3d593..336ccd7b2 100644 --- a/app/src/main/res/color/voip_extra_button_text_color.xml +++ b/app/src/main/res/color/voip_extra_button_text_color.xml @@ -1,6 +1,6 @@ - - + + diff --git a/app/src/main/res/drawable/icon_call_add.xml b/app/src/main/res/drawable/icon_call_add.xml index be2d29f8d..f559fbf98 100644 --- a/app/src/main/res/drawable/icon_call_add.xml +++ b/app/src/main/res/drawable/icon_call_add.xml @@ -1,7 +1,15 @@ + + + + + + + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_call_chat.xml b/app/src/main/res/drawable/icon_call_chat.xml index a7fa4fa36..ad97ebc4f 100644 --- a/app/src/main/res/drawable/icon_call_chat.xml +++ b/app/src/main/res/drawable/icon_call_chat.xml @@ -2,14 +2,14 @@ + android:tint="?attr/voipDrawablePressedColor"/> + android:tint="?attr/voipDrawableDisabledColor"/> + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_call_forward.xml b/app/src/main/res/drawable/icon_call_forward.xml index f8b6134ed..7caa899f1 100644 --- a/app/src/main/res/drawable/icon_call_forward.xml +++ b/app/src/main/res/drawable/icon_call_forward.xml @@ -1,7 +1,15 @@ + + + + + + + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_call_numpad.xml b/app/src/main/res/drawable/icon_call_numpad.xml index 56932679b..6768b101a 100644 --- a/app/src/main/res/drawable/icon_call_numpad.xml +++ b/app/src/main/res/drawable/icon_call_numpad.xml @@ -2,11 +2,11 @@ + android:tint="?attr/voipTextColor2"/> + android:tint="?attr/voipFormFieldBackgroundColor"/> + android:tint="?attr/voipDrawablePressedColor"/> + android:tint="?attr/voipDrawableDisabledColor"/> + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_call_stats.xml b/app/src/main/res/drawable/icon_call_stats.xml index d506adbbf..3cf57a966 100644 --- a/app/src/main/res/drawable/icon_call_stats.xml +++ b/app/src/main/res/drawable/icon_call_stats.xml @@ -2,14 +2,14 @@ + android:tint="?attr/voipDrawablePressedColor"/> + android:tint="?attr/voipDrawableDisabledColor"/> + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_calls_list.xml b/app/src/main/res/drawable/icon_calls_list.xml index 2c85e187a..937a6ff20 100644 --- a/app/src/main/res/drawable/icon_calls_list.xml +++ b/app/src/main/res/drawable/icon_calls_list.xml @@ -2,14 +2,14 @@ + android:tint="?attr/voipDrawablePressedColor"/> + android:tint="?attr/voipDrawableDisabledColor"/> + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_conf_layout.xml b/app/src/main/res/drawable/icon_conf_layout.xml deleted file mode 100644 index f5d2aea2d..000000000 --- a/app/src/main/res/drawable/icon_conf_layout.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/icon_conference_layout_active_speaker.xml b/app/src/main/res/drawable/icon_conference_layout_active_speaker.xml index cb565b345..eb53c13ea 100644 --- a/app/src/main/res/drawable/icon_conference_layout_active_speaker.xml +++ b/app/src/main/res/drawable/icon_conference_layout_active_speaker.xml @@ -1,7 +1,15 @@ + + + + + + + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_conference_layout_audio_only.xml b/app/src/main/res/drawable/icon_conference_layout_audio_only.xml index 954eaf27e..3736e6500 100644 --- a/app/src/main/res/drawable/icon_conference_layout_audio_only.xml +++ b/app/src/main/res/drawable/icon_conference_layout_audio_only.xml @@ -1,7 +1,15 @@ + + + + + + + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/drawable/icon_conference_layout_grid.xml b/app/src/main/res/drawable/icon_conference_layout_grid.xml index 8a66fb552..1f3bbc190 100644 --- a/app/src/main/res/drawable/icon_conference_layout_grid.xml +++ b/app/src/main/res/drawable/icon_conference_layout_grid.xml @@ -1,7 +1,15 @@ + + + + + + + android:tint="?attr/voipDrawableColor2"/> diff --git a/app/src/main/res/layout/conference_waiting_room_fragment.xml b/app/src/main/res/layout/conference_waiting_room_fragment.xml index 1f6bcc523..c7a4deb64 100644 --- a/app/src/main/res/layout/conference_waiting_room_fragment.xml +++ b/app/src/main/res/layout/conference_waiting_room_fragment.xml @@ -119,7 +119,7 @@ android:layout_above="@id/buttons" android:background="@drawable/shape_audio_routes_background" android:layout_centerHorizontal="true" - android:layout_marginBottom="20dp" + android:layout_marginBottom="10dp" android:orientation="vertical"> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/voip_buttons_extra.xml b/app/src/main/res/layout/voip_buttons_extra.xml index 0acbaa838..9b5db6f10 100644 --- a/app/src/main/res/layout/voip_buttons_extra.xml +++ b/app/src/main/res/layout/voip_buttons_extra.xml @@ -136,7 +136,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginTop="20dp" - app:drawableTopCompat="@drawable/icon_conf_layout" + android:drawableTop="@{conferenceViewModel.conferenceActiveSpeakerDisplayMode ? @drawable/icon_conference_layout_active_speaker : conferenceViewModel.conferenceAudioOnlyDisplayMode ? @drawable/icon_conference_layout_audio_only : @drawable/icon_conference_layout_grid, default=@drawable/icon_conference_layout_grid}" android:gravity="center" style="@style/call_options_font" android:text="@string/call_action_change_conf_layout"/> 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 0fe8bf102..8b816322c 100644 --- a/app/src/main/res/layout/voip_conference_layout_fragment.xml +++ b/app/src/main/res/layout/voip_conference_layout_fragment.xml @@ -68,7 +68,8 @@ android:text="@string/conference_display_mode_mosaic" android:enabled="@{conferenceViewModel.conferenceParticipantDevices.size() > conferenceViewModel.maxParticipantsForMosaicLayout ? false : true}" android:checked="@={conferenceViewModel.conferenceMosaicDisplayMode}" - android:drawableEnd="@drawable/icon_conference_layout_grid"/> + android:drawableEnd="@drawable/icon_conference_layout_grid" + android:drawableTint="?attr/voipDrawableColor"/> + android:drawableEnd="@drawable/icon_conference_layout_active_speaker" + android:drawableTint="?attr/voipDrawableColor"/> + android:drawableEnd="@drawable/icon_conference_layout_audio_only" + android:drawableTint="?attr/voipDrawableColor"/> @color/voip_dark_color3 @color/voip_dark_color4 @color/white_color + @color/white_color + @color/voip_text_dark_color + @color/voip_dark_color4 @color/white_color @color/voip_text_dark_color @color/voip_dark_color4 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index cac2445e5..7fbee54c0 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -37,6 +37,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b3530a5e..b04279dd5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -807,4 +807,5 @@ Hide numpad Go to conversations list Participant has it\'s microphone muted + Show or hide conference layout menu diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ded267a1d..c0624859b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -58,6 +58,9 @@ @color/voip_gray @color/toolbar_color @color/voip_dark_gray + @color/white_color + @color/voip_dark_gray + @color/light_grey_color @color/voip_dark_gray @color/voip_dark_gray @color/form_field_gray_background