debugged most of the features of the module version

This commit is contained in:
Anselme 2015-05-29 20:09:05 +02:00
parent 09c0ab5b56
commit 4aac5b2bb4
10 changed files with 50 additions and 111 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@ release/*
*.Debug *.Debug
*.Release *.Release
Makefile Makefile
ui_*

View File

@ -1,4 +1,6 @@
#include "basemodule.h" #include "basemodule.h"
#include "message.h"
#include <QStringList>
BaseModule::BaseModule() : Module(), status(OFFLINE) BaseModule::BaseModule() : Module(), status(OFFLINE)
{ {
@ -7,38 +9,47 @@ BaseModule::BaseModule() : Module(), status(OFFLINE)
bool BaseModule::messageHandler(Message msg) bool BaseModule::messageHandler(Message msg)
{ {
bool ret = false;
answer = "";
if(msg.command.compare("PING", Qt::CaseInsensitive) == 0)
{
answer = pong(msg.target);
ret = true;
}
switch(status) switch(status)
{ {
case OFFLINE : case OFFLINE :
status = ONLINE; status = ONLINE;
emit sendMsg(QString("NICK %1\r\nUSER %2 0 * %3").arg(getNick()).arg(getNick()).arg(getNick())); answer = QString("NICK %1\r\nUSER %2 0 * %3\r\n").arg(getNick()).arg(getNick()).arg(getNick());
ret = true;
break; break;
case ONLINE : case ONLINE :
if(str.contains("PING")) if(msg.command.compare("376") == 0)
{ {
status = ON_CHAN; status = ON_CHAN;
emit sendMsg(pong(msg.nick)); answer += join(getChan());
emit sendMsg(join(getChan())); ret = true;
} }
break; break;
case ON_CHAN : case ON_CHAN :
if(str.contains("PING")) ret |= onChanHandler(msg);
answer = pong(msg.nick);
return onChanHandler(msg);
break; break;
} }
return ret;
} }
bool BaseModule::onChanHandler(Message msg) bool BaseModule::onChanHandler(Message msg)
{ {
bool ret = false; bool ret = false;
User* src = users.getFromNick(msg.nick);
// si la ligne est un message // si la ligne est un message
if(msg.command.compare(QString("PRIVMSG"), Qt::CaseInsensitive) == 0) if(msg.command.compare(QString("PRIVMSG"), Qt::CaseInsensitive) == 0)
{ {
// mise à jour du bot // mise à jour du bot
if(msg.args.compare("!update") == 0 && msg.src != NULL && msg.src->isOp()) if(msg.args.compare("!update") == 0 && src != NULL && src->isOp())
{ {
answer = quit("Rebooting for update..."); answer += quit("Rebooting for update...");
ret = true; ret = true;
} }
@ -53,23 +64,23 @@ bool BaseModule::onChanHandler(Message msg)
str.append(u->getNick()); str.append(u->getNick());
str.append(" "); str.append(" ");
} }
answer = say(str); answer += say(str);
ret = true; ret = true;
} }
} }
// renommage // renommage
else if(msg.command.compare("NICK", Qt::CaseInsensitive) == 0) else if(msg.command.compare("NICK", Qt::CaseInsensitive) == 0)
msg.src->rename(msg.args); src->rename(msg.args);
else if(msg.command.compare("QUIT", Qt::CaseInsensitive) == 0) else if(msg.command.compare("QUIT", Qt::CaseInsensitive) == 0)
users.remove(msg.src); users.remove(src);
else if(msg.command.compare("PART", Qt::CaseInsensitive) == 0) else if(msg.command.compare("PART", Qt::CaseInsensitive) == 0)
users.remove(msg.src); users.remove(src);
else if(msg.command.compare("KICK", Qt::CaseInsensitive) == 0) else if(msg.command.compare("KICK", Qt::CaseInsensitive) == 0)
{ {
if(getNick().compare(msg.target2) == 0) if(getNick().compare(msg.target2) == 0)
{ {
answer = quit("i've been kicked :("); answer += quit("i've been kicked :(");
ret = true; ret = true;
} }
users.remove(users.getFromNick(msg.target2)); users.remove(users.getFromNick(msg.target2));
@ -78,9 +89,9 @@ bool BaseModule::onChanHandler(Message msg)
&& msg.args.contains(getChan()) && msg.args.contains(getChan())
&& getNick().compare(msg.nick) != 0) && getNick().compare(msg.nick) != 0)
{ {
users.getOrAdd(msg.nick); users.getOrAdd(msg.nick);
answer = whois(msg.nick); answer += whois(msg.nick);
ret = true; ret = true;
} }
// 353 = code de la ligne qui liste les nicks connectés // 353 = code de la ligne qui liste les nicks connectés
@ -92,7 +103,7 @@ bool BaseModule::onChanHandler(Message msg)
for(QString s : names) for(QString s : names)
{ {
users.getOrAdd(s); users.getOrAdd(s);
answer = whois(s); answer += whois(s);
ret = true; ret = true;
} }
} }

View File

@ -59,10 +59,10 @@ int BotApp::exec()
if(!nogui) if(!nogui)
{ {
window = new MainWindow(); window = new MainWindow();
QObject::connect(sock, SIGNAL(receivedMsg(QString)), window->getConsole(), SLOT(append(QString))); QObject::connect(sock, SIGNAL(receivedMsg(QString)), (QObject*)window->getConsole(), SLOT(append(QString)));
QObject::connect(bot, SIGNAL(sendMsg(QString)), window->getConsole(), SLOT(append(QString))); QObject::connect(bot, SIGNAL(sendMsg(QString)), (QObject*)window->getConsole(), SLOT(append(QString)));
QObject::connect(window->getPrompt(), SIGNAL(sendMsg(QString)), sock, SLOT(sendMsg(QString))); QObject::connect((QObject*)window->getPrompt(), SIGNAL(sendMsg(QString)), sock, SLOT(sendMsg(QString)));
QObject::connect(window->getPrompt(), SIGNAL(returnPressed()), window->getPrompt(), SLOT(confirmationPerformed())); QObject::connect((QObject*)window->getPrompt(), SIGNAL(returnPressed()), (QObject*)window->getPrompt(), SLOT(confirmationPerformed()));
window->show(); window->show();
} }
return sock->connectToServer(coreApp); return sock->connectToServer(coreApp);

View File

@ -8,10 +8,8 @@ class IRCBot;
class SocketIRC; class SocketIRC;
class MainWindow; class MainWindow;
class BotApp : public QObject class BotApp
{ {
Q_OBJECT
bool nogui = false; bool nogui = false;
QString server = "irc.freenode.net"; QString server = "irc.freenode.net";
int port = 6667; int port = 6667;

View File

@ -13,7 +13,7 @@ void IRCBot::receiveMsg(QString str)
for(Module* m : modules) for(Module* m : modules)
{ {
if(m->messageHandler(msg)) if(m->isEnabled() && m->messageHandler(msg))
emit sendMsg(m->getAnswer()); emit sendMsg(m->getAnswer());
} }
} }

View File

@ -4,14 +4,20 @@
class CustomModule : public Module class CustomModule : public Module
{ {
CustomModule() : Module(), answer("coucou") {} public :
CustomModule() : Module() {}
bool messageHandler(Message msg) virtual bool messageHandler(Message msg)
{ {
return msg.args.compare("plop ?") == 0; if(msg.args.compare("plop ?") == 0)
{
answer = say("coucou");
return true;
}
return false;
} }
QString getName() virtual QString getName()
{ {
return "custom"; return "custom";
} }

View File

@ -1,5 +1,7 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include <QTextBrowser>
#include "prompt.h"
MainWindow::MainWindow(QWidget *parent) : MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),

View File

@ -5,9 +5,6 @@
class Prompt; class Prompt;
class QTextBrowser; class QTextBrowser;
class QSlider;
class QProgressBar;
namespace Ui { namespace Ui {
class MainWindow; class MainWindow;
} }
@ -21,8 +18,6 @@ public:
~MainWindow(); ~MainWindow();
QTextBrowser* getConsole(); QTextBrowser* getConsole();
QSlider* getSwitch();
QProgressBar* getLed();
Prompt* getPrompt(); Prompt* getPrompt();
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;

View File

@ -26,8 +26,8 @@ protected:
public: public:
Module() : enabled(true) {} Module() : enabled(true) {}
virtual bool messageHandler(Message msg); virtual bool messageHandler(Message msg) = 0;
virtual QString getName(); virtual QString getName() = 0;
QString getAnswer(); QString getAnswer();
bool isEnabled(); bool isEnabled();

View File

@ -1,74 +0,0 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.4.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QTextBrowser>
#include <QtWidgets/QWidget>
#include "prompt.h"
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralWidget;
QGridLayout *gridLayout;
QTextBrowser *monitoringConsole;
Prompt *prompt;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"));
MainWindow->resize(374, 404);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QStringLiteral("centralWidget"));
gridLayout = new QGridLayout(centralWidget);
gridLayout->setSpacing(6);
gridLayout->setContentsMargins(11, 11, 11, 11);
gridLayout->setObjectName(QStringLiteral("gridLayout"));
monitoringConsole = new QTextBrowser(centralWidget);
monitoringConsole->setObjectName(QStringLiteral("monitoringConsole"));
gridLayout->addWidget(monitoringConsole, 1, 0, 1, 2);
prompt = new Prompt(centralWidget);
prompt->setObjectName(QStringLiteral("prompt"));
gridLayout->addWidget(prompt, 0, 0, 1, 2);
MainWindow->setCentralWidget(centralWidget);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0));
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H