Skip to content
Snippets Groups Projects
PlaceCall.qml 3.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • trilene's avatar
    trilene committed
    import QtQuick 2.3
    import QtQuick.Controls 2.3
    import QtQuick.Dialogs 1.3
    import QtQuick.Layouts 1.2
    import im.nheko 1.0
    import "../"
    
    ApplicationWindow {
    
        flags: Qt.Dialog
        modality: Qt.ApplicationModal
        palette: colors
        width: columnLayout.implicitWidth
        height: columnLayout.implicitHeight
    
        MessageDialog {
            id: warningDialog
            icon: StandardIcon.Warning
        }
    
        ColumnLayout {
    
            id: columnLayout
            spacing: 16
    
            RowLayout {
    
                Layout.topMargin: 16
                Layout.leftMargin: 8
    
                Label {
                    font.pointSize: fontMetrics.font.pointSize * 1.1
                    text: "Place a call to " + TimelineManager.timeline.roomName + "?"
                }
    
                Item {
                    Layout.fillWidth: true
                }
            }
    
            RowLayout {
    
                id: rowLayout
                Layout.leftMargin: 8
                Layout.rightMargin: 8
                Layout.bottomMargin: 16
                spacing: 16
    
                function validateMic() {
                    if (CallManager.mics.length == 0) {
                        warningDialog.text = "No microphone found.";
                        warningDialog.open();
                        return false;
                    }
                    else if (!CallManager.mics.includes(Settings.microphone)) {
                        warningDialog.text = "Unknown microphone: " + Settings.microphone;
                        warningDialog.open();
                        return false;
                    }
                    return true;
                }
    
                Avatar {
                    width: avatarSize
                    height: avatarSize
                    url: TimelineManager.timeline.roomAvatarUrl.replace("mxc://", "image://MxcImage/")
                    displayName: TimelineManager.timeline.roomName
                }
    
                Button {
                    text: qsTr("Voice")
                    icon.source: "qrc:/icons/icons/ui/place-call.png"
                    onClicked: {
                        if (rowLayout.validateMic()) {
                            CallManager.sendInvite(TimelineManager.timeline.roomId(), false);
                            close();
                        }
                    }
                }
    
                Button {
                    visible: CallManager.cameras.length > 0
                    text: qsTr("Video")
                    icon.source: "qrc:/icons/icons/ui/video-call.png"
                    onClicked: {
                        if (rowLayout.validateMic()) {
                            if (!CallManager.cameras.includes(Settings.camera)) {
                                warningDialog.text = "Unknown camera: " + Settings.camera;
                                warningDialog.open();
                                return;
                            }
                            CallManager.sendInvite(TimelineManager.timeline.roomId(), true);
                            close();
                        }
                    }
                }
    
                Button {
                    palette: colors
                    text: qsTr("Cancel")
                    onClicked: {
                        close();
                    }
                }
            }
        }
    }