Ejemplo n.º 1
0
void ChatForm::onAvInvite(uint32_t FriendId, bool video)
{
    if (FriendId != f->getFriendID())
        return;

    qDebug() << "onAvInvite";
    disableCallButtons();
    insertChatMessage(ChatMessage::createChatInfoMessage(tr("%1 calling").arg(f->getDisplayedName()),
                                                         ChatMessage::INFO,
                                                         QDateTime::currentDateTime()));
    /* AutoAcceptCall is set for this friend */
    if ((video && Settings::getInstance().getAutoAcceptCall(f->getToxId()).testFlag(Settings::AutoAcceptCall::Video)) ||
       (!video && Settings::getInstance().getAutoAcceptCall(f->getToxId()).testFlag(Settings::AutoAcceptCall::Audio)))
    {
        uint32_t friendId = f->getFriendID();
        qDebug() << "automatic call answer";
        QMetaObject::invokeMethod(coreav, "answerCall", Qt::QueuedConnection, Q_ARG(uint32_t, friendId));
        onAvStart(friendId,video);
    }
    else
    {
        if (video)
        {
            callConfirm = new CallConfirmWidget(videoButton, *f);
            videoButton->setObjectName("yellow");
            videoButton->setToolTip(tr("Accept video call"));
            videoButton->style()->polish(videoButton);
            connect(videoButton, &QPushButton::clicked, this, &ChatForm::onAnswerCallTriggered);
        }
        else
        {
            callConfirm = new CallConfirmWidget(callButton, *f);
            callButton->setObjectName("yellow");
            callButton->setToolTip(tr("Accept audio call"));
            callButton->style()->polish(callButton);
            connect(callButton, &QPushButton::clicked, this, &ChatForm::onAnswerCallTriggered);
        }

        if (f->getFriendWidget()->chatFormIsSet(false))
            callConfirm->show();

        connect(callConfirm, &CallConfirmWidget::accepted, this, &ChatForm::onAnswerCallTriggered);
        connect(callConfirm, &CallConfirmWidget::rejected, this, &ChatForm::onRejectCallTriggered);

        Widget::getInstance()->newFriendMessageAlert(FriendId, false);
        Audio& audio = Audio::getInstance();
        audio.startLoop();
        audio.playMono16Sound(QStringLiteral(":/audio/ToxicIncomingCall.pcm"));
    }
}
Ejemplo n.º 2
0
void ChatForm::onAnswerCallTriggered()
{
    qDebug() << "onAnswerCallTriggered";

    if (callConfirm)
    {
        delete callConfirm;
        callConfirm = nullptr;
    }

    Audio::getInstance().stopLoop();

    disableCallButtons();

    if (!coreav->answerCall(f->getFriendID()))
    {
        enableCallButtons();
        stopCounter();
        hideNetcam();
        return;
    }

    onAvStart(f->getFriendID(), coreav->isCallVideoEnabled(f->getFriendID()));
}