linphone-desktop/Linphone/view/Control/Form/Settings/MultimediaSettings.qml
2024-09-19 08:38:49 +02:00

180 lines
5.2 KiB
QML

import QtQuick
import QtQuick.Controls as Control
import QtQuick.Layouts
import Linphone
import SettingsCpp 1.0
ColumnLayout {
id: mainItem
property CallGui call
property alias speakerVolume: speakerVolume.value
property string speakerDevice: outputAudioDeviceCBox.currentText
property alias micVolume: microVolume.value
property string microDevice: inputAudioDeviceCBox.currentText
RoundedPane {
Layout.alignment: Qt.AlignHCenter
Control.StackView.onActivated: {
rightPanelTitle.text = qsTr("Paramètres")
}
height: contentItem.implicitHeight + topPadding + bottomPadding
Layout.fillWidth: true
topPadding: 25 * DefaultStyle.dp
bottomPadding: 25 * DefaultStyle.dp
leftPadding: 25 * DefaultStyle.dp
rightPadding: 25 * DefaultStyle.dp
contentItem: ColumnLayout {
spacing: 40 * DefaultStyle.dp
ColumnLayout {
spacing: 12 * DefaultStyle.dp
RowLayout {
spacing: 8 * DefaultStyle.dp
EffectImage {
imageSource: AppIcons.speaker
colorizationColor: DefaultStyle.main1_500_main
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
imageWidth: 24 * DefaultStyle.dp
imageHeight: 24 * DefaultStyle.dp
}
Text {
text: qsTr("Haut-parleurs")
font.pixelSize: 14 * DefaultStyle.dp
Layout.fillWidth: true
}
}
ComboBox {
id: outputAudioDeviceCBox
Layout.fillWidth: true
Layout.preferredWidth: parent.width
Layout.preferredHeight: 49 * DefaultStyle.dp
model: SettingsCpp.playbackDevices
onCurrentTextChanged: {
if (mainItem.call) mainItem.call.core.lSetOutputAudioDevice(currentText)
SettingsCpp.lSetPlaybackDevice(currentText)
}
}
Slider {
id: speakerVolume
Layout.fillWidth: true
from: 0.0
to: 1.0
value: mainItem.call ? mainItem.call.core.speakerVolumeGain : SettingsCpp.playbackGain
onMoved: {
if (mainItem.call) mainItem.call.core.lSetSpeakerVolumeGain(value)
SettingsCpp.lSetPlaybackGain(value)
}
}
}
ColumnLayout {
spacing: 12 * DefaultStyle.dp
RowLayout {
spacing: 8 * DefaultStyle.dp
EffectImage {
imageSource: AppIcons.microphone
colorizationColor: DefaultStyle.main1_500_main
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
imageWidth: 24 * DefaultStyle.dp
imageHeight: 24 * DefaultStyle.dp
}
Text {
text: qsTr("Microphone")
font.pixelSize: 14 * DefaultStyle.dp
Layout.fillWidth: true
}
}
ComboBox {
id: inputAudioDeviceCBox
Layout.fillWidth: true
Layout.preferredWidth: parent.width
Layout.preferredHeight: 49 * DefaultStyle.dp
model: SettingsCpp.captureDevices
onCurrentTextChanged: {
if (mainItem.call) mainItem.call.core.lSetInputAudioDevice(currentText)
SettingsCpp.lSetCaptureDevice(currentText)
}
}
Slider {
id: microVolume
Layout.fillWidth: true
from: 0.0
to: 1.0
value: mainItem.call ? mainItem.call.core.microphoneVolumeGain : SettingsCpp.captureGain
onMoved: {
if (mainItem.call) mainItem.call.core.lSetMicrophoneVolumeGain(value)
SettingsCpp.lSetCaptureGain(value)
}
}
Timer {
interval: 50
repeat: true
running: mainItem.call || false
onTriggered: audioTestSlider.value = (mainItem.call && mainItem.call.core.microVolume)
}
Slider {
id: audioTestSlider
Layout.fillWidth: true
enabled: false
Layout.preferredHeight: 10 * DefaultStyle.dp
background: Rectangle {
x: audioTestSlider.leftPadding
y: audioTestSlider.topPadding + audioTestSlider.availableHeight / 2 - height / 2
implicitWidth: 200 * DefaultStyle.dp
implicitHeight: 10 * DefaultStyle.dp
width: audioTestSlider.availableWidth
height: implicitHeight
radius: 2 * DefaultStyle.dp
color: "#D9D9D9"
Rectangle {
width: audioTestSlider.visualPosition * parent.width
height: parent.height
gradient: Gradient {
orientation: Gradient.Horizontal
GradientStop { position: 0.0; color: "#6FF88D" }
GradientStop { position: 1.0; color: "#00D916" }
}
radius: 2 * DefaultStyle.dp
}
}
handle: Item {visible: false}
}
}
ColumnLayout {
spacing: 12 * DefaultStyle.dp
RowLayout {
spacing: 8 * DefaultStyle.dp
EffectImage {
imageSource: AppIcons.videoCamera
colorizationColor: DefaultStyle.main1_500_main
Layout.preferredWidth: 24 * DefaultStyle.dp
Layout.preferredHeight: 24 * DefaultStyle.dp
imageWidth: 24 * DefaultStyle.dp
imageHeight: 24 * DefaultStyle.dp
}
Text {
text: qsTr("Caméra")
font.pixelSize: 14 * DefaultStyle.dp
Layout.fillWidth: true
}
}
ComboBox {
id: videoDevicesCbox
Layout.fillWidth: true
Layout.preferredWidth: parent.width
Layout.preferredHeight: 49 * DefaultStyle.dp
model: SettingsCpp.videoDevices
currentIndex: SettingsCpp.videoDeviceIndex
onCurrentTextChanged: {
SettingsCpp.lSetVideoDevice(currentText)
}
}
}
}
}
Item {
Layout.fillHeight: true
}
}