mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
126 lines
3.7 KiB
QML
126 lines
3.7 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts as Layout
|
|
import QtQuick.Effects
|
|
import QtQml.Models
|
|
import QtQuick.Controls as Control
|
|
import Linphone
|
|
import EnumsToStringCpp 1.0
|
|
import UtilsCpp 1.0
|
|
import SettingsCpp 1.0
|
|
// =============================================================================
|
|
|
|
Item {
|
|
id: mainItem
|
|
property CallGui call
|
|
property ConferenceGui conference: call && call.core.conference
|
|
property bool callTerminatedByUser: false
|
|
readonly property var callState: call && call.core.state || undefined
|
|
property int conferenceLayout: call && call.core.conferenceVideoLayout || 0
|
|
// property int participantDeviceCount: conference ? conference.core.participantDeviceCount : -1
|
|
// onParticipantDeviceCountChanged: {
|
|
// setConferenceLayout()
|
|
// }
|
|
Component.onCompleted: setConferenceLayout()
|
|
onConferenceLayoutChanged: {
|
|
console.log("CallLayout change : " +conferenceLayout)
|
|
setConferenceLayout()
|
|
}
|
|
onCallStateChanged: {
|
|
if( callState === LinphoneEnums.CallState.Error) {
|
|
centerLayout.currentIndex = 1
|
|
}
|
|
// else if( callState === LinphoneEnums.CallState.End) {
|
|
// callTerminatedText.visible = true
|
|
// }
|
|
}
|
|
// onCallChanged: callTerminatedText.visible = false
|
|
|
|
function setConferenceLayout() {
|
|
callLayout.sourceComponent = undefined // unload old view before opening the new view to avoid conflicts in Video UI.
|
|
callLayout.sourceComponent = mainItem.conferenceLayout == LinphoneEnums.ConferenceLayout.ActiveSpeaker
|
|
? activeSpeakerComponent
|
|
: gridComponent
|
|
}
|
|
|
|
Text {
|
|
id: callTerminatedText
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 25 * DefaultStyle.dp
|
|
z: 1
|
|
visible: callState === LinphoneEnums.CallState.End
|
|
text: mainItem.conference
|
|
? qsTr("Vous avez quitté la conférence")
|
|
: mainItem.callTerminatedByUser
|
|
? qsTr("Vous avez terminé l'appel")
|
|
: qsTr("Votre correspondant a terminé l'appel")
|
|
color: DefaultStyle.grey_0
|
|
font {
|
|
pixelSize: 22 * DefaultStyle.dp
|
|
weight: 300 * DefaultStyle.dp
|
|
}
|
|
}
|
|
|
|
Layout.StackLayout {
|
|
id: centerLayout
|
|
currentIndex: 0
|
|
anchors.fill: parent
|
|
Loader{
|
|
id: callLayout
|
|
Layout.Layout.fillWidth: true
|
|
Layout.Layout.fillHeight: true
|
|
sourceComponent: mainItem.participantDeviceCount === 0
|
|
? waitingForOthersComponent
|
|
: activeSpeakerComponent
|
|
}
|
|
Layout.ColumnLayout {
|
|
id: userNotFoundLayout
|
|
Layout.Layout.preferredWidth: parent.width
|
|
Layout.Layout.preferredHeight: parent.height
|
|
Layout.Layout.alignment: Qt.AlignCenter
|
|
Text {
|
|
text: mainItem.call ? mainItem.call.core.lastErrorMessage : ""
|
|
Layout.Layout.alignment: Qt.AlignCenter
|
|
color: DefaultStyle.grey_0
|
|
font.pixelSize: 40 * DefaultStyle.dp
|
|
}
|
|
}
|
|
}
|
|
Component{
|
|
id: activeSpeakerComponent
|
|
ActiveSpeakerLayout{
|
|
Layout.Layout.fillWidth: true
|
|
Layout.Layout.fillHeight: true
|
|
call: mainItem.call
|
|
}
|
|
}
|
|
Component{
|
|
id: gridComponent
|
|
GridLayout{
|
|
Layout.Layout.fillWidth: true
|
|
Layout.Layout.fillHeight: true
|
|
call: mainItem.call
|
|
}
|
|
}
|
|
}
|
|
// TODO : waitingForParticipant
|
|
// ColumnLayout {
|
|
// id: waitingForParticipant
|
|
// Text {
|
|
// text: qsTr("Waiting for other participants...")
|
|
// color: DefaultStyle.frey_0
|
|
// font {
|
|
// pixelSize: 30 * DefaultStyle.dp
|
|
// weight: 300 * DefaultStyle.dp
|
|
// }
|
|
// }
|
|
// Button {
|
|
// inversedColors: true
|
|
// text: qsTr("Share invitation")
|
|
// icon.source: AppIcons.shareNetwork
|
|
// color: DefaultStyle.main2_400
|
|
// Layout.preferredWidth: 206 * DefaultStyle.dp
|
|
// Layout.preferredHeight: 47 * DefaultStyle.dp
|
|
// }
|
|
// }
|
|
|