mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-18 20:08:11 +00:00
255 lines
7 KiB
QML
255 lines
7 KiB
QML
|
||
import QtQuick
|
||
import QtQuick.Layouts
|
||
import QtQuick.Controls as Control
|
||
import Linphone
|
||
import SettingsCpp 1.0
|
||
|
||
AbstractSettingsLayout {
|
||
contentComponent: content
|
||
width: parent.width
|
||
Component {
|
||
id: content
|
||
ColumnLayout {
|
||
width: parent.width
|
||
RowLayout {
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
Item {
|
||
Layout.preferredWidth: 341 * DefaultStyle.dp
|
||
}
|
||
}
|
||
ColumnLayout {
|
||
Layout.rightMargin: 25 * DefaultStyle.dp
|
||
Layout.topMargin: 36 * DefaultStyle.dp
|
||
Layout.leftMargin: 64 * DefaultStyle.dp
|
||
Layout.fillWidth: true
|
||
spacing: 40 * DefaultStyle.dp
|
||
SwitchSetting {
|
||
titleText: qsTr("Annulateur d'écho")
|
||
subTitleText: qsTr("Évite que de l'écho soit entendu par votre correspondant")
|
||
propertyName: "echoCancellationEnabled"
|
||
propertyOwner: SettingsCpp
|
||
}
|
||
SwitchSetting {
|
||
Layout.fillWidth: true
|
||
titleText: qsTr("Activer l’enregistrement automatique des appels")
|
||
subTitleText: qsTr("Enregistrer tous les appels par défaut")
|
||
propertyName: "automaticallyRecordCallsEnabled"
|
||
propertyOwner: SettingsCpp
|
||
}
|
||
}
|
||
}
|
||
Rectangle {
|
||
Layout.fillWidth: true
|
||
Layout.preferredHeight: 1 * DefaultStyle.dp
|
||
color: DefaultStyle.main2_500main
|
||
Layout.topMargin: 38 * DefaultStyle.dp
|
||
Layout.bottomMargin: 16 * DefaultStyle.dp
|
||
}
|
||
RowLayout {
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
ColumnLayout {
|
||
Layout.preferredWidth: 341 * DefaultStyle.dp
|
||
Text {
|
||
text: qsTr("Périphériques")
|
||
font: Typography.p2
|
||
wrapMode: Text.WordWrap
|
||
color: DefaultStyle.main2_600
|
||
Layout.fillWidth: true
|
||
}
|
||
Text {
|
||
text: qsTr("Vous pouvez modifier les périphériques de sortie audio, le microphone et la caméra de capture.")
|
||
font: Typography.p1
|
||
wrapMode: Text.WordWrap
|
||
color: DefaultStyle.main2_600
|
||
Layout.fillWidth: true
|
||
}
|
||
}
|
||
Item {
|
||
Layout.fillHeight: true
|
||
}
|
||
}
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
spacing: 20 * DefaultStyle.dp
|
||
Layout.rightMargin: 44 * DefaultStyle.dp
|
||
Layout.topMargin: 20 * DefaultStyle.dp
|
||
Layout.leftMargin: 64 * DefaultStyle.dp
|
||
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
spacing: 0
|
||
RowLayout {
|
||
Layout.fillWidth: true
|
||
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("Audio")
|
||
Layout.leftMargin: 9
|
||
font: Typography.p2l
|
||
color: DefaultStyle.main2_600
|
||
Layout.fillWidth: true
|
||
}
|
||
}
|
||
ComboSetting {
|
||
Layout.fillWidth: true
|
||
Layout.topMargin: 12 * DefaultStyle.dp
|
||
Layout.preferredWidth: parent.width
|
||
entries: SettingsCpp.playbackDevices
|
||
propertyName: "playbackDevice"
|
||
propertyOwner: SettingsCpp
|
||
}
|
||
Slider {
|
||
id: speakerVolume
|
||
Layout.fillWidth: true
|
||
Layout.topMargin: 22 * DefaultStyle.dp
|
||
from: 0.0
|
||
to: 1.0
|
||
value: SettingsCpp.playbackGain
|
||
onMoved: {
|
||
SettingsCpp.lSetPlaybackGain(value)
|
||
}
|
||
}
|
||
Item {
|
||
Layout.fillHeight: true
|
||
}
|
||
}
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
spacing: 0
|
||
RowLayout {
|
||
Layout.fillWidth: true
|
||
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: Typography.p2l
|
||
color: DefaultStyle.main2_600
|
||
Layout.fillWidth: true
|
||
Layout.leftMargin: 9
|
||
}
|
||
}
|
||
ComboSetting {
|
||
Layout.fillWidth: true
|
||
Layout.topMargin: 12 * DefaultStyle.dp
|
||
Layout.bottomMargin: 22 * DefaultStyle.dp
|
||
Layout.preferredWidth: parent.width
|
||
entries: SettingsCpp.captureDevices
|
||
propertyName: "captureDevice"
|
||
propertyOwner: SettingsCpp
|
||
}
|
||
Slider {
|
||
id: microVolume
|
||
Layout.fillWidth: true
|
||
Layout.bottomMargin: 19 * DefaultStyle.dp
|
||
from: 0.0
|
||
to: 1.0
|
||
value: SettingsCpp.captureGain
|
||
onMoved: {
|
||
SettingsCpp.lSetCaptureGain(value)
|
||
}
|
||
}
|
||
Timer {
|
||
id: audioTestSliderTimer
|
||
running: false
|
||
interval: 50
|
||
repeat: true
|
||
onTriggered: SettingsCpp.updateMicVolume()
|
||
}
|
||
Slider {
|
||
id: audioTestSlider
|
||
visible: !SettingsCpp.isInCall
|
||
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: DefaultStyle.grey_850
|
||
|
||
Rectangle {
|
||
width: audioTestSlider.visualPosition * parent.width
|
||
height: parent.height
|
||
gradient: Gradient {
|
||
orientation: Gradient.Horizontal
|
||
GradientStop { position: 0.0; color: DefaultStyle.vue_meter_light_green }
|
||
GradientStop { position: 1.0; color: DefaultStyle.vue_meter_dark_green }
|
||
}
|
||
radius: 2 * DefaultStyle.dp
|
||
}
|
||
}
|
||
handle: Item {visible: false}
|
||
}
|
||
Item {
|
||
Layout.fillHeight: true
|
||
}
|
||
}
|
||
ColumnLayout {
|
||
Layout.fillWidth: true
|
||
spacing: 0
|
||
RowLayout {
|
||
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: Typography.p2l
|
||
color: DefaultStyle.main2_600
|
||
Layout.fillWidth: true
|
||
Layout.leftMargin: 9
|
||
}
|
||
}
|
||
ComboSetting {
|
||
Layout.fillWidth: true
|
||
Layout.topMargin: 12 * DefaultStyle.dp
|
||
Layout.preferredWidth: parent.width
|
||
entries: SettingsCpp.videoDevices
|
||
propertyName: "videoDevice"
|
||
propertyOwner: SettingsCpp
|
||
}
|
||
Item {
|
||
Layout.fillHeight: true
|
||
}
|
||
}
|
||
Connections {
|
||
target: SettingsCpp
|
||
function onMicVolumeChanged(volume) { audioTestSlider.value = volume}
|
||
}
|
||
Component.onCompleted: {
|
||
SettingsCpp.accessCallSettings()
|
||
audioTestSliderTimer.running = true
|
||
}
|
||
Component.onDestruction: {
|
||
audioTestSliderTimer.running = false
|
||
SettingsCpp.closeCallSettings()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|