mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-07-26 14:24:45 +00:00
[dialer] Implement hanging up in CallManager
This commit is contained in:
parent
cf00cb85f3
commit
bba2650087
2 changed files with 24 additions and 2 deletions
|
|
@ -42,6 +42,14 @@ CallManager::CallManager(const Tp::CallChannelPtr &callChannel, DialerUtils *dia
|
||||||
connect(callChannel.data(), SIGNAL(callStateChanged(Tp::CallState)),
|
connect(callChannel.data(), SIGNAL(callStateChanged(Tp::CallState)),
|
||||||
SLOT(onCallStateChanged(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
|
//create the channel handler
|
||||||
// d->channelHandler = new CallChannelHandler(callChannel, this);
|
// d->channelHandler = new CallChannelHandler(callChannel, this);
|
||||||
|
|
||||||
|
|
@ -96,8 +104,7 @@ void CallManager::onCallStateChanged(Tp::CallState state)
|
||||||
// d->callWindow.data()->setStatus(CallWindow::StatusRemoteRinging);
|
// d->callWindow.data()->setStatus(CallWindow::StatusRemoteRinging);
|
||||||
} else {
|
} else {
|
||||||
d->dialerUtils->setCallState("incoming");
|
d->dialerUtils->setCallState("incoming");
|
||||||
connect(d->dialerUtils, &DialerUtils::acceptCall, this, &CallManager::onCallAccepted);
|
|
||||||
connect(d->dialerUtils, &DialerUtils::rejectCall, this, &CallManager::onCallRejected);
|
|
||||||
//show approver;
|
//show approver;
|
||||||
(void) d->callChannel->setRinging();
|
(void) d->callChannel->setRinging();
|
||||||
}
|
}
|
||||||
|
|
@ -162,6 +169,20 @@ void CallManager::onCallRejected()
|
||||||
(void) d->callChannel->hangup(Tp::CallStateChangeReasonRejected, TP_QT_ERROR_REJECTED);
|
(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()
|
void CallManager::ensureCallWindow()
|
||||||
{
|
{
|
||||||
// if (!d->callWindow) {
|
// if (!d->callWindow) {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ private Q_SLOTS:
|
||||||
void onCallStateChanged(Tp::CallState state);
|
void onCallStateChanged(Tp::CallState state);
|
||||||
void onCallAccepted();
|
void onCallAccepted();
|
||||||
void onCallRejected();
|
void onCallRejected();
|
||||||
|
void onHangUpRequested();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ensureCallWindow();
|
void ensureCallWindow();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue