/* * Copyright (C) 2020 by Savoir-faire Linux * Author: Mingrui Zhang * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.14 import QtQuick.Controls 2.14 import QtQuick.Layouts 1.14 import QtQuick.Controls.Universal 2.12 import net.jami.Models 1.0 import "../../commoncomponents" Rectangle { id: outgoingCallPageRect property int buttonPreferredSize: 50 property string callStatusPresentation: "outgoing" property string contactImgSource: "" property string bestName: "Best Name" property string bestId: "Best Id" signal callCancelButtonIsClicked function updateUI(accountId, convUid) { contactImgSource = "data:image/png;base64," + ClientWrapper.utilsAdaptor.getContactImageString( accountId, convUid) bestName = ClientWrapper.utilsAdaptor.getBestName(accountId, convUid) var id = ClientWrapper.utilsAdaptor.getBestId(accountId, convUid) bestId = (bestName !== id) ? id : "" } anchors.fill: parent color: "black" /* * Prevent right click propagate to VideoCallPage. */ MouseArea { anchors.fill: parent propagateComposedEvents: false acceptedButtons: Qt.RightButton } ColumnLayout { id: outgoingCallPageRectColumnLayout anchors.fill: parent Image { id: contactImg Layout.alignment: Qt.AlignCenter Layout.preferredWidth: 100 Layout.preferredHeight: 100 fillMode: Image.PreserveAspectFit source: contactImgSource asynchronous: true } Rectangle { id: outgoingCallPageTextRect Layout.alignment: Qt.AlignCenter Layout.topMargin: 5 Layout.preferredWidth: outgoingCallPageRect.width Layout.preferredHeight: jamiBestNameText.height + jamiBestIdText.height + callStatusText.height + spinnerImage.height + 20 color: "transparent" ColumnLayout { id: outgoingCallPageTextRectColumnLayout Text { id: jamiBestNameText Layout.alignment: Qt.AlignCenter Layout.preferredWidth: outgoingCallPageTextRect.width Layout.preferredHeight: 50 font.pointSize: JamiTheme.textFontSize + 3 horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter text: textMetricsjamiBestNameText.elidedText color: "white" TextMetrics { id: textMetricsjamiBestNameText font: jamiBestNameText.font text: bestName elideWidth: outgoingCallPageTextRect.width - 50 elide: Qt.ElideMiddle } } Text { id: jamiBestIdText Layout.alignment: Qt.AlignCenter Layout.preferredWidth: outgoingCallPageTextRect.width Layout.preferredHeight: 30 font.pointSize: JamiTheme.textFontSize horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter text: textMetricsjamiBestIdText.elidedText color: Qt.lighter("white", 1.5) TextMetrics { id: textMetricsjamiBestIdText font: jamiBestIdText.font text: bestId elideWidth: outgoingCallPageTextRect.width - 50 elide: Qt.ElideMiddle } } AnimatedImage { id: spinnerImage Layout.alignment: Qt.AlignCenter Layout.preferredWidth: 20 Layout.preferredHeight: 5 source: "qrc:/images/waiting.gif" } Text { id: callStatusText Layout.alignment: Qt.AlignCenter Layout.preferredWidth: outgoingCallPageTextRect.width Layout.preferredHeight: 30 font.pointSize: JamiTheme.textFontSize horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter text: callStatusPresentation + "..." color: Qt.lighter("white", 1.5) } } } ColumnLayout { id: callCancelButtonColumnLayout Layout.alignment: Qt.AlignCenter HoverableButton { id: callCancelButton Layout.alignment: Qt.AlignCenter Layout.preferredWidth: buttonPreferredSize Layout.preferredHeight: buttonPreferredSize backgroundColor: JamiTheme.declineButtonRed onEnterColor: JamiTheme.declineButtonHoverRed onPressColor: JamiTheme.declineButtonPressedRed onReleaseColor: JamiTheme.declineButtonHoverRed onExitColor: JamiTheme.declineButtonRed buttonImageHeight: buttonPreferredSize / 2 buttonImageWidth: buttonPreferredSize / 2 source: "qrc:/images/icons/ic_close_white_24dp.png" radius: 30 toolTipText: qsTr("Cancel the call") onClicked: { outgoingCallPageRect.callCancelButtonIsClicked() } } Text { id: cancelText Layout.alignment: Qt.AlignCenter font.pointSize: JamiTheme.textFontSize - 2 text: qsTr("Cancel") } } } }