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(); }
void Recognizer::timerEvent(QTimerEvent *) { if (running) { qDebug() << "Recognizer::timerEvent"; Gesture *g = new Gesture(); emit recognized(g); delete g; } }
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; }
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(); }
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); }
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; }
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; }