mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-27 00:48:08 +00:00
168 lines
4.7 KiB
QML
168 lines
4.7 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Effects
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls as Control
|
|
import Linphone
|
|
import UtilsCpp 1.0
|
|
|
|
ColumnLayout {
|
|
id: mainItem
|
|
spacing: 30 * DefaultStyle.dp
|
|
|
|
property FriendGui contact
|
|
property string contactAddress: contact && contact.core.defaultAddress || ""
|
|
property string contactName: contact && contact.core.displayName || ""
|
|
|
|
property bool addressVisible: true
|
|
|
|
property alias buttonContent: rightButton.data
|
|
property alias detailContent: detailControl.data
|
|
|
|
component LabelButton: ColumnLayout {
|
|
id: labelButton
|
|
// property alias image: buttonImg
|
|
property alias button: button
|
|
property string label
|
|
spacing: 8 * DefaultStyle.dp
|
|
Button {
|
|
id: button
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.preferredWidth: 56 * DefaultStyle.dp
|
|
Layout.preferredHeight: 56 * DefaultStyle.dp
|
|
topPadding: 16 * DefaultStyle.dp
|
|
bottomPadding: 16 * DefaultStyle.dp
|
|
leftPadding: 16 * DefaultStyle.dp
|
|
rightPadding: 16 * DefaultStyle.dp
|
|
background: Rectangle {
|
|
anchors.fill: parent
|
|
radius: 40 * DefaultStyle.dp
|
|
color: DefaultStyle.main2_200
|
|
}
|
|
}
|
|
Text {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
text: labelButton.label
|
|
font {
|
|
pixelSize: 14 * DefaultStyle.dp
|
|
weight: 400 * DefaultStyle.dp
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
Layout.preferredWidth: mainItem.implicitWidth
|
|
Layout.preferredHeight: detailAvatar.height
|
|
// Layout.fillWidth: true
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Avatar {
|
|
// TODO : find friend and pass contact argument
|
|
id: detailAvatar
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: 100 * DefaultStyle.dp
|
|
height: 100 * DefaultStyle.dp
|
|
contact: mainItem.contact || null
|
|
address: mainItem.contactAddress || mainItem.contactName
|
|
}
|
|
Item {
|
|
id: rightButton
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: detailAvatar.verticalCenter
|
|
anchors.rightMargin: 20 * DefaultStyle.dp
|
|
width: 30 * DefaultStyle.dp
|
|
height: 30 * DefaultStyle.dp
|
|
}
|
|
}
|
|
ColumnLayout {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
// Layout.fillWidth: true
|
|
Text {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
text: mainItem.contactName
|
|
font {
|
|
pixelSize: 14 * DefaultStyle.dp
|
|
weight: 400 * DefaultStyle.dp
|
|
capitalization: Font.Capitalize
|
|
}
|
|
}
|
|
Text {
|
|
id: contactAddress
|
|
property var mode : contact ? contact.core.consolidatedPresence : -1
|
|
Layout.alignment: Qt.AlignHCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
visible: mainItem.addressVisible
|
|
text: mode === LinphoneEnums.ConsolidatedPresence.Online
|
|
? qsTr("En ligne")
|
|
: mode === LinphoneEnums.ConsolidatedPresence.Busy
|
|
? qsTr("Occupé")
|
|
: mode === LinphoneEnums.ConsolidatedPresence.DoNotDisturb
|
|
? qsTr("Ne pas déranger")
|
|
: qsTr("Hors ligne")
|
|
color: mode === LinphoneEnums.ConsolidatedPresence.Online
|
|
? DefaultStyle.success_500main
|
|
: mode === LinphoneEnums.ConsolidatedPresence.Busy
|
|
? DefaultStyle.warning_600
|
|
: mode === LinphoneEnums.ConsolidatedPresence.DoNotDisturb
|
|
? DefaultStyle.danger_500main
|
|
: DefaultStyle.main2_500main
|
|
font {
|
|
pixelSize: 12 * DefaultStyle.dp
|
|
weight: 300 * DefaultStyle.dp
|
|
}
|
|
}
|
|
Text {
|
|
// connection status
|
|
}
|
|
}
|
|
Item {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.preferredWidth: mainItem.implicitWidth
|
|
Layout.preferredHeight: childrenRect.height
|
|
LabelButton {
|
|
anchors.left: parent.left
|
|
width: 56 * DefaultStyle.dp
|
|
height: 56 * DefaultStyle.dp
|
|
button.icon.width: 24 * DefaultStyle.dp
|
|
button.icon.height: 24 * DefaultStyle.dp
|
|
button.icon.source: AppIcons.phone
|
|
label: qsTr("Appel")
|
|
button.onClicked: {
|
|
var addr = UtilsCpp.generateLinphoneSipAddress(mainItem.contactAddress)
|
|
UtilsCpp.createCall(addr)
|
|
}
|
|
}
|
|
LabelButton {
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: 56 * DefaultStyle.dp
|
|
height: 56 * DefaultStyle.dp
|
|
button.icon.width: 24 * DefaultStyle.dp
|
|
button.icon.height: 24 * DefaultStyle.dp
|
|
button.icon.source: AppIcons.chatTeardropText
|
|
label: qsTr("Message")
|
|
button.onClicked: console.debug("[CallPage.qml] TODO : open conversation")
|
|
}
|
|
LabelButton {
|
|
id: videoCall
|
|
anchors.right: parent.right
|
|
width: 56 * DefaultStyle.dp
|
|
height: 56 * DefaultStyle.dp
|
|
button.icon.width: 24 * DefaultStyle.dp
|
|
button.icon.height: 24 * DefaultStyle.dp
|
|
button.icon.source: AppIcons.videoCamera
|
|
label: qsTr("Appel Video")
|
|
button.onClicked: {
|
|
var addr = UtilsCpp.generateLinphoneSipAddress(mainItem.contactAddress)
|
|
UtilsCpp.createCall(addr)
|
|
console.log("[CallPage.qml] TODO : enable video")
|
|
}
|
|
}
|
|
}
|
|
ColumnLayout {
|
|
id: detailControl
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.topMargin: 30 * DefaultStyle.dp
|
|
}
|
|
}
|