[dialer] Implement hanging up in CallManager

This commit is contained in:
Martin Klapetek 2015-06-19 01:25:44 +02:00
parent cf00cb85f3
commit bba2650087
2 changed files with 24 additions and 2 deletions

View file

@ -42,6 +42,14 @@ CallManager::CallManager(const Tp::CallChannelPtr &callChannel, DialerUtils *dia
connect(callChannel.data(), SIGNAL(callStateChanged(Tp::CallState)),
SLOT(onCallStateChanged(Tp::CallState)));
connect(d->dialerUtils, &DialerUtils::acceptCall, this, &CallManager::onCallAccepted);
connect(d->dialerUtils, &DialerUtils::rejectCall, this, &CallManager::onCallRejected);
connect(d->dialerUtils, &DialerUtils::hangUp, this, &CallManager::onHangUpRequested);
connect(d->callChannel.data(), &Tp::CallChannel::invalidated, this, [=]() {
qDebug() << "Channel invalidated";
d->dialerUtils->setCallState("idle");
});
//create the channel handler
// d->channelHandler = new CallChannelHandler(callChannel, this);
@ -96,8 +104,7 @@ void CallManager::onCallStateChanged(Tp::CallState state)
// d->callWindow.data()->setStatus(CallWindow::StatusRemoteRinging);
} else {
d->dialerUtils->setCallState("incoming");
connect(d->dialerUtils, &DialerUtils::acceptCall, this, &CallManager::onCallAccepted);
connect(d->dialerUtils, &DialerUtils::rejectCall, this, &CallManager::onCallRejected);
//show approver;
(void) d->callChannel->setRinging();
}
@ -162,6 +169,20 @@ void CallManager::onCallRejected()
(void) d->callChannel->hangup(Tp::CallStateChangeReasonRejected, TP_QT_ERROR_REJECTED);
}
void CallManager::onHangUpRequested()
{
if (d->callChannel && d->callChannel->isValid()) {
qDebug() << "Hanging up";
Tp::PendingOperation *op = d->callChannel->hangup();
connect(op, &Tp::PendingOperation::finished, [=]() {
if (op->isError()) {
qWarning() << "Unable to hang up:" << op->errorMessage();
}
// d->callChannel->requestClose();
});
}
}
void CallManager::ensureCallWindow()
{
// if (!d->callWindow) {

View file

@ -33,6 +33,7 @@ private Q_SLOTS:
void onCallStateChanged(Tp::CallState state);
void onCallAccepted();
void onCallRejected();
void onHangUpRequested();
private:
void ensureCallWindow();