mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-04-17 20:08:28 +00:00
235 lines
7.9 KiB
QML
235 lines
7.9 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 var chatGui: callHistoryGui?.core.chatGui
|
|
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
|
|
|
|
signal conferenceChatDisplayRequested
|
|
signal conferenceCallHistoryDisplayRequested
|
|
|
|
ColumnLayout {
|
|
spacing: Utils.getSizeWithScreenRatio(13)
|
|
Layout.alignment: Qt.AlignHCenter
|
|
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)
|
|
Layout.alignment: Qt.AlignHCenter
|
|
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 != "" && !mainItem.isConference
|
|
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 && !confWithChatLayout.visible
|
|
Layout.alignment: Qt.AlignHCenter
|
|
//: "Rejoindre la réunion"
|
|
text: qsTr("meeting_info_join_title")
|
|
style: ButtonStyle.grey
|
|
onClicked: {
|
|
if (mainItem.conferenceInfo) {
|
|
var callsWindow = UtilsCpp.getOrCreateCallsWindow();
|
|
callsWindow.setupConference(mainItem.conferenceInfo);
|
|
UtilsCpp.smartShowWindow(callsWindow);
|
|
}
|
|
}
|
|
}
|
|
RowLayout {
|
|
id: confWithChatLayout
|
|
visible: mainItem.isConference && !SettingsCpp.disableMeetingsFeature && mainItem.chatGui !== null
|
|
Layout.alignment: Qt.AlignHCenter
|
|
spacing: Utils.getSizeWithScreenRatio(72)
|
|
// Layout.fillWidth: true
|
|
Layout.preferredHeight: childrenRect.height
|
|
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.videoconference
|
|
//: "Join"
|
|
label: qsTr("meeting_info_join_title")
|
|
button.onClicked: if (mainItem.conferenceInfo) {
|
|
var callsWindow = UtilsCpp.getOrCreateCallsWindow();
|
|
callsWindow.setupConference(mainItem.conferenceInfo);
|
|
UtilsCpp.smartShowWindow(callsWindow);
|
|
}
|
|
}
|
|
LabelButton {
|
|
visible: !SettingsCpp.disableChatFeature
|
|
button.checkable: true
|
|
width: Utils.getSizeWithScreenRatio(56)
|
|
height: Utils.getSizeWithScreenRatio(56)
|
|
button.icon.width: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.height: Utils.getSizeWithScreenRatio(24)
|
|
button.icon.source: button.checked ? AppIcons.callList : AppIcons.chatTeardropText
|
|
label: button.checked ?
|
|
//: "Call history"
|
|
qsTr("contact_call_history_action") :
|
|
//: "Conversation"
|
|
qsTr("contact_conversation_action")
|
|
button.onCheckedChanged: {
|
|
if (button.checked)
|
|
mainItem.conferenceChatDisplayRequested();
|
|
else
|
|
mainItem.conferenceCallHistoryDisplayRequested();
|
|
}
|
|
}
|
|
}
|
|
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)
|
|
}
|
|
}
|