aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/irc/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'irc/mainwindow.cpp')
-rw-r--r--irc/mainwindow.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/irc/mainwindow.cpp b/irc/mainwindow.cpp
new file mode 100644
index 0000000..dede122
--- /dev/null
+++ b/irc/mainwindow.cpp
@@ -0,0 +1,109 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+#include <math.h>
+#include <QDebug>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+
+ // Create socket
+ socket = new QTcpSocket(this);
+
+ m_parser = new DiceParser();
+
+ // Connect signals and slots!
+ connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
+ connect(socket,SIGNAL(connected()),this,SLOT(authentificationProcess()));
+ connect(ui->m_connectButton, SIGNAL(clicked()), this, SLOT(connectToServer()));
+ connect(ui->m_disconnectButton, SIGNAL(clicked()), this, SLOT(disconnectFromServer()));
+ connect(ui->m_joinButton, SIGNAL(clicked()), this, SLOT(joinChannel()));
+
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+void MainWindow::connectToServer()
+{
+ socket->connectToHost(QString("irc.epiknet.org"), 6667);
+}
+
+void MainWindow::readData()
+{
+ QString readLine = socket->readLine();
+
+ if(readLine.startsWith("!"))
+ readLine = readLine.remove(0,1);
+
+
+ if(readLine.contains("!"))
+ {
+
+ // qDebug()<< "in /dice";
+ QString dice=".*PRIVMSG.*\!(.*)";
+ QRegExp exp(dice);
+ exp.indexIn(readLine);
+
+
+
+ QStringList list = exp.capturedTexts();
+ qDebug()<<list;
+ if(list.size()==2)
+ {
+ QString cmd = list[1];
+ if(m_parser->parseLine(cmd))
+ {
+ m_parser->Start();
+ QString result = m_parser->displayResult();
+ QString msg("PRIVMSG #opale-roliste :%1 \r\n");
+ socket->write(msg.arg(result).toLatin1());
+ }
+ }
+ else
+ {
+ return;
+ }
+
+
+ }
+ else if(readLine.contains("PING :"))
+ {
+ QString dice="PING :(.*)";
+ QRegExp exp(dice);
+ exp.indexIn(readLine);
+ QStringList list = exp.capturedTexts();
+ if(list.size()==2)
+ {
+ QString resp = "PONG :"+list[1];
+
+ socket->write(resp.toLatin1());
+ }
+ }
+ // Add to ouput
+ ui->m_output->append(readLine.trimmed());
+ // Next data??
+ if(socket->canReadLine()) readData();
+}
+
+void MainWindow::disconnectFromServer()
+{
+ // Disconnect from IRC server
+ socket->write("QUIT Good bye \r\n"); // Good bye is optional message
+ socket->flush();
+ socket->disconnect(); // Now we can try it :-)
+}
+ void MainWindow::authentificationProcess()
+ {
+ socket->write("NICK diceBot \r\n");
+ socket->write("USER diceBot diceBot diceBot :diceBot BOT \r\n");
+
+ }
+void MainWindow::joinChannel()
+{
+ socket->write("JOIN #opale-roliste \r\n");
+}