summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pica-client/audiovideocallcontroller.cpp9
-rw-r--r--pica-client/audiovideocallcontroller.h1
-rw-r--r--pica-client/callwindow.cpp10
-rw-r--r--pica-client/callwindow.h4
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();