From 4aac5b2bb4caac92ae34ede944a04fe2cb5f0620 Mon Sep 17 00:00:00 2001 From: Anselme Date: Fri, 29 May 2015 20:09:05 +0200 Subject: [PATCH] debugged most of the features of the module version --- .gitignore | 1 + basemodule.cpp | 47 +++++++++++++++++++------------ botapp.cpp | 8 +++--- botapp.h | 4 +-- ircbot.cpp | 2 +- main.cpp | 14 +++++++--- mainwindow.cpp | 2 ++ mainwindow.h | 5 ---- module.h | 4 +-- ui_mainwindow.h | 74 ------------------------------------------------- 10 files changed, 50 insertions(+), 111 deletions(-) delete mode 100644 ui_mainwindow.h diff --git a/.gitignore b/.gitignore index 3087d07..71f4eee 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ release/* *.Debug *.Release Makefile +ui_* \ No newline at end of file diff --git a/basemodule.cpp b/basemodule.cpp index 17e60c1..7158a73 100644 --- a/basemodule.cpp +++ b/basemodule.cpp @@ -1,4 +1,6 @@ #include "basemodule.h" +#include "message.h" +#include BaseModule::BaseModule() : Module(), status(OFFLINE) { @@ -7,38 +9,47 @@ BaseModule::BaseModule() : Module(), status(OFFLINE) 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) { case OFFLINE : 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; case ONLINE : - if(str.contains("PING")) + if(msg.command.compare("376") == 0) { status = ON_CHAN; - emit sendMsg(pong(msg.nick)); - emit sendMsg(join(getChan())); + answer += join(getChan()); + ret = true; } break; case ON_CHAN : - if(str.contains("PING")) - answer = pong(msg.nick); - return onChanHandler(msg); + ret |= onChanHandler(msg); break; } + return ret; } bool BaseModule::onChanHandler(Message msg) { bool ret = false; + User* src = users.getFromNick(msg.nick); + // si la ligne est un message if(msg.command.compare(QString("PRIVMSG"), Qt::CaseInsensitive) == 0) { // 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; } @@ -53,23 +64,23 @@ bool BaseModule::onChanHandler(Message msg) str.append(u->getNick()); str.append(" "); } - answer = say(str); + answer += say(str); ret = true; } } // renommage 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) - users.remove(msg.src); + users.remove(src); 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) { if(getNick().compare(msg.target2) == 0) { - answer = quit("i've been kicked :("); + answer += quit("i've been kicked :("); ret = true; } users.remove(users.getFromNick(msg.target2)); @@ -78,9 +89,9 @@ bool BaseModule::onChanHandler(Message msg) && msg.args.contains(getChan()) && getNick().compare(msg.nick) != 0) { - users.getOrAdd(msg.nick); - answer = whois(msg.nick); - ret = true; + users.getOrAdd(msg.nick); + answer += whois(msg.nick); + ret = true; } // 353 = code de la ligne qui liste les nicks connectés @@ -92,7 +103,7 @@ bool BaseModule::onChanHandler(Message msg) for(QString s : names) { users.getOrAdd(s); - answer = whois(s); + answer += whois(s); ret = true; } } diff --git a/botapp.cpp b/botapp.cpp index 25caa8e..c145a1e 100644 --- a/botapp.cpp +++ b/botapp.cpp @@ -59,10 +59,10 @@ int BotApp::exec() if(!nogui) { window = new MainWindow(); - QObject::connect(sock, SIGNAL(receivedMsg(QString)), window->getConsole(), SLOT(append(QString))); - QObject::connect(bot, SIGNAL(sendMsg(QString)), window->getConsole(), SLOT(append(QString))); - QObject::connect(window->getPrompt(), SIGNAL(sendMsg(QString)), sock, SLOT(sendMsg(QString))); - QObject::connect(window->getPrompt(), SIGNAL(returnPressed()), window->getPrompt(), SLOT(confirmationPerformed())); + QObject::connect(sock, SIGNAL(receivedMsg(QString)), (QObject*)window->getConsole(), SLOT(append(QString))); + QObject::connect(bot, SIGNAL(sendMsg(QString)), (QObject*)window->getConsole(), SLOT(append(QString))); + QObject::connect((QObject*)window->getPrompt(), SIGNAL(sendMsg(QString)), sock, SLOT(sendMsg(QString))); + QObject::connect((QObject*)window->getPrompt(), SIGNAL(returnPressed()), (QObject*)window->getPrompt(), SLOT(confirmationPerformed())); window->show(); } return sock->connectToServer(coreApp); diff --git a/botapp.h b/botapp.h index 67ded7a..4e58164 100644 --- a/botapp.h +++ b/botapp.h @@ -8,10 +8,8 @@ class IRCBot; class SocketIRC; class MainWindow; -class BotApp : public QObject +class BotApp { - Q_OBJECT - bool nogui = false; QString server = "irc.freenode.net"; int port = 6667; diff --git a/ircbot.cpp b/ircbot.cpp index 702556e..abe3f8a 100644 --- a/ircbot.cpp +++ b/ircbot.cpp @@ -13,7 +13,7 @@ void IRCBot::receiveMsg(QString str) for(Module* m : modules) { - if(m->messageHandler(msg)) + if(m->isEnabled() && m->messageHandler(msg)) emit sendMsg(m->getAnswer()); } } diff --git a/main.cpp b/main.cpp index a65de32..9df15da 100644 --- a/main.cpp +++ b/main.cpp @@ -4,14 +4,20 @@ 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"; } diff --git a/mainwindow.cpp b/mainwindow.cpp index 87d54f5..20f20bf 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,5 +1,7 @@ #include "mainwindow.h" #include "ui_mainwindow.h" +#include +#include "prompt.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), diff --git a/mainwindow.h b/mainwindow.h index d9f9669..ec525b9 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -5,9 +5,6 @@ class Prompt; class QTextBrowser; -class QSlider; -class QProgressBar; - namespace Ui { class MainWindow; } @@ -21,8 +18,6 @@ public: ~MainWindow(); QTextBrowser* getConsole(); - QSlider* getSwitch(); - QProgressBar* getLed(); Prompt* getPrompt(); private: Ui::MainWindow *ui; diff --git a/module.h b/module.h index a29d23e..fbfa40b 100644 --- a/module.h +++ b/module.h @@ -26,8 +26,8 @@ protected: public: Module() : enabled(true) {} - virtual bool messageHandler(Message msg); - virtual QString getName(); + virtual bool messageHandler(Message msg) = 0; + virtual QString getName() = 0; QString getAnswer(); bool isEnabled(); diff --git a/ui_mainwindow.h b/ui_mainwindow.h deleted file mode 100644 index c283a1c..0000000 --- a/ui_mainwindow.h +++ /dev/null @@ -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 -#include -#include -#include -#include -#include -#include -#include -#include -#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