diff options
| -rw-r--r-- | pica-client/audiovideocallcontroller.cpp | 9 | ||||
| -rw-r--r-- | pica-client/audiovideocallcontroller.h | 1 | ||||
| -rw-r--r-- | pica-client/callwindow.cpp | 10 | ||||
| -rw-r--r-- | pica-client/callwindow.h | 4 |
4 files changed, 24 insertions, 0 deletions
diff --git a/pica-client/audiovideocallcontroller.cpp b/pica-client/audiovideocallcontroller.cpp index d9b6571..4e23a96 100644 --- a/pica-client/audiovideocallcontroller.cpp +++ b/pica-client/audiovideocallcontroller.cpp @@ -124,6 +124,7 @@ void AudioVideoCallController::start_call(QByteArray peer_id) callwindow = new CallWindow(peer_id, false); connect(callwindow, SIGNAL(start_call_pressed()), this, SLOT(initiate_call())); connect(callwindow, SIGNAL(hang_call_pressed()), this, SLOT(end_call())); + connect(callwindow, SIGNAL(callwindow_closed(CallWindow*)), this, SLOT(callwindow_closed(CallWindow*))); callwindow->show(); } @@ -140,6 +141,7 @@ void AudioVideoCallController::call_from(QByteArray peer_id) callwindow = new CallWindow(peer_id, true); connect(callwindow, SIGNAL(accept_call_pressed()), this, SLOT(accept_call())); connect(callwindow, SIGNAL(hang_call_pressed()), this, SLOT(end_call())); + connect(callwindow, SIGNAL(callwindow_closed(CallWindow*)), this, SLOT(callwindow_closed(CallWindow*))); callwindow->show(); /* play ring tone */ @@ -167,5 +169,12 @@ void AudioVideoCallController::end_call() skynet->HangupCall(m_peer_id); else skynet->RejectCall(m_peer_id); + + callwindow->close(); +} + +void AudioVideoCallController::callwindow_closed(CallWindow *sender_window) +{ + callwindow = 0; } diff --git a/pica-client/audiovideocallcontroller.h b/pica-client/audiovideocallcontroller.h index 08f94af..7a38f1b 100644 --- a/pica-client/audiovideocallcontroller.h +++ b/pica-client/audiovideocallcontroller.h @@ -68,6 +68,7 @@ private slots: void initiate_call(); void accept_call(); void end_call(); + void callwindow_closed(CallWindow *sender_window); }; diff --git a/pica-client/callwindow.cpp b/pica-client/callwindow.cpp index 4443807..a987b79 100644 --- a/pica-client/callwindow.cpp +++ b/pica-client/callwindow.cpp @@ -18,10 +18,13 @@ #include "callwindow.h" #include <QHBoxLayout> #include <QVBoxLayout> +#include <QCloseEvent> CallWindow::CallWindow(QByteArray peer_id, bool incoming) : m_peer_id(peer_id), is_incoming(incoming) { + setAttribute(Qt::WA_DeleteOnClose); + QHBoxLayout *lh = new QHBoxLayout(this); QVBoxLayout *lv = new QVBoxLayout(this); @@ -63,3 +66,10 @@ void CallWindow::accept() { emit accept_call_pressed(); } + +void CallWindow::closeEvent(QCloseEvent *e) +{ + emit callwindow_closed(this); + + e->accept(); +} diff --git a/pica-client/callwindow.h b/pica-client/callwindow.h index 710074c..30f75d3 100644 --- a/pica-client/callwindow.h +++ b/pica-client/callwindow.h @@ -31,12 +31,16 @@ signals: void start_call_pressed(); void accept_call_pressed(); void hang_call_pressed(); + void callwindow_closed(CallWindow *sender_window); private: QByteArray m_peer_id; bool is_incoming; QPushButton *pbAccept; QPushButton *pbCall; QPushButton *pbHang; + + void closeEvent(QCloseEvent *e); + private slots: void call(); void accept(); |
