diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/Dialer.qml | 37 | ||||
-rw-r--r-- | app/api/Telephony.qml | 20 |
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) } |