コード例 #1
0
ファイル: XmppSip.cpp プロジェクト: RedScreen/tomahawk
void
XmppSipPlugin::onNewMessage( const Jreen::Message& message )
{
    if ( m_state != Account::Connected )
        return;

    QString from = message.from().full();
    QString msg = message.body();

    if ( msg.isEmpty() )
        return;

    if ( message.subtype() == Jreen::Message::Error )
    {
        tDebug() << Q_FUNC_INFO << "Received error message from" << from << ", not answering... (Condition:"
                 << ( message.error().isNull() ? -1 : message.error()->condition() ) << ")";
        return;
    }

    // FIXME: We do not sent SipInfo in JSON via XMPP, why do we receive it here?
    SipInfo info = SipInfo::fromJson( msg );
    if ( !info.isValid() )
    {
        QString to = from;
        QString response = QString( tr( "I'm sorry -- I'm just an automatic presence used by Tomahawk Player"
                                        " (http://gettomahawk.com). If you are getting this message, the person you"
                                        " are trying to reach is probably not signed on, so please try again later!" ) );

        // this is not a sip message, so we send it directly through the client
        m_client->send( Jreen::Message ( Jreen::Message::Error, Jreen::JID( to ), response) );
        return;
    }

    qDebug() << Q_FUNC_INFO << "From:" << message.from().full() << ":" << message.body();
}
コード例 #2
0
ファイル: sipinfo.cpp プロジェクト: Pritoj/tomahawk
QDebug operator<< ( QDebug dbg, const SipInfo& info )
{
    if( !info.isValid() )
        dbg.nospace() << "info is invalid";
    else
        dbg.nospace() << info.toJson();

    return dbg.maybeSpace();
}
コード例 #3
0
ファイル: SipInfo.cpp プロジェクト: Nskif/tomahawk
bool
operator==( const SipInfo& one, const SipInfo& two )
{
    // check valid/invalid combinations first, so we don't try to access any invalid sipInfos (->assert)
    if ( ( one.isValid() && !two.isValid() ) || ( !one.isValid() && two.isValid() ) )
    {
        return false;
    }
    else if ( one.isValid() && two.isValid() )
    {
        if ( one.isVisible() == two.isVisible()
            && one.host() == two.host()
            && one.port() == two.port()
            && one.nodeId() == two.nodeId()
            && one.key() == two.key() )
        {
            return true;
        }
    }

    return false;
}
コード例 #4
0
ファイル: diagnosticsdialog.cpp プロジェクト: Pritoj/tomahawk
void DiagnosticsDialog::updateLogView()
{
    QString log;

    log.append(
        QString("TOMAHAWK DIAGNOSTICS LOG -%1 \n\n")
            .arg( QDateTime::currentDateTime().toString() )
    );

    // network
    log.append(
        "TOMAHAWK-VERSION: " TOMAHAWK_VERSION "\n\n\n"
    );

    // network
    log.append(
        "NETWORK:\n"
        "    General:\n"
    );
    if( Servent::instance()->visibleExternally() )
    {
        log.append(
            QString(
                "      visible: true\n"
                "      host: %1\n"
                "      port: %2\n"
                "\n"
            ).arg( Servent::instance()->externalAddress() )
             .arg( Servent::instance()->externalPort() )

        );
    }
    else
    {
        log.append(
            QString(
                "      visible: false"
            )
        );
    }
    log.append("\n\n");


    // Peers
    log.append("SIP PLUGINS:\n");
    QList< Tomahawk::source_ptr > sources = SourceList::instance()->sources( true );
    Q_FOREACH(SipPlugin *sip, SipHandler::instance()->allPlugins())
    {
        Q_ASSERT(sip);
        QString stateString;
        switch( sip->connectionState() )
        {
            case SipPlugin::Connecting:
                stateString = "Connecting";
                break;

            case SipPlugin::Connected:
                stateString = "Connected";
                break;

            case SipPlugin::Disconnected:
                stateString = "Disconnected";
                break;
            case SipPlugin::Disconnecting:
                stateString = "Disconnecting";
        }
        log.append(
            QString("  %2 (%1): %3 (%4)\n")
                .arg(sip->name())
                .arg(sip->friendlyName())
                .arg(sip->accountName())
                .arg(stateString)
        );

        Q_FOREACH( const QString &peerId, sip->peersOnline() )
        {
            /* enable this again, when we check the source has this peerId
            bool connected = false;
            Q_FOREACH( const Tomahawk::source_ptr &source, sources )
            {
                if( source->controlConnection() )
                {
                    connected = true;
                    break;
                }
            }*/

            QString versionString = SipHandler::instance()->versionString( peerId );
            SipInfo sipInfo = SipHandler::instance()->sipInfo( peerId );
            if( !sipInfo.isValid() )
               log.append(
                    QString("       %1: %2 %3" /*"(%4)"*/ "\n")
                        .arg( peerId )
                        .arg( "sipinfo invalid" )
                        .arg( versionString )
                        // .arg( connected ? "connected" : "not connected")
                );
            else if( sipInfo.isVisible() )
                log.append(
                    QString("       %1: %2:%3 %4" /*" (%5)"*/ "\n")
                        .arg( peerId )
                        .arg( sipInfo.host().hostName() )
                        .arg( sipInfo.port() )
                        .arg( versionString )
                        // .arg( connected ? "connected" : "not connected")

                );
            else
                log.append(
                    QString("       %1: visible: false %2" /*" (%3)"*/ "\n")
                        .arg( peerId )
                        .arg( versionString )
                        // .arg( connected ? "connected" : "not connected")

                );
        }
        log.append("\n");
    }