summary refs log tree commit diff
path: root/resources/qml/voip/CallInviteBar.qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml/voip/CallInviteBar.qml')
-rw-r--r--resources/qml/voip/CallInviteBar.qml128
1 files changed, 128 insertions, 0 deletions
diff --git a/resources/qml/voip/CallInviteBar.qml b/resources/qml/voip/CallInviteBar.qml
new file mode 100644
index 00000000..e349332f
--- /dev/null
+++ b/resources/qml/voip/CallInviteBar.qml
@@ -0,0 +1,128 @@
+import "../"
+import QtQuick 2.9
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import im.nheko 1.0
+
+Rectangle {
+    visible: CallManager.haveCallInvite
+    color: "#2ECC71"
+    implicitHeight: visible ? rowLayout.height + 8 : 0
+
+    Component {
+        id: devicesDialog
+
+        CallDevices {
+        }
+
+    }
+
+    Component {
+        id: deviceError
+
+        DeviceError {
+        }
+
+    }
+
+    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 {
+            Layout.leftMargin: 8
+            font.pointSize: fontMetrics.font.pointSize * 1.1
+            text: CallManager.callParty
+            color: "#000000"
+        }
+
+        Image {
+            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
+            text: CallManager.isVideo ? qsTr("Video Call") : qsTr("Voice Call")
+            color: "#000000"
+        }
+
+        Item {
+            Layout.fillWidth: true
+        }
+
+        ImageButton {
+            Layout.rightMargin: 16
+            width: 20
+            height: 20
+            buttonTextColor: "#000000"
+            image: ":/icons/icons/ui/settings.png"
+            hoverEnabled: true
+            ToolTip.visible: hovered
+            ToolTip.text: qsTr("Devices")
+            onClicked: {
+                CallManager.refreshDevices();
+                var dialog = devicesDialog.createObject(timelineRoot);
+                dialog.open();
+            }
+        }
+
+        Button {
+            Layout.rightMargin: 4
+            icon.source: CallManager.isVideo ? "qrc:/icons/icons/ui/video-call.png" : "qrc:/icons/icons/ui/place-call.png"
+            text: qsTr(" Accept ")
+            palette: colors
+            onClicked: {
+                if (CallManager.mics.length == 0) {
+                    var dialog = deviceError.createObject(timelineRoot, {
+                        "errorString": qsTr("No microphone found."),
+                        "image": ":/icons/icons/ui/place-call.png"
+                    });
+                    dialog.open();
+                    return ;
+                } else if (!CallManager.mics.includes(Settings.microphone)) {
+                    var dialog = deviceError.createObject(timelineRoot, {
+                        "errorString": qsTr("Unknown microphone: ") + Settings.microphone,
+                        "image": ":/icons/icons/ui/place-call.png"
+                    });
+                    dialog.open();
+                    return ;
+                }
+                if (CallManager.isVideo && CallManager.cameras.length > 0 && !CallManager.cameras.includes(Settings.camera)) {
+                    var dialog = deviceError.createObject(timelineRoot, {
+                        "errorString": qsTr("Unknown camera: ") + Settings.camera,
+                        "image": ":/icons/icons/ui/video-call.png"
+                    });
+                    dialog.open();
+                    return ;
+                }
+                CallManager.acceptInvite();
+            }
+        }
+
+        Button {
+            Layout.rightMargin: 16
+            icon.source: "qrc:/icons/icons/ui/end-call.png"
+            text: qsTr(" Decline ")
+            palette: colors
+            onClicked: {
+                CallManager.hangUp();
+            }
+        }
+
+    }
+
+}