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;
}