Added layout selector on conference waiting room fragment
This commit is contained in:
parent
492a23b61e
commit
8bcb0278ee
20 changed files with 184 additions and 41 deletions
|
@ -42,6 +42,12 @@ class ConferenceWaitingRoomViewModel : ViewModel() {
|
|||
|
||||
val isBluetoothHeadsetSelected = MutableLiveData<Boolean>()
|
||||
|
||||
val layoutMenuSelected = MutableLiveData<Boolean>()
|
||||
|
||||
val isActiveSpeakerLayoutSelected = MutableLiveData<Boolean>()
|
||||
|
||||
val isAudioOnlyLayoutSelected = MutableLiveData<Boolean>()
|
||||
|
||||
val isVideoAvailable = MutableLiveData<Boolean>()
|
||||
|
||||
val isVideoEnabled = MutableLiveData<Boolean>()
|
||||
|
@ -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()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="false" android:color="@color/voip_light_gray" />
|
||||
<item android:state_pressed="true" android:color="@color/voip_dark_gray" />
|
||||
<item android:state_enabled="false" android:color="?attr/voipFormFieldBackgroundColor" />
|
||||
<item android:state_pressed="true" android:color="?attr/voipTextColor2" />
|
||||
<item android:color="@color/white_color"/>
|
||||
</selector>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_call_add"
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_call_add"
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_call_add"
|
||||
android:tint="@color/white_color"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_call_chat"
|
||||
android:tint="@color/voip_dark_gray"/>
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_call_chat"
|
||||
android:tint="@color/voip_light_gray"/>
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_call_chat"
|
||||
android:tint="@color/white_color"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_call_forward"
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_call_forward"
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_call_forward"
|
||||
android:tint="@color/white_color"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_call_numpad"
|
||||
android:tint="@color/voip_dark_gray"/>
|
||||
android:tint="?attr/voipTextColor2"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_call_numpad"
|
||||
android:tint="@color/voip_light_gray"/>
|
||||
android:tint="?attr/voipFormFieldBackgroundColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_call_numpad"
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_call_participants"
|
||||
android:tint="@color/voip_dark_gray"/>
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_call_participants"
|
||||
android:tint="@color/voip_light_gray"/>
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_call_participants"
|
||||
android:tint="@color/white_color"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_call_stats"
|
||||
android:tint="@color/voip_dark_gray"/>
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_call_stats"
|
||||
android:tint="@color/voip_light_gray"/>
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_call_stats"
|
||||
android:tint="@color/white_color"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_calls_list"
|
||||
android:tint="@color/voip_dark_gray"/>
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_calls_list"
|
||||
android:tint="@color/voip_light_gray"/>
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_calls_list"
|
||||
android:tint="@color/white_color"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_conference_mosaic"
|
||||
android:tint="@color/voip_dark_gray"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_conference_mosaic"
|
||||
android:tint="@color/voip_light_gray"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_conference_mosaic"
|
||||
android:tint="@color/white_color"/>
|
||||
</item>
|
||||
</selector>
|
|
@ -1,7 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_conference_active_speaker"
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_conference_active_speaker"
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_conference_active_speaker"
|
||||
android:tint="?attr/voipDrawableColor"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_conference_audio_only"
|
||||
android:tint="?attr/voipDrawablePressedColor"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_conference_audio_only"
|
||||
android:tint="?attr/voipDrawableDisabledColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_conference_audio_only"
|
||||
android:tint="?attr/voipDrawableColor"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -1,7 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
<bitmap android:src="@drawable/voip_conference_mosaic"
|
||||
android:tint="?attr/voipTextColor2"/>
|
||||
</item>
|
||||
<item android:state_enabled="false">
|
||||
<bitmap android:src="@drawable/voip_conference_mosaic"
|
||||
android:tint="?attr/voipFormFieldBackgroundColor"/>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap android:src="@drawable/voip_conference_mosaic"
|
||||
android:tint="?attr/voipDrawableColor"/>
|
||||
android:tint="?attr/voipDrawableColor2"/>
|
||||
</item>
|
||||
</selector>
|
||||
|
|
|
@ -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">
|
||||
|
||||
<ImageView
|
||||
|
@ -154,6 +154,55 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:visibility="@{viewModel.layoutMenuSelected ? View.VISIBLE : View.GONE, default=gone}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/buttons"
|
||||
android:background="@drawable/shape_audio_routes_background"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:selected="@{!viewModel.isActiveSpeakerLayoutSelected && !viewModel.isAudioOnlyLayoutSelected}"
|
||||
android:onClick="@{() -> viewModel.setMosaicLayout()}"
|
||||
android:contentDescription="@string/conference_display_mode_mosaic"
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
android:layout_height="@dimen/voip_call_button_size"
|
||||
android:background="@drawable/button_toggle_background_reverse"
|
||||
android:layout_margin="5dp"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_conference_layout_grid"
|
||||
app:tint="@color/white_color" />
|
||||
|
||||
<ImageView
|
||||
android:selected="@{viewModel.isActiveSpeakerLayoutSelected}"
|
||||
android:onClick="@{() -> viewModel.setActiveSpeakerLayout()}"
|
||||
android:contentDescription="@string/conference_display_mode_active_speaker"
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
android:layout_height="@dimen/voip_call_button_size"
|
||||
android:background="@drawable/button_toggle_background_reverse"
|
||||
android:layout_margin="5dp"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_conference_layout_active_speaker"
|
||||
app:tint="@color/white_color"/>
|
||||
|
||||
<ImageView
|
||||
android:selected="@{viewModel.isAudioOnlyLayoutSelected}"
|
||||
android:onClick="@{() -> viewModel.setAudioOnlyLayout()}"
|
||||
android:contentDescription="@string/conference_display_mode_audio_only"
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
android:layout_height="@dimen/voip_call_button_size"
|
||||
android:background="@drawable/button_toggle_background_reverse"
|
||||
android:layout_margin="5dp"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/icon_conference_layout_audio_only"
|
||||
app:tint="@color/white_color" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/buttons"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -222,6 +271,20 @@
|
|||
app:layout_constraintDimensionRatio="W,1:1"
|
||||
app:layout_constraintStart_toEndOf="@id/speaker" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{() -> viewModel.toggleLayoutMenu()}"
|
||||
android:selected="@{viewModel.layoutMenuSelected}"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:background="@drawable/button_toggle_background_reverse"
|
||||
android:src="@{viewModel.isActiveSpeakerLayoutSelected ? @drawable/icon_conference_layout_active_speaker : viewModel.isAudioOnlyLayoutSelected ? @drawable/icon_conference_layout_audio_only : @drawable/icon_conference_layout_grid, default=@drawable/icon_conference_layout_grid}"
|
||||
android:padding="10dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:contentDescription="@string/content_description_toggle_layout_menu"
|
||||
app:layout_constraintDimensionRatio="W,1:1"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
|
@ -85,7 +86,8 @@
|
|||
android:text="@string/conference_display_mode_active_speaker"
|
||||
android:enabled="@{conferenceViewModel.conferenceParticipantDevices.size() > conferenceViewModel.maxParticipantsForMosaicLayout ? false : true}"
|
||||
android:checked="@={conferenceViewModel.conferenceActiveSpeakerDisplayMode}"
|
||||
android:drawableEnd="@drawable/icon_conference_layout_active_speaker"/>
|
||||
android:drawableEnd="@drawable/icon_conference_layout_active_speaker"
|
||||
android:drawableTint="?attr/voipDrawableColor"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
|
@ -101,7 +103,8 @@
|
|||
android:layout_marginBottom="10dp"
|
||||
android:text="@string/conference_display_mode_audio_only"
|
||||
android:checked="@={conferenceViewModel.conferenceAudioOnlyDisplayMode}"
|
||||
android:drawableEnd="@drawable/icon_conference_layout_audio_only"/>
|
||||
android:drawableEnd="@drawable/icon_conference_layout_audio_only"
|
||||
android:drawableTint="?attr/voipDrawableColor"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -52,6 +52,9 @@
|
|||
<item name="voipExtraButtonsBackgroundColor">@color/voip_dark_color3</item>
|
||||
<item name="voipToolbarBackgroundColor">@color/voip_dark_color4</item>
|
||||
<item name="voipDrawableColor">@color/white_color</item>
|
||||
<item name="voipDrawableColor2">@color/white_color</item>
|
||||
<item name="voipDrawablePressedColor">@color/voip_text_dark_color</item>
|
||||
<item name="voipDrawableDisabledColor">@color/voip_dark_color4</item>
|
||||
<item name="voipTextColor">@color/white_color</item>
|
||||
<item name="voipTextColor2">@color/voip_text_dark_color</item>
|
||||
<item name="voipFormBackgroundColor">@color/voip_dark_color4</item>
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
<attr name="voipExtraButtonsBackgroundColor" format="color" />
|
||||
<attr name="voipToolbarBackgroundColor" format="color" />
|
||||
<attr name="voipDrawableColor" format="color" />
|
||||
<attr name="voipDrawableColor2" format="color" />
|
||||
<attr name="voipDrawablePressedColor" format="color" />
|
||||
<attr name="voipDrawableDisabledColor" format="color" />
|
||||
<attr name="voipTextColor" format="color" />
|
||||
<attr name="voipTextColor2" format="color" />
|
||||
<attr name="voipFormBackgroundColor" format="color" />
|
||||
|
|
|
@ -807,4 +807,5 @@
|
|||
<string name="content_description_hide_numpad">Hide numpad</string>
|
||||
<string name="content_description_go_to_chat_rooms_list">Go to conversations list</string>
|
||||
<string name="content_description_conference_participant_mic_muted">Participant has it\'s microphone muted</string>
|
||||
<string name="content_description_toggle_layout_menu">Show or hide conference layout menu</string>
|
||||
</resources>
|
||||
|
|
|
@ -58,6 +58,9 @@
|
|||
<item name="voipExtraButtonsBackgroundColor">@color/voip_gray</item>
|
||||
<item name="voipToolbarBackgroundColor">@color/toolbar_color</item>
|
||||
<item name="voipDrawableColor">@color/voip_dark_gray</item>
|
||||
<item name="voipDrawableColor2">@color/white_color</item>
|
||||
<item name="voipDrawablePressedColor">@color/voip_dark_gray</item>
|
||||
<item name="voipDrawableDisabledColor">@color/light_grey_color</item>
|
||||
<item name="voipTextColor">@color/voip_dark_gray</item>
|
||||
<item name="voipTextColor2">@color/voip_dark_gray</item>
|
||||
<item name="voipFormBackgroundColor">@color/form_field_gray_background</item>
|
||||
|
|
Loading…
Reference in a new issue