diff options
| -rw-r--r-- | pica-client/audiovideocallcontroller.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/pica-client/audiovideocallcontroller.cpp b/pica-client/audiovideocallcontroller.cpp index 4e23a96..2af7ced 100644 --- a/pica-client/audiovideocallcontroller.cpp +++ b/pica-client/audiovideocallcontroller.cpp @@ -91,6 +91,7 @@ void AudioVideoCallController::stopTones() void AudioVideoCallController::call_failed(QString reason) { qDebug() << "Call failed: " << reason << "\n"; + is_active = false; /* play unreachable */ playEarpieceTone(&TonePlayer::playUnreachable); } @@ -98,6 +99,8 @@ void AudioVideoCallController::call_failed(QString reason) void AudioVideoCallController::call_accepted(QByteArray peer_id) { stopTones(); + is_active = true; + callwindow->call_started(); } void AudioVideoCallController::call_rejected(QByteArray peer_id) @@ -108,16 +111,24 @@ void AudioVideoCallController::call_rejected(QByteArray peer_id) void AudioVideoCallController::call_hungup(QByteArray peer_id) { + callwindow->call_ended(); /* play busy tone */ playEarpieceTone(&TonePlayer::playBusy); + is_active = false; } void AudioVideoCallController::start_call(QByteArray peer_id) { if (callwindow) { + callwindow->show(); + + /* call is already in progress */ - return; + if (is_active) + return; + /* re-create callwindow for a new call */ + callwindow->close(); } m_peer_id = peer_id; @@ -159,6 +170,8 @@ void AudioVideoCallController::accept_call() { stopTones(); skynet->AcceptCall(m_peer_id); + is_active = true; + callwindow->call_started(); } void AudioVideoCallController::end_call() @@ -170,11 +183,13 @@ void AudioVideoCallController::end_call() else skynet->RejectCall(m_peer_id); + is_active = false; callwindow->close(); } void AudioVideoCallController::callwindow_closed(CallWindow *sender_window) { callwindow = 0; + is_active = false; } |
