Exemple #1
0
  std::vector<LogMessage> LogMessage::parseLogText(const std::string& logText)
  {
    std::vector<LogMessage> result;

    std::string text = logText;

    // get preceeding comments
    boost::smatch matches;
    boost::regex messageRegex("\\[([^\\]]*)\\]\\s*<([\\-0-9]+)>([^\\[]*)(.*)");
    while(boost::regex_search(text, matches, messageRegex)){
      std::string channel(matches[1].first, matches[1].second); boost::trim(channel);
      std::string levelString(matches[2].first, matches[2].second); boost::trim(levelString);
      std::string message(matches[3].first, matches[3].second); boost::trim(message);
      std::string remainingText(matches[4].first, matches[4].second); boost::trim(remainingText);

      int level = boost::lexical_cast<int>(levelString);

      result.push_back(LogMessage((LogLevel)level, channel, message));

      // reduce the parsed text
      text = remainingText;
    }

    return result;
  }
// This function gets called whenever the chat server has sent us some text:
void MainWindow::readyRead()
{
    // We'll loop over every (complete) line of text that the server has sent us:
    while(socket->canReadLine())
    {
        // Here's the line the of text the server sent us (we use UTF-8 so
        // that non-English speakers can chat in their native language)
        QString line = QString::fromUtf8(socket->readLine()).trimmed();

        // These two regular expressions describe the kinds of messages
        // the server can send us:

        //  Normal messges look like this: "username:The message"
        QRegExp messageRegex("^([^:]+):(.*)$");

        // Any message that starts with "/users:" is the server sending us a
        // list of users so we can show that list in our GUI:
        QRegExp usersRegex("^/users:(.*)$");

        // Is this a users message:
        if(usersRegex.indexIn(line) != -1)
        {
            // If so, udpate our users list on the right:
            QStringList users = usersRegex.cap(1).split(",");
            userListWidget->clear();
            foreach(QString user, users)
              {


                new QListWidgetItem(QPixmap(":/user.png"), user, userListWidget);
                userListWidget->sortItems(Qt::AscendingOrder);
              }

        }
void MainWindow::readyRead() {
    while(socket->hasPendingDatagrams()) {
        QByteArray buffer;
        buffer.resize(socket->pendingDatagramSize());
        QHostAddress sender;
        quint16 port;
        socket->readDatagram(buffer.data(), buffer.size(), &sender, &port);
        QString line = QString::fromUtf8(buffer).trimmed();
        QRegExp messageRegex("^([^:]+):(.*)$");
        if (messageRegex.indexIn(line) != -1) {
            QString user = messageRegex.cap(1);
            QString message = messageRegex.cap(2);
            bool newbee = true;
            for (int i = 0; i < listWidget->count(); i++)
                if (listWidget->item(i)->text() == user) {
                    newbee = false;
                    break;
                }
            if (newbee){
                listWidget->addItem(user);               
            }
            if(message == "is online"||message == "is offline")
                chat_log->append("<" + user + "> " + message);
            else
                chat_log->append("<" + user + ">: " + message);
        }
    }
}
Exemple #4
0
// Called when the chat server sends the client some text
void MainWindow::readyRead()
{
    while(socket->canReadLine())
    {
        // TODO Handle Error
        QString line = QString::fromUtf8(socket->readLine()).trimmed();

        // Regex to describe normal messages
        // "username:message"
        QRegExp messageRegex("^([^:]+):(.*)$");

        // Regex to describe a user for the user list
        // Starts with "/users:"
        QRegExp usersRegex("^/users:(.*)$");

        if(usersRegex.indexIn(line) != -1)
        {
            // Update the users list
            QStringList users = usersRegex.cap(1).split(",");
            userListWidget->clear();
            foreach(QString user, users)
                new QListWidgetItem(QPixmap(":/user.png"), user, userListWidget);
        }
        else if(messageRegex.indexIn(line) != -1)
        {
            // Append the message to the chatbox
            QString user = messageRegex.cap(1);
            QString message = messageRegex.cap(2);

            roomTextEdit->append("<b>" + user + "</b>: " + message);
        }
    }
}
Exemple #5
0
void MainWindow::readyRead()
{
    while(socket->canReadLine()) {
        QString line = QString::fromUtf8(socket->readLine()).trimmed();
        QRegExp messageRegex("^([^:]+):(.*)$");

        if(messageRegex.indexIn(line) != -1) {
            QString user = messageRegex.cap(1);
            QString message = messageRegex.cap(2);

            ui->roomTextEdit->append("<b>"+user+"</b>:"+message);
        }
    }
}
Exemple #6
0
void MainWindow::readyRead()
{
    // We'll loop over every (complete) line of text that the server has sent us:
    while(socket->canReadLine())
    {
        // Here's the line the of text the server sent us (we use UTF-8 so
        // that non-English speakers can chat in their native language)
        QString line = QString::fromUtf8(socket->readLine()).trimmed();
        QObject* textedit = Root->findChild<QObject*>("textedit1");
        QString text =textedit->property("text").toString();        
        QRegExp messageRegex("^([^:]+):(.*)$");
        QRegExp usersRegex("^/users:(.*)$");
        QObject* textinput = Root->findChild<QObject*>("textinput2");
        QString str;
        str=(textinput->property("text")).toString();
        // Is this a users message:
               QString smileok= QString("=)");
               QString smilesad= QString("=(");
               if(usersRegex.indexIn(line) != -1)
               {

               }
               // Is this a normal chat message:
               else if(messageRegex.indexIn(line) != -1)
               {

                   if  (line.contains(smileok))
                   {
                       int k = line.indexOf(smileok);
                       line.replace(k,2,"<img src=\":/crazy.gif\"/>");
                   }
                   if  (line.contains(smilesad))
                   {
                       int k = line.indexOf(smilesad);
                       line.replace(k,2,"<img src=\":/beee.gif\"/>");
                   }
                   text=text+"\n"+line;
                   textedit->setProperty("text",text);
               }
    }
}
Exemple #7
0
void MainWindow::readyRead(){

    while(socket->canReadLine()){
        //sa ovim Utf8 moze da se koriste i nasa slova
        QString line = QString::fromUtf8(socket->readLine()).trimmed();

        //normalne poruke sa servera su "korisnickoime: poruka..."
        QRegExp messageRegex("^([^:]+):(.*)$");

        //poruke servera "/users:..." salju nam korisnike , koje stavljamo u listu
        QRegExp usersRegex("^/users:(.*)$");

        QRegExp usersRegex2("^/users:(.*)$");

        if(usersRegex.indexIn(line) != -1) // -1 ako ne nadje
        {
            QStringList users = usersRegex.cap(1).split(",");
            (ui->listWidget)->clear();
            //brisem sve korisnike iz liste , zbog update
           /* int c = ui->listWidget->count();
            for(int row = 0; row < c; row++)
            {
                delete ui->listWidget->takeItem(0);
                qDebug() << "count after iteration" << row << "is " << listWidget->count();
            }
            */
            foreach(QString user, users)
                new QListWidgetItem(user, ui->listWidget);
                //QPixmap(":/user.png"), kao prvi argument za ikonice korisnika
        }

        else if(messageRegex.indexIn(line) != -1)
        {
            QString user = messageRegex.cap(1);
            QString message = messageRegex.cap(2);

            ui->textEdit->append("<b>" + user + "</b>: " + message);
        }
    }

}