Skip to content
Snippets Groups Projects
CallInviteBar.qml 3.38 KiB
Newer Older
  • Learn to ignore specific revisions
  • import QtQuick 2.9
    import QtQuick.Controls 2.3
    import QtQuick.Dialogs 1.3
    import QtQuick.Layouts 1.2
    import im.nheko 1.0
    import "../"
    
    Rectangle {
    
        visible: CallManager.haveCallInvite
        color: "#2ECC71"
        implicitHeight: visible ? rowLayout.height + 8 : 0
    
        MessageDialog {
            id: warningDialog
            icon: StandardIcon.Warning
        }
    
    
        Component {
            id: devicesDialog
    
            CallDevices {
            }
        }
    
    
        RowLayout {
            id: rowLayout
    
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.verticalCenter: parent.verticalCenter
            anchors.leftMargin: 8
    
            Avatar {
                width: avatarSize
                height: avatarSize
                url: CallManager.callPartyAvatarUrl.replace("mxc://", "image://MxcImage/")
                displayName: CallManager.callParty
            }
    
            Label {
    
    trilene's avatar
    trilene committed
                Layout.leftMargin: 8
    
                font.pointSize: fontMetrics.font.pointSize * 1.1
    
    trilene's avatar
    trilene committed
                text: CallManager.callParty
    
    trilene's avatar
    trilene committed
                color: colors.windowText
    
    trilene's avatar
    trilene committed
                Layout.leftMargin: 4
    
                Layout.preferredWidth: 24
                Layout.preferredHeight: 24
                source: CallManager.isVideo ? "qrc:/icons/icons/ui/video-call.png" : "qrc:/icons/icons/ui/place-call.png"
            }
    
            Label {
                font.pointSize: fontMetrics.font.pointSize * 1.1
    
    trilene's avatar
    trilene committed
                text: CallManager.isVideo ? qsTr("Video Call") : qsTr("Voice Call")
    
    trilene's avatar
    trilene committed
                color: colors.windowText
    
            }
    
            Item {
                Layout.fillWidth: true
            }
    
    
            ImageButton {
                width: 24
                height: 24
                buttonTextColor: "#000000"
                image: ":/icons/icons/ui/settings.png"
                hoverEnabled: true
                ToolTip.visible: hovered
    
    trilene's avatar
    trilene committed
                ToolTip.text: qsTr("Devices")
    
                onClicked: {
                      var dialog = devicesDialog.createObject(timelineRoot);
                      dialog.show();
                }
            }
    
            Item {
                implicitWidth: 8
            }
    
    
            Button {
                icon.source: CallManager.isVideo ? "qrc:/icons/icons/ui/video-call.png" : "qrc:/icons/icons/ui/place-call.png"
                palette: colors
                text: qsTr("Accept")
                onClicked: {
                    if (CallManager.mics.length == 0) {
    
    trilene's avatar
    trilene committed
                        warningDialog.text = qsTr("No microphone found.");
    
                        warningDialog.open();
                        return;
                    }
                    else if (!CallManager.mics.includes(Settings.microphone)) {
    
    trilene's avatar
    trilene committed
                        warningDialog.text = qsTr("Unknown microphone: ") + Settings.microphone;
    
                        warningDialog.open();
                        return;
                    }
                    if (CallManager.isVideo && CallManager.cameras.length > 0 && !CallManager.cameras.includes(Settings.camera)) {
    
    trilene's avatar
    trilene committed
                        warningDialog.text = qsTr("Unknown camera: ") + Settings.camera;
    
                        warningDialog.open();
                        return;
                    }
                    CallManager.acceptInvite();
                }
            }
    
            Item {
    
                implicitWidth: 4
    
            }
    
            Button {
                icon.source: "qrc:/icons/icons/ui/end-call.png"
                palette: colors
                text: qsTr("Decline")
                onClicked: {
                    CallManager.hangUp();
                }
            }
    
            Item {
                implicitWidth: 16
            }
        }
    }