Example #1
0
int main(int argc, char *argv[])
{
    QCoreApplication::addLibraryPath("app/native/plugins");
    QApplication app(argc, argv);

    SimondConnector connector;
    QMLSimoneView view;

    QObject::connect(&view, SIGNAL(connectToServer()), &connector, SLOT(connectToServer()));
    QObject::connect(&view, SIGNAL(disconnectFromServer()), &connector, SLOT(disconnectFromServer()));
    QObject::connect(&view, SIGNAL(startRecording()), &connector, SLOT(startRecording()));
    QObject::connect(&view, SIGNAL(commitRecording()), &connector, SLOT(commitRecording()));
    QObject::connect(&view, SIGNAL(configurationChanged()), &connector, SLOT(configurationChanged()));

    QObject::connect(&connector, SIGNAL(connectionState(ConnectionState)), &view, SLOT(displayConnectionState(ConnectionState)));
    QObject::connect(&connector, SIGNAL(status(QString)), &view, SLOT(displayStatus(QString)));
    QObject::connect(&connector, SIGNAL(error(QString)), &view, SLOT(displayError(QString)));
    QObject::connect(&connector, SIGNAL(listening()), &view, SLOT(displayListening()));
    QObject::connect(&connector, SIGNAL(recognizing()), &view, SLOT(displayRecognizing()));
    QObject::connect(&connector, SIGNAL(microphoneLevel(int,int,int)), &view, SLOT(displayMicrophoneLevel(int,int,int)));
    QObject::connect(&connector, SIGNAL(recognized(RecognitionResultList)), &view, SLOT(recognized(RecognitionResultList)));

    view.show();
    connector.init();

    return app.exec();
}
Example #2
0
void Recognizer::timerEvent(QTimerEvent *)
{
    if (running) {
        qDebug() << "Recognizer::timerEvent";
        Gesture *g = new Gesture();
        emit recognized(g);
        delete g;
    }
}
Example #3
0
int main(int argc, char *argv[])
{
    QCoreApplication::addLibraryPath("app/native/plugins");
    QApplication app(argc, argv);

    bool voiceControlled = true;
    SimondConnector *connector;
    if (voiceControlled)
        connector = new SimondConnector;
    else
        connector = 0;

    Recomment recomment;
    QMLRecommentView view(&recomment, voiceControlled);

    if (voiceControlled) {
        QObject::connect(&view, SIGNAL(connectToServer()), connector, SLOT(connectToServer()));
        QObject::connect(&view, SIGNAL(disconnectFromServer()), connector, SLOT(disconnectFromServer()));
        QObject::connect(&view, SIGNAL(startRecording()), connector, SLOT(startRecording()));
        QObject::connect(&view, SIGNAL(commitRecording()), connector, SLOT(commitRecording()));
        QObject::connect(&view, SIGNAL(configurationChanged()), connector, SLOT(configurationChanged()));

        QObject::connect(connector, SIGNAL(connectionState(ConnectionState)), &view, SLOT(displayConnectionState(ConnectionState)));
        QObject::connect(connector, SIGNAL(status(QString)), &view, SLOT(displayStatus(QString)));
        QObject::connect(connector, SIGNAL(error(QString)), &view, SLOT(displayError(QString)));
        QObject::connect(connector, SIGNAL(listening()), &view, SLOT(displayListening()));
        QObject::connect(connector, SIGNAL(recognizing()), &view, SLOT(displayRecognizing()));
        QObject::connect(connector, SIGNAL(microphoneLevel(int,int,int)), &view, SLOT(displayMicrophoneLevel(int,int,int)));
        //QObject::connect(connector, SIGNAL(recognized(QString)), &view, SLOT(displayExecutedAction(QString)));
        QObject::connect(connector, SIGNAL(recognized(QString)), &recomment, SLOT(critique(QString)));
    }

    QObject::connect(&recomment, SIGNAL(recommend(const Offer*, QString)), &view, SLOT(displayRecommendation(const Offer*, QString)));
    QObject::connect(&recomment, SIGNAL(noMatchFor(QString)), &view, SLOT(displayNoMatch(QString)));

    view.show();
    if (voiceControlled)
        connector->init();
    if (!recomment.init()) {
        qWarning() << "Failed to initialize Recomment; Aborting";
        return -1;
    }

    int ret = app.exec();
    delete connector;
    return ret;
}
Example #4
0
void SimondConnector::messageReceived()
{
    waitFor(sizeof(qint32));
    qint32 code;

    *response >> code;
    qDebug() << "Message received: " << code;
    switch (code) {
    case Simond::VersionIncompatible:
        emit error(tr("Server version incompatible with client."));
        disconnectFromServer();
        break;
    case Simond::AuthenticationFailed:
        emit error(tr("Authentication failed. Please check the configured user name and password in the configuration."));
        disconnectFromServer();
        break;
    case Simond::LoginSuccessful:
        emit status(tr("Logged in"));
        break;
    case Simond::RecognitionReady:
        emit status(tr("Recognition ready; Activating..."));
        sendRequest(Simond::StartRecognition);
        break;
    case Simond::RecognitionStarted:
        emit status("Recognition activated");
        emit connectionState(Connected);
        break;
    case Simond::RecognitionError: {
        parseLength();
        QByteArray errorMessage, protocol;
        *response >> errorMessage;
        *response >> protocol;
        emit error(tr("Recognition reported error: ").arg(QString::fromUtf8(errorMessage)));
        disconnectFromServer();
        break;
    }
    case Simond::RecognitionWarning: {
        parseLength();
        QByteArray warningMessage;
        *response >> warningMessage;
        emit error(tr("Recognition reported warning: %1").arg(QString::fromUtf8(warningMessage)));
        break;
    }
    case Simond::RecognitionStopped:
        break; //nothing to do
    case Simond::RecognitionResult: {
        parseLength();

        qint8 sentenceCount;
        *response >> sentenceCount;
        RecognitionResultList recognitionResults;

        for (int i=0; i < sentenceCount; i++) {
          QByteArray word, sampa, samparaw;
          QList<float> confidenceScores;
          *response >> word;
          *response >> sampa;
          *response >> samparaw;
          *response >> confidenceScores;
          recognitionResults.append(RecognitionResult(QString::fromUtf8(word),
            QString::fromUtf8(sampa),
            QString::fromUtf8(samparaw),
            confidenceScores));
        }
        emit recognized(recognitionResults);
        break;
    }

    default:
        qDebug() << "Unhandled request: " << code;
    }
    if (socket->bytesAvailable())
        messageReceived();
}
Example #5
0
void startLex()
{
 char *result;
 char red;
 char *number;
 int iString;

 while((red = fgetc(myFile)) != EOF)
 {
  if(red == '\n')
   iLn++;
  if(red == ' ' || red == '\n' || red == '\t')
   continue;

  if(isComment(red) == 1)
  {
   remove();
   continue;
  }
  else
   returnItAll();

  iString = isString(red);
  if(iString)
  {
   if(iString == 2)
   {
    iUnrec++;
    printf("\nUnrecognized lexeme: %s",word);
    recognized(word,"UNIDENTIFIED");
    continue;
   }
   iRec++;
   recognized(word, "STRING_LITERAL");
   continue;
  }
  else
   returnItAll();

  if(red == '\'');

  else if(isTerminated(red) == 1)
  {
   int found = 1;
   red = fgetc(myFile);
   addletter(red);
   char sec = fgetc(myFile);
   if(sec == '=')
    {
     addletter(sec);
     if(red == '<')
     {
      iRec++;
      recognized(word,"LESSEQL");
      continue;
     }
     else if(red == '>')
     {
      iRec++;
      recognized(word,"GRTREQL");
      continue;
     }
     else if(red == '!')
     {
      iRec++;
      recognized(word,"NOTEQL");
      continue;
     }
     else if(red == '=')
     found = 0;
    }
   else if(red == '<')
    recognized(word,"GRTRTH");
   else if(red == '>')
    recognized(word,"LESSTH");
   else if(red == '!')
    recognized(word,"NOT");
   else if(red == '+')
    recognized(word,"ADD");
   else if(red == '-')
    recognized(word,"SUB");
   else if(red == '*')
    recognized(word,"MUL");
   else if(red == '^')
    recognized(word,"RAISE");
   else if(red == '/')
    recognized(word,"DIV");
   else if(red == '%')
    recognized(word,"MOD");
   else if(red == '~')
    recognized(word,"TRUNC_DIV");
   else if(red == '|')
    recognized(word,"OR");
   else if(red == '&')
    recognized(word,"AND");
   else if(red == '=')
    recognized(word,"EQLTO");
   else if(red == '?')
    recognized(word,"COND_END");
   else if(red == ':')
    recognized(word,"ASSIGN");
   else if(red == '{')
    recognized(word,"B_START");
   else if(red == '}')
    recognized(word,"B_END");
   else if(red == ';')
    recognized(word,"STMNT_END");
   else if(red == '(')
    recognized(word,"P_START");
   else if(red == ')')
    recognized(word,"P_END");
   else if(red == ',')
    recognized(word,"COM");

   if(found)
   {
   iRec++;
   ungetc(sec,myFile);
   continue;
   }
   else
   returnItAll();
  }
  if(!(strcmp((number = isNumber(red)),"ERR") == 0))
  {
   iRec++;
   recognized(word, number);
   continue;
  }
  else
   returnItAll();

  if(!(strcmp((result = isKeyword(red)),"ERR") == 0))
  {
   iRec++;
   recognized(word, result);
   continue;
  }
  else
   returnItAll();
  if(isIdentifier(red))
  {
   iRec++;
   recognized(word,"ID");
   continue;
  }
  else
   returnItAll();

  {
   iUnrec++;
   while((red = fgetc(myFile)) != EOF)
   {
    if(red == EOF)
     break;
    if(isTerminated(red))
    {
     if(red == '\n')
     iLn--;
     if(red == '\'' || red == '=');
     else
     {
     ungetc(red,myFile);
     break;
     }
    }
    addletter(red);
   }
   printf("\nLine %d: Unrecognized lexeme %s",iLn,word);
   recognized(word, "UNIDENTIFIED");
  }
 }//while((red = fgetc(myFile)) != EOF);
}
Example #6
0
QList< Choqok::Post* > LaconicaSearch::parseRss(const QByteArray& buffer)
{
    kDebug();
    QDomDocument document;
    QList<Choqok::Post*> statusList;

    document.setContent( buffer );

    QDomElement root = document.documentElement();

    if ( root.tagName() != "rdf:RDF" ) {
        kDebug() << "There is no rdf:RDF element in RSS feed " << buffer.data();
        return statusList;
    }

    QDomNode node = root.firstChild();
    QString timeStr;
    while ( !node.isNull() ) {
        if ( node.toElement().tagName() != "item" ) {
            node = node.nextSibling();
            continue;
        }

        Choqok::Post *status = new Choqok::Post;

        QDomAttr statusIdAttr = node.toElement().attributeNode( "rdf:about" );
        ChoqokId statusId;
        if(mIdRegExp.exactMatch(statusIdAttr.value())) {
            statusId = mIdRegExp.cap(1);
        }

        status->postId = statusId;

        QDomNode itemNode = node.firstChild();

        while( !itemNode.isNull() )
        {
            if( itemNode.toElement().tagName() == "title" )
            {
                QString content = itemNode.toElement().text();

                int nameSep = content.indexOf( ':', 0 );
                QString screenName = content.left( nameSep );
                QString statusText = content.right( content.size() - nameSep - 2 );

                status->author.userName = screenName;
                status->content = statusText;
            } else if ( itemNode.toElement().tagName() == "dc:date" ) {
                int year, month, day, hour, minute, second;
                sscanf( qPrintable( itemNode.toElement().text() ),
                        "%d-%d-%dT%d:%d:%d%*s", &year, &month, &day, &hour, &minute, &second);
                QDateTime recognized( QDate( year, month, day), QTime( hour, minute, second ) );
                recognized.setTimeSpec( Qt::UTC );
                status->creationDateTime = recognized;
            } else if ( itemNode.toElement().tagName() == "dc:creator" ) {
                status->author.realName = itemNode.toElement().text();
            } else if ( itemNode.toElement().tagName() == "sioc:reply_of" ) {
                QDomAttr userIdAttr = itemNode.toElement().attributeNode( "rdf:resource" );
                ChoqokId id;
                if(mIdRegExp.exactMatch(userIdAttr.value())) {
                    id = mIdRegExp.cap(1);
                }
                status->replyToPostId = id;
            } else if ( itemNode.toElement().tagName() == "statusnet:postIcon" ) {
                QDomAttr imageAttr = itemNode.toElement().attributeNode( "rdf:resource" );
                status->author.profileImageUrl = imageAttr.value();
            } else if ( itemNode.toElement().tagName() == "link" ) {
//                 QDomAttr imageAttr = itemNode.toElement().attributeNode( "rdf:resource" );
                status->link = itemNode.toElement().text();
            } else if ( itemNode.toElement().tagName() == "sioc:has_discussion") {
                status->title = itemNode.toElement().attributeNode("rdf:resource").value();
            }

            itemNode = itemNode.nextSibling();
        }

        status->isPrivate = false;
        status->isFavorited = false;
        statusList.insert( 0, status );
        node = node.nextSibling();
    }

    return statusList;
}
Example #7
0
QList< Choqok::Post* > LaconicaSearch::parseAtom(const QByteArray& buffer)
{
    QDomDocument document;
    QList<Choqok::Post*> statusList;

    document.setContent( buffer );

    QDomElement root = document.documentElement();

    if ( root.tagName() != "feed" ) {
        kDebug() << "There is no feed element in Atom feed " << buffer.data();
        return statusList;
    }

    QDomNode node = root.firstChild();
    QString timeStr;
    while ( !node.isNull() ) {
        if ( node.toElement().tagName() != "entry" ) {
            node = node.nextSibling();
            continue;
        }

        QDomNode entryNode = node.firstChild();
        Choqok::Post *status = new Choqok::Post;
        status->isPrivate = false;

        while ( !entryNode.isNull() ) {
            QDomElement elm = entryNode.toElement();
            if ( elm.tagName() == "id" ) {
                // Fomatting example: "tag:search.twitter.com,2005:1235016836"
                ChoqokId id;
                if(m_rId.exactMatch(elm.text())) {
                    id = m_rId.cap(1);
                }
                /*                sscanf( qPrintable( elm.text() ),
                "tag:search.twitter.com,%*d:%d", &id);*/
                status->postId = id;
            } else if ( elm.tagName() == "published" ) {
                // Formatting example: "2009-02-21T19:42:39Z"
                // Need to extract date in similar fashion to dateFromString
                int year, month, day, hour, minute, second;
                sscanf( qPrintable( elm.text() ),
                        "%d-%d-%dT%d:%d:%d%*s", &year, &month, &day, &hour, &minute, &second);
                        QDateTime recognized( QDate( year, month, day), QTime( hour, minute, second ) );
                        recognized.setTimeSpec( Qt::UTC );
                        status->creationDateTime = recognized;
            } else if ( elm.tagName() == "title" ) {
                status->content = elm.text();
            } else if ( elm.tagName() == "link") {
                if(elm.attribute( "rel" ) == "related") {
                    status->author.profileImageUrl = elm.attribute( "href" );
                } else if(elm.attribute( "rel" ) == "alternate") {
                    status->link = elm.attribute( "href" );
                }
            } else if ( elm.tagName() == "author") {
                QDomNode userNode = entryNode.firstChild();
                while ( !userNode.isNull() )
                {
                    if ( userNode.toElement().tagName() == "name" )
                    {
                        QString fullName = userNode.toElement().text();
                        int bracketPos = fullName.indexOf( " ", 0 );
                        QString screenName = fullName.left( bracketPos );
                        QString name = fullName.right ( fullName.size() - bracketPos - 2 );
                        name.chop( 1 );
                        status->author.realName = name;
                        status->author.userName = screenName;
                    }
                    userNode = userNode.nextSibling();
                }
            } else if ( elm.tagName() == "twitter:source" ){
                status->source = KUrl::fromPercentEncoding(elm.text().toAscii());
            }
            entryNode = entryNode.nextSibling();
        }
        status->isFavorited = false;
        statusList.insert( 0, status );
        node = node.nextSibling();
    }
    return statusList;
}