summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Dialer.qml37
-rw-r--r--app/api/Telephony.qml20
2 files changed, 49 insertions, 8 deletions
diff --git a/app/Dialer.qml b/app/Dialer.qml
index 49495b3..5dc800a 100644
--- a/app/Dialer.qml
+++ b/app/Dialer.qml
@@ -28,6 +28,33 @@ Item {
API.Telephony {
id: telephony
url: bindingAddress
+ property string callStatus: "idle"
+ property string callClipColp: ""
+
+ onCallStatusChanged: {
+ if (callStatus == "incoming") {
+ ringtone.active = true
+ callStatusLabel.text = "Incoming call from " + callClipColp
+ } else if (callStatus == "dialing") {
+ callStatusLabel.text = "Calling " + callClipColp
+ } else if (callStatus == "idle") {
+ ringtone.active = false
+ callStatusLabel.text = ""
+ }
+ }
+ }
+
+ Loader {
+ id: ringtone
+ active: false
+ sourceComponent: Component {
+ SoundEffect {
+ loops: SoundEffect.Infinite
+ source: './Phone.wav'
+ category: 'phone'
+ Component.onCompleted: play()
+ }
+ }
}
signal showContacts
@@ -105,6 +132,12 @@ Item {
}
}
+ Label {
+ id: callStatusLabel
+ Layout.alignment: Qt.AlignHCenter
+ text: ""
+ }
+
ToggleButton {
id: callButton
Layout.alignment: Qt.AlignHCenter
@@ -123,11 +156,11 @@ Item {
if (contact.name === '')
contact.name = 'Unknown'
history.insert(0, contact)
- telephony.dial(number.text)
+ telephony.dial(number.text)
} else {
name.text = ''
number.text = ''
- telephony.hangup()
+ telephony.hangup()
}
}
}
diff --git a/app/api/Telephony.qml b/app/api/Telephony.qml
index 25af055..721a51a 100644
--- a/app/api/Telephony.qml
+++ b/app/api/Telephony.qml
@@ -39,7 +39,6 @@ WebSocket {
var json = JSON.parse(message)
var request = json[2].request
var response = json[2].response
- console.debug("response: " + JSON.stringify(response))
switch (json[0]) {
case msgid.call:
break
@@ -52,10 +51,22 @@ WebSocket {
console.debug("Hangup response")
}
break
- case msg.reterr:
+ case msgid.reterr:
root.statusString = "Bad return value, binding probably not installed"
break
- case MessageId.event:
+ case msgid.event:
+ var payload = JSON.parse(JSON.stringify(json[2]))
+ var event = payload.event
+ var data = payload.data
+ if (event == "telephony/incomingCall") {
+ callClipColp = data.clip
+ callStatus = "incoming"
+ } else if (event == "telephony/dialingCall") {
+ callClipColp = data.colp
+ callStatus = "dialing"
+ } else if (event == "telephony/terminatedCall") {
+ callStatus = "idle"
+ }
break
}
}
@@ -63,7 +74,6 @@ WebSocket {
onStatusChanged: {
switch (status) {
case WebSocket.Open:
- console.debug("onStatusChanged: Open")
break
case WebSocket.Error:
root.statusString = "WebSocket error: " + root.errorString
@@ -73,13 +83,11 @@ WebSocket {
function sendSocketMesage(verb, parameter) {
var requestJson = [ msgid.call, payloadLength, apiString + '/' + verb, parameter ]
- console.debug("sendSocketMessage: " + JSON.stringify(requestJson))
verbs.push(verb)
sendTextMessage(JSON.stringify(requestJson))
}
function dial(number) {
- console.debug("Dialing " + number)
var parameterJson = { value: number }
sendSocketMesage("dial", parameterJson)
}