summary refs log tree commit diff
path: root/resources/qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml')
-rw-r--r--resources/qml/ImageButton.qml5
-rw-r--r--resources/qml/TimelineView.qml140
2 files changed, 143 insertions, 2 deletions
diff --git a/resources/qml/ImageButton.qml b/resources/qml/ImageButton.qml

index dd67d597..0a33d376 100644 --- a/resources/qml/ImageButton.qml +++ b/resources/qml/ImageButton.qml
@@ -2,7 +2,8 @@ import QtQuick 2.3 import QtQuick.Controls 2.3 AbstractButton { - property string image: undefined + property string image + property string src width: 16 height: 16 id: button @@ -11,7 +12,7 @@ AbstractButton { id: buttonImg // Workaround, can't get icon.source working for now... anchors.fill: parent - source: "image://colorimage/" + image + "?" + (button.hovered ? colors.highlight : colors.buttonText) + source: src ? src : ("image://colorimage/" + image + "?" + (button.hovered ? colors.highlight : colors.buttonText)) } MouseArea diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index de818cd9..4ea15f7b 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml
@@ -497,6 +497,146 @@ Page { } } } + + Rectangle { + id: activeCallBar + visible: timelineManager.callState != WebRTCState.DISCONNECTED + + Layout.fillWidth: true + implicitHeight: topLayout.height + 16 + color: "#2ECC71" + z: 3 + + GridLayout { + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: 8 + anchors.verticalCenter: parent.verticalCenter + + Avatar { + Layout.column: 1 + Layout.row: 0 + Layout.rowSpan: 2 + Layout.alignment: Qt.AlignVCenter + + width: avatarSize + height: avatarSize + + url: chat.model ? chat.model.roomAvatarUrl.replace("mxc://", "image://MxcImage/") : "" + displayName: chat.model ? chat.model.roomName : qsTr("No room selected") + } + + Label { + Layout.column: 2 + Layout.row: 0 + Layout.rowSpan: 2 + Layout.alignment: Qt.AlignVCenter + + font.pointSize: fontMetrics.font.pointSize * 1.1 + text: chat.model ? " " + chat.model.roomName + " " : "" + } + + Image { + Layout.column: 3 + Layout.row: 0 + Layout.rowSpan: 2 + Layout.alignment: Qt.AlignVCenter + Layout.preferredWidth: 23 + Layout.preferredHeight: 23 + source: "qrc:/icons/icons/ui/place-call.png" + } + + Connections { + target: timelineManager + function onCallStateChanged(state) { + switch (state) { + case WebRTCState.INITIATING: + callStateLabel.text = "Initiating call..." + break; + case WebRTCState.INITIATED: + callStateLabel.text = "Call initiated..." + break; + case WebRTCState.OFFERSENT: + callStateLabel.text = "Calling..." + break; + case WebRTCState.CONNECTING: + callStateLabel.text = "Connecting..." + break; + case WebRTCState.CONNECTED: + callStateLabel.text = "00:00" + var d = new Date() + callTimer.startTime = Math.floor(d.getTime() / 1000) + break; + } + } + } + + Label { + id: callStateLabel + Layout.column: 4 + Layout.row: 0 + Layout.rowSpan: 2 + Layout.alignment: Qt.AlignVCenter + font.pointSize: fontMetrics.font.pointSize * 1.1 + } + + Timer { + id: callTimer + property int startTime + interval: 1000 + running: timelineManager.callState == WebRTCState.CONNECTED + repeat: true + onTriggered: { + var d = new Date() + let seconds = Math.floor(d.getTime() / 1000 - startTime) + let s = Math.floor(seconds % 60) + let m = Math.floor(seconds / 60) % 60 + let h = Math.floor(seconds / 3600) + callStateLabel.text = (h ? (pad(h) + ":") : "") + pad(m) + ":" + pad(s) + } + + function pad(n) { + return (n < 10) ? ("0" + n) : n + } + } + + Item { + Layout.column: 5 + Layout.fillWidth: true + } + + ImageButton { + Layout.column: 6 + Layout.row: 0 + Layout.rowSpan: 2 + Layout.alignment: Qt.AlignVCenter + + width: 22 + height: 22 + src: "qrc:/icons/icons/ui/microphone-mute.png" + + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: qsTr("Mute Mic") + + onClicked: { + if (timelineManager.toggleMuteAudioSource()) { + src = "qrc:/icons/icons/ui/microphone-unmute.png" + ToolTip.text = qsTr("Unmute Mic") + } + else { + src = "qrc:/icons/icons/ui/microphone-mute.png" + ToolTip.text = qsTr("Mute Mic") + } + } + } + + Item { + Layout.column: 7 + implicitWidth: 16 + } + } + } } } }