// 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);
              }

        }
예제 #2
0
파일: client.cpp 프로젝트: klimoqu/Arawn
void Client::readyRead()
{
    while(socket->canReadLine())
	{
		QString line = QString::fromUtf8(socket->readLine()).trimmed();
		QRegExp usersRegex("^/usernames:(.*)$");
		QRegExp commandRegex("^/command:(.*)$");
		if(usersRegex.indexIn(line) != -1)		///az auth rész
		{
			players = usersRegex.cap(1).split(",");
			emit refreshPlayers();
		}
		else if(commandRegex.indexIn(line) != -1)									///command jön a servertõl
		{
			uchar id,type;
			int msg;
			QStringList command = commandRegex.cap(1).split(' ');
			id=(uchar)command.at(0).toInt();
			type=(uchar)command.at(1).toInt();
			msg=command.at(2).toInt();
			emit CommandReceivedFromServer(Command(id,type,msg));
		}
		else																		///egyéb hülyeség jön a servertõl
		{
			qDebug() << "hülyeség jött";
		}
	}
}
예제 #3
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);
        }
    }
}
예제 #4
0
void MainWindow::readyRead(){
    while(socket->canReadLine())
    {
        QString line = QString::fromUtf8(socket->readLine()).trimmed();

        QRegExp usersRegex("^/users:(.*)$");
        QRegExp idRegex("^/i:(.*)$");
        QRegExp deplacementRegex("^/p:(.*)$");
        QRegExp bombeRegex("^/bom:(.*)$");
        QRegExp declenchementRegex("^/t:(.*)$");
        QRegExp addBonusRegex("^/abon:(.*)$");
        QRegExp removeBonusRegex("^/rbon:(.*)$");
        QRegExp killsRegex("^/k:(.*)$");
        QRegExp erreurRegex("^/erreur:(.*)$");

        if(idRegex.indexIn(line) != -1){
            QStringList mots = idRegex.cap(1).split(" ");

            chargerNiveau(mots[2]);

            personnages.resize(mots[1].toInt()); // mots[1] étant le nbre max de joueurs
            id = mots[0].toInt();
            QPair<int,int> pair;

            //Cherche une entrée sur la map
            if(entrer.size() > id){
                pair = entrer.at(id);
                ajouterPersonnage(id,pair.second,pair.first);
            }
            else
                ajouterPersonnage(id,4,2); //Entrée par default
        }

        // Nouveau Joueur
        else if(usersRegex.indexIn(line) != -1)
        {
            QStringList users = usersRegex.cap(1).split(",");

            foreach(QString user, users){
                QStringList J = user.split(" ");
                bool present = false;
                /*
                 *   J[0] id joueur
                 */

                foreach(Joueur *j ,personnages){
                    if(j != NULL && j->getId() == J[0].toInt())
                        present = true;
                }
                if(!present)
                    ajouterPersonnage(J[0].toInt(),5,3);
            }

        }
예제 #5
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);
               }
    }
}
예제 #6
0
파일: mainwindow.cpp 프로젝트: Stivisa/Chat
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);
        }
    }

}