void SimpleCallObserver::onChannelInvalidated(const ChannelPtr &channel, const QString &errorName, const QString &errorMessage) { if (channel->channelType() == TP_QT_IFACE_CHANNEL_TYPE_CALL) { CallChannelPtr callChannel = CallChannelPtr::qObjectCast(channel); if (!callChannel) { warning() << "Channel received to observe is not a subclass of " "CallChannel. ChannelFactory set on this observer's account must " "construct CallChannel subclasses for channels of type Call. " "Ignoring channel"; return; } emit callEnded(callChannel, errorName, errorMessage); } else if (channel->channelType() == TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA) { StreamedMediaChannelPtr smChannel = StreamedMediaChannelPtr::qObjectCast(channel); if (!smChannel) { warning() << "Channel received to observe is not a subclass of " "StreamedMediaChannel. ChannelFactory set on this observer's account must " "construct StreamedMediaChannel subclasses for channels of type StreamedMedia. " "Ignoring channel"; return; } emit streamedMediaCallEnded(smChannel, errorName, errorMessage); } else { warning() << "Channel received to observe is not of type Call or StreamedMedia, " "service confused. Ignoring channel"; } }
void SailfishPlatform::onActiveVoiceCallStatusChanged() { VoiceCallHandler* handler = m_voiceCallManager->activeVoiceCall(); if (!handler || handler->handlerId().isNull()) { return; } switch ((VoiceCallHandler::VoiceCallStatus)handler->status()) { case VoiceCallHandler::STATUS_ALERTING: case VoiceCallHandler::STATUS_DIALING: qDebug() << "Tell outgoing:" << handler->lineId(); //emit outgoingCall(handlerId, handler->lineId(), m_voiceCallManager->findPersonByNumber(handler->lineId())); break; case VoiceCallHandler::STATUS_INCOMING: case VoiceCallHandler::STATUS_WAITING: qDebug() << "Tell incoming:" << handler->lineId(); if(handler->getState() < VoiceCallHandler::StateRinging) { handler->setState(VoiceCallHandler::StateRinging); emit incomingCall(qHash(handler->handlerId()), handler->lineId(), m_voiceCallManager->findPersonByNumber(handler->lineId())); } break; case VoiceCallHandler::STATUS_NULL: case VoiceCallHandler::STATUS_DISCONNECTED: qDebug() << "Endphone " << handler->handlerId(); if(handler->getState() < VoiceCallHandler::StateCleanedUp) { handler->setState(VoiceCallHandler::StateCleanedUp); emit callEnded(qHash(handler->handlerId()), false); } break; case VoiceCallHandler::STATUS_ACTIVE: qDebug() << "Startphone" << handler->handlerId(); if(handler->getState() < VoiceCallHandler::StateAnswered) { handler->setState(VoiceCallHandler::StateAnswered); emit callStarted(qHash(handler->handlerId())); } break; case VoiceCallHandler::STATUS_HELD: qDebug() << "OnHold" << handler->handlerId(); break; } }