From 2ce2f6376152402c3fc0d750720770b963a7d3cf Mon Sep 17 00:00:00 2001 From: daniel-Jones Date: Wed, 17 May 2017 01:13:47 +0930 Subject: Major update, UI redesigned to fit a smaller footprint using tabs and an irc bot has been introduced in the IRC tab to allow control of my leds from literally anywhere. --- qt/RGBController/irc.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 qt/RGBController/irc.cpp (limited to 'qt/RGBController/irc.cpp') diff --git a/qt/RGBController/irc.cpp b/qt/RGBController/irc.cpp new file mode 100644 index 0000000..50f7fac --- /dev/null +++ b/qt/RGBController/irc.cpp @@ -0,0 +1,96 @@ +#include "irc.h" + +irc::irc(QObject *parent) : QObject(parent) +{ + +} + +void irc::setup(QString srv, int p, QString c, QString n) +{ + server = srv; + port = p; + channel = c; + name = n; + qDebug() << "irc::setup()"; + /* setup socket, connect signal/slot */ + socket = new QTcpSocket(this); + connect(socket, SIGNAL(readyRead()), this, SLOT(read())); + /* connect */ + con(); +} + +void irc::read() +{ + QString line = socket->readLine(); + if (line.contains("PING :")) + { + QString sline = "PONG :" + line.split(":")[1]; + socket->write(sline.toLatin1()); + } + QString tmp = name + " MODE " + name + " :+"; + if (line.contains(tmp)) + { + buf = "JOIN " + channel + "\r\n"; + socket->write(buf.toUtf8()); + } + if (line.contains("!")) /* mostl ikely a message to handle */ + handle(line); + if(socket->canReadLine()) + read(); + +} + +void irc::con() +{ + socket->connectToHost(server, port); + buf = "NICK " + name + "\r\n"; + socket->write(buf.toUtf8()); + buf = "USER " + name + " 8 * :" + name + "\r\n"; + socket->write(buf.toUtf8()); +} + +void irc::discon() +{ + socket->write("QUIT :elegant quit \r\n"); + socket->close(); +} + +void irc::handle(QString str) +{ + /* :Scruffy!Scruff@i.am.huskehhh.com PRIVMSG #csgo :You a vim faggot? */ + if (str.contains("PRIVMSG")) + { + + QString usr = str.split("!")[0].replace(":", ""); + QString msg = str.split("PRIVMSG")[1].split(":")[1]; + if (usr == "daniel_j") + { + if (msg.contains("!send")) + { + + msg.remove(QRegExp("[\\n\\t\\r]")); + msg.replace("!send ", ""); + qDebug() << "message for me"; + if (msg.contains(";")) + { + QStringList tmp = msg.split(";"); + for (int x = 0; x < tmp.size(); x++) + { + emit sendcmd(tmp.at(x)); + + } + } + else + { + emit sendcmd(msg); + } + } + } + } +} + +void irc::sendmsg(QString msg) +{ + buf = "PRIVMSG " + channel + " :" + msg + " \r\n"; + socket->write(buf.toUtf8()); +} -- cgit v1.2.3