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();
                }
            }
        }
    }
}