From 218aa35e1e31afcac4ee1c7073f07a2a2cd9f88f Mon Sep 17 00:00:00 2001 From: agsantos <aline.gondimsantos@savoirfairelinux.com> Date: Thu, 2 Dec 2021 10:33:33 -0500 Subject: [PATCH] misc: av settings + remove "Preview unavailable" and only set preview as invisible if no video device + fix preview not starting after branching device + resets eudiometer if no videodevice.listsize changes + fix preview visibility in recorderbox + fix recorderbox closing when changing from conversation to settings GitLab: #608 GitLab: #610 Change-Id: Ie7069934abdf5005ed8360fad20c0de20bdc1a43 --- src/mainview/components/ChatViewFooter.qml | 5 +++++ src/mainview/components/RecordBox.qml | 20 +++++++++++++------ src/settingsview/components/AudioSettings.qml | 14 +++++++++++++ src/settingsview/components/AvSettingPage.qml | 4 ---- src/settingsview/components/VideoSettings.qml | 18 +++++++++++------ 5 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/mainview/components/ChatViewFooter.qml b/src/mainview/components/ChatViewFooter.qml index b0f58069d..8afa71d16 100644 --- a/src/mainview/components/ChatViewFooter.qml +++ b/src/mainview/components/ChatViewFooter.qml @@ -89,6 +89,11 @@ Rectangle { visible: false } + onVisibleChanged: { + if (!visible) { + recordBox.visible = false + } + } EmojiPicker { id: emojiPicker diff --git a/src/mainview/components/RecordBox.qml b/src/mainview/components/RecordBox.qml index b1740a1f7..bc997db9b 100644 --- a/src/mainview/components/RecordBox.qml +++ b/src/mainview/components/RecordBox.qml @@ -41,7 +41,6 @@ Rectangle { property int duration: 0 property int state: RecordBox.States.INIT property bool isVideo: false - property bool previewAvailable: false property int preferredWidth: 320 property int preferredHeight: 240 property int btnSize: 40 @@ -61,7 +60,6 @@ Rectangle { if (isVideo) { previewWidget.deviceId = VideoDevices.getDefaultDevice() previewWidget.rendererId = VideoDevices.startDevice(previewWidget.deviceId) - previewAvailable = true } } @@ -243,7 +241,7 @@ Rectangle { anchors.fill: parent - visible: (isVideo && previewAvailable) + visible: (isVideo && VideoDevices.listSize !== 0) color: JamiTheme.blackColor radius: 5 @@ -262,6 +260,13 @@ Rectangle { maskSource: rectBox } } + + onVisibleChanged: { + if (visible) { + openRecorder(true) + } else + VideoDevices.stopDevice(previewWidget.deviceId) + } } Label { @@ -269,11 +274,14 @@ Rectangle { width: root.width - visible: (isVideo && !previewAvailable) + visible: (isVideo && VideoDevices.listSize === 0) - text: qsTr("Preview unavailable") - font.pointSize: 10 + text: JamiStrings.previewUnavailable + font.pointSize: JamiTheme.settingsFontSize font.kerning: true + color: JamiTheme.primaryForegroundColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter } Timer { diff --git a/src/settingsview/components/AudioSettings.qml b/src/settingsview/components/AudioSettings.qml index 34649f314..578aabca8 100644 --- a/src/settingsview/components/AudioSettings.qml +++ b/src/settingsview/components/AudioSettings.qml @@ -30,6 +30,7 @@ ColumnLayout { id:root property int itemWidth + property int videoDevicesListSize: VideoDevices.listSize enum Setting { AUDIOINPUT, @@ -38,6 +39,19 @@ ColumnLayout { AUDIOMANAGER } + onVisibleChanged: { + if (visible) + populateAudioSettings() + } + + onVideoDevicesListSizeChanged: { + AvAdapter.stopAudioMeter() + var selectedAudioManager = inputComboBoxSetting.comboModel.data( + inputComboBoxSetting.comboModel.index(inputComboBoxSetting.modelIndex, 0), AudioDeviceModel.RawDeviceName) + AVModel.setInputDevice(selectedAudioManager) + AvAdapter.startAudioMeter() + } + function populateAudioSettings() { inputComboBoxSetting.modelIndex = inputComboBoxSetting.comboModel.getCurrentIndex() outputComboBoxSetting.modelIndex = outputComboBoxSetting.comboModel.getCurrentIndex() diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml index 52cd2b50f..38003fb2b 100644 --- a/src/settingsview/components/AvSettingPage.qml +++ b/src/settingsview/components/AvSettingPage.qml @@ -32,10 +32,6 @@ Rectangle { property int contentWidth: avSettingsColumnLayout.width property int preferredHeight: avSettingsColumnLayout.implicitHeight - function populateAVSettings() { - audioSettings.populateAudioSettings() - } - color: JamiTheme.secondaryBackgroundColor ColumnLayout { diff --git a/src/settingsview/components/VideoSettings.qml b/src/settingsview/components/VideoSettings.qml index 19afe5ef0..c6c705c1c 100644 --- a/src/settingsview/components/VideoSettings.qml +++ b/src/settingsview/components/VideoSettings.qml @@ -32,14 +32,12 @@ ColumnLayout { id: root property real aspectRatio: 0.75 - property bool previewAvailable: false property int itemWidth function startPreviewing(force = false) { if (root.visible) { previewWidget.deviceId = VideoDevices.getDefaultDevice() previewWidget.rendererId = VideoDevices.startDevice(previewWidget.deviceId, force) - previewAvailable = true } } @@ -196,7 +194,7 @@ ColumnLayout { onSwitchToggled: { AvAdapter.setHardwareAcceleration(checked) - startPreviewing(true) + startPreviewing() } } @@ -230,11 +228,18 @@ ColumnLayout { maskSource: rectBox } } - } + onVisibleChanged: { + if (visible) { + VideoDevices.stopDevice(previewWidget.deviceId) + startPreviewing(true) + } else + VideoDevices.stopDevice(previewWidget.deviceId) + } + } + Label { - // TODO: proper use of previewAvailable - visible: !previewAvailable + visible: VideoDevices.listSize === 0 Layout.fillWidth: true Layout.preferredHeight: JamiTheme.preferredFieldHeight @@ -243,6 +248,7 @@ ColumnLayout { text: JamiStrings.previewUnavailable font.pointSize: JamiTheme.settingsFontSize font.kerning: true + color: JamiTheme.primaryForegroundColor horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter -- GitLab