diff --git a/app/page/template/video-calling.htm b/app/page/template/video-calling.htm index 0f62b8bef54..481351886f2 100644 --- a/app/page/template/video-calling.htm +++ b/app/page/template/video-calling.htm @@ -51,8 +51,16 @@ data-bind="click: clickedOnStopVideo, css: {'video-controls__button--active': selfStreamState.videoSend()}, attr: {'data-uie-value': selfStreamState.videoSend() ? 'active' : 'inactive'}" data-uie-name="do-call-controls-toggle-video"> -
- + + + + + +
+ @@ -61,7 +69,16 @@ data-bind="click: clickedOnShareScreen, css: {'video-controls__button--active': selfStreamState.screenSend(), 'video-controls__button--disabled': disableToggleScreen()}" data-uie-name="do-call-controls-toggle-screen"> -
+ + + + + +
+ diff --git a/app/script/components/calling/deviceToggleButton.js b/app/script/components/calling/deviceToggleButton.js index 778ec1a4c47..0bd110d5b9d 100644 --- a/app/script/components/calling/deviceToggleButton.js +++ b/app/script/components/calling/deviceToggleButton.js @@ -26,8 +26,6 @@ z.components.DeviceToggleButton = class DeviceToggleButton { constructor(params) { this.availableDevices = params.devices; this.currentDeviceIndex = params.index; - this.iconClass = params.type === z.media.MediaDeviceType.VIDEO_INPUT ? 'icon-video' : 'icon-screensharing'; - this.numberOfDevices = ko.pureComputed(() => { return _.isArray(this.availableDevices()) ? this.availableDevices().length : 0; }); @@ -36,7 +34,6 @@ z.components.DeviceToggleButton = class DeviceToggleButton { ko.components.register('device-toggle-button', { template: ` -
diff --git a/app/script/view_model/VideoCallingViewModel.js b/app/script/view_model/VideoCallingViewModel.js index 5977ec61bd1..c055ca3a4bc 100644 --- a/app/script/view_model/VideoCallingViewModel.js +++ b/app/script/view_model/VideoCallingViewModel.js @@ -126,6 +126,17 @@ z.viewModel.VideoCallingViewModel = class VideoCallingViewModel { } }); + this.showSwitchCamera = ko.pureComputed(() => { + const hasMultipleCameras = this.availableDevices.video_input().length > 1; + const isVisible = hasMultipleCameras && this.localVideoStream() && this.selfStreamState.videoSend(); + return this.isCallOngoing() && isVisible; + }); + this.showSwitchScreen = ko.pureComputed(() => { + const hasMultipleScreens = this.availableDevices.screen_input().length > 1; + const isVisible = hasMultipleScreens && this.localVideoStream() && this.selfStreamState.screenSend(); + return this.isCallOngoing() && isVisible; + }); + this.showControls = ko.pureComputed(() => { const isFullscreenEnabled = this.showRemoteParticipant() && !this.multitasking.isMinimized(); const isVisible = this.showRemoteVideo() || isFullscreenEnabled; diff --git a/app/style/video-calling.less b/app/style/video-calling.less index 0ec7fcc55d3..86e86dac900 100644 --- a/app/style/video-calling.less +++ b/app/style/video-calling.less @@ -210,6 +210,13 @@ white-space: nowrap; } + device-toggle-button { + position: absolute; + bottom: -16px; + left: 50%; + transform: translateX(-50%); + } + &:hover &__label { opacity: 1; }