mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
184 lines
6.5 KiB
QML
184 lines
6.5 KiB
QML
import QtQuick
|
|
import QtQuick.Effects
|
|
import QtQuick.Layouts
|
|
import QtQuick.Controls.Basic as Control
|
|
import Linphone
|
|
import UtilsCpp
|
|
import SettingsCpp
|
|
import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
|
|
import "qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js" as Utils
|
|
|
|
ColumnLayout {
|
|
id: mainItem
|
|
spacing: Utils.getSizeWithScreenRatio(30)
|
|
|
|
property var callHistoryGui
|
|
|
|
property FriendGui contact
|
|
property var conferenceInfo: callHistoryGui?.core.conferenceInfo
|
|
property bool isConference: conferenceInfo != undefined && conferenceInfo != null
|
|
property string contactAddress: specificAddress != "" ? specificAddress : contact && contact.core.defaultAddress || ""
|
|
property var computedContactNameObj: UtilsCpp.getDisplayName(contactAddress)
|
|
property string computedContactName: computedContactNameObj ? computedContactNameObj.value: ""
|
|
property string contactName: contact
|
|
? contact.core.fullName
|
|
: callHistoryGui
|
|
? callHistoryGui.core.displayName
|
|
: computedContactName
|
|
|
|
// Set this property to get the security informations
|
|
// for a specific address and not for the entire contact
|
|
property string specificAddress: ""
|
|
|
|
property alias buttonContent: rightButton.data
|
|
property alias detailContent: detailControl.data
|
|
|
|
ColumnLayout {
|
|
spacing: Utils.getSizeWithScreenRatio(13)
|
|
Item {
|
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(360)
|
|
Layout.preferredHeight: detailAvatar.height
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Avatar {
|
|
id: detailAvatar
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: Utils.getSizeWithScreenRatio(100)
|
|
height: Utils.getSizeWithScreenRatio(100)
|
|
contact: mainItem.contact || null
|
|
isConference: !!mainItem.conferenceInfo
|
|
displayNameVal: mainItem.contactName
|
|
secured: securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
|
}
|
|
Item {
|
|
id: rightButton
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: detailAvatar.verticalCenter
|
|
anchors.rightMargin: Utils.getSizeWithScreenRatio(20)
|
|
width: Utils.getSizeWithScreenRatio(30)
|
|
height: Utils.getSizeWithScreenRatio(30)
|
|
}
|
|
}
|
|
ColumnLayout {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(360)
|
|
spacing: Utils.getSizeWithScreenRatio(5)
|
|
|
|
ColumnLayout {
|
|
spacing: Utils.getSizeWithScreenRatio(2)
|
|
Text {
|
|
Layout.preferredWidth: implicitWidth
|
|
Layout.alignment: Qt.AlignHCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
elide: Text.ElideRight
|
|
text: detailAvatar.displayNameVal
|
|
maximumLineCount: 1
|
|
font {
|
|
pixelSize: Typography.p1.pixelSize
|
|
weight: Typography.p1.weight
|
|
}
|
|
}
|
|
Text {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.fillWidth: true
|
|
horizontalAlignment: Text.AlignHCenter
|
|
visible: mainItem.specificAddress != ""
|
|
text: SettingsCpp.hideSipAddresses ? UtilsCpp.getUsername(mainItem.specificAddress) : mainItem.specificAddress
|
|
elide: Text.ElideMiddle
|
|
maximumLineCount: 1
|
|
font {
|
|
pixelSize: Utils.getSizeWithScreenRatio(12)
|
|
weight: Utils.getSizeWithScreenRatio(300)
|
|
}
|
|
}
|
|
}
|
|
Text {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
Layout.fillWidth: true
|
|
visible: mainItem.contact
|
|
text: contact ? contact.core.presenceStatus : ""
|
|
color: contact ? contact.core.presenceColor : 'transparent'
|
|
font {
|
|
pixelSize: Utils.getSizeWithScreenRatio(12)
|
|
weight: Utils.getSizeWithScreenRatio(300)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
MediumButton {
|
|
visible: mainItem.isConference && !SettingsCpp.disableMeetingsFeature
|
|
Layout.alignment: Qt.AlignHCenter
|
|
//: "Rejoindre la réunion"
|
|
text: qsTr("meeting_info_join_title")
|
|
style: ButtonStyle.grey
|
|
onClicked: {
|
|
if (mainItem.conferenceInfo) {
|
|
var callsWindow = UtilsCpp.getCallsWindow()
|
|
callsWindow.setupConference(mainItem.conferenceInfo)
|
|
UtilsCpp.smartShowWindow(callsWindow)
|
|
}
|
|
}
|
|
}
|
|
RowLayout {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
spacing: Utils.getSizeWithScreenRatio(72)
|
|
Layout.fillWidth: true
|
|
Layout.preferredHeight: childrenRect.height
|
|
visible: !mainItem.isConference
|
|
LabelButton {
|
|
width: Utils.getSizeWithScreenRatio(56)
|
|
height: Utils.getSizeWithScreenRatio(56)
|
|
button.icon.width: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.height: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.source: AppIcons.phone
|
|
//: "Appel"
|
|
label: qsTr("contact_call_action")
|
|
button.onClicked: {
|
|
if (mainItem.specificAddress === "") mainWindow.startCallWithContact(mainItem.contact, false, mainItem)
|
|
else UtilsCpp.createCall(mainItem.specificAddress)
|
|
}
|
|
}
|
|
LabelButton {
|
|
visible: !SettingsCpp.disableChatFeature
|
|
width: Utils.getSizeWithScreenRatio(56)
|
|
height: Utils.getSizeWithScreenRatio(56)
|
|
button.icon.width: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.height: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.source: AppIcons.chatTeardropText
|
|
//: "Message"
|
|
label: qsTr("contact_message_action")
|
|
button.onClicked: {
|
|
console.debug("[CallHistoryLayout.qml] Open conversation")
|
|
if (mainItem.specificAddress === "") {
|
|
mainWindow.sendMessageToContact(mainItem.contact)
|
|
}
|
|
else {
|
|
console.log("specific address", mainItem.specificAddress)
|
|
mainWindow.displayChatPage(mainItem.specificAddress)
|
|
}
|
|
}
|
|
}
|
|
LabelButton {
|
|
visible: SettingsCpp.videoEnabled
|
|
width: Utils.getSizeWithScreenRatio(56)
|
|
height: Utils.getSizeWithScreenRatio(56)
|
|
button.icon.width: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.height: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.source: AppIcons.videoCamera
|
|
//: "Appel Video"
|
|
label: qsTr("contact_video_call_action")
|
|
button.onClicked: {
|
|
if (mainItem.specificAddress === "") mainWindow.startCallWithContact(mainItem.contact, true, mainItem)
|
|
else UtilsCpp.createCall(mainItem.specificAddress, {'localVideoEnabled': true})
|
|
}
|
|
}
|
|
}
|
|
ColumnLayout {
|
|
id: detailControl
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.topMargin: Utils.getSizeWithScreenRatio(30)
|
|
}
|
|
}
|