added module management to base module
This commit is contained in:
		
							parent
							
								
									4aac5b2bb4
								
							
						
					
					
						commit
						a9caac5674
					
				@ -67,6 +67,57 @@ bool BaseModule::onChanHandler(Message msg)
 | 
				
			|||||||
            answer += say(str);
 | 
					            answer += say(str);
 | 
				
			||||||
            ret = true;
 | 
					            ret = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // affiche l'aide
 | 
				
			||||||
 | 
					        else if(msg.args.compare("!help") == 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            QString str = "Available commands : !help !list";
 | 
				
			||||||
 | 
					            if(src != NULL && src->isOp())
 | 
				
			||||||
 | 
					                str += " !update !module";
 | 
				
			||||||
 | 
					            answer += privateSay(str, msg.nick);
 | 
				
			||||||
 | 
					            ret = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // gère les modules
 | 
				
			||||||
 | 
					        else if(msg.args.startsWith("!module") && src != NULL && src->isOp())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            QStringList list = msg.args.split(' ');
 | 
				
			||||||
 | 
					            QString command = list.size() < 2 ? "" : list[1];
 | 
				
			||||||
 | 
					            if(command.compare("list") == 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                QString str = "Available modules : ";
 | 
				
			||||||
 | 
					                for(int i=0; i<getNbModules(); ++i)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Module* m = getModule(i);
 | 
				
			||||||
 | 
					                    str += m->getName() + (m->isEnabled() ? "[ON] " : "[OFF] ");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                answer += say(str);
 | 
				
			||||||
 | 
					                ret = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if(list.size() > 2 && (command.compare("disable") == 0 || command.compare("enable") == 0))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                bool newStatus = command.compare("enable") == 0;
 | 
				
			||||||
 | 
					                for(int i=2; i<list.size(); ++i)
 | 
				
			||||||
 | 
					                for(int j=1; j<getNbModules(); ++j)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Module* m = getModule(j);
 | 
				
			||||||
 | 
					                    if(m->getName().compare(list[i]) == 0)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if(m->isEnabled() != newStatus)
 | 
				
			||||||
 | 
					                            answer += say((newStatus ? "enabled module " : "disabled module ") + list[i]);
 | 
				
			||||||
 | 
					                        m->setEnabled(newStatus);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        answer += say("no module named " + list[i]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                ret = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                answer += say("usage : !module (list | enable/disable <targets>)");
 | 
				
			||||||
 | 
					                ret = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // renommage
 | 
					    // renommage
 | 
				
			||||||
 | 
				
			|||||||
@ -23,6 +23,7 @@ void IRCBot::addModule(Module* module)
 | 
				
			|||||||
    modules.push_back(module);
 | 
					    modules.push_back(module);
 | 
				
			||||||
    module->setChan(chan);
 | 
					    module->setChan(chan);
 | 
				
			||||||
    module->setNick(nick);
 | 
					    module->setNick(nick);
 | 
				
			||||||
 | 
					    module->setModuleList(&modules);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void IRCBot::disconnect()
 | 
					void IRCBot::disconnect()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								ircbot.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								ircbot.h
									
									
									
									
									
								
							@ -22,6 +22,7 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    void addModule(Module* module);
 | 
					    void addModule(Module* module);
 | 
				
			||||||
 | 
					    BaseModule* getBaseModule();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public slots:
 | 
					public slots:
 | 
				
			||||||
    void receiveMsg(QString msg);
 | 
					    void receiveMsg(QString msg);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								module.cpp
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								module.cpp
									
									
									
									
									
								
							@ -25,6 +25,20 @@ QString Module::getChan()
 | 
				
			|||||||
    return chan;
 | 
					    return chan;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Module::getNbModules()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if(modules == NULL)
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    return modules->size();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Module* Module::getModule(int index)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if(modules == NULL)
 | 
				
			||||||
 | 
					        return NULL;
 | 
				
			||||||
 | 
					    return modules->at(index);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Module::setNick(QString nick_)
 | 
					void Module::setNick(QString nick_)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    nick = nick_;
 | 
					    nick = nick_;
 | 
				
			||||||
@ -35,6 +49,11 @@ void Module::setChan(QString chan_)
 | 
				
			|||||||
    chan = chan_;
 | 
					    chan = chan_;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Module::setModuleList(std::vector<Module*>* modList)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    modules = modList;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// IRC COMMANDS
 | 
					// IRC COMMANDS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QString Module::pong(QString target)
 | 
					QString Module::pong(QString target)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								module.h
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								module.h
									
									
									
									
									
								
							@ -2,6 +2,7 @@
 | 
				
			|||||||
#define MODULE_H
 | 
					#define MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QString>
 | 
					#include <QString>
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Message;
 | 
					class Message;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -11,10 +12,16 @@ private:
 | 
				
			|||||||
    bool enabled;
 | 
					    bool enabled;
 | 
				
			||||||
    QString nick;
 | 
					    QString nick;
 | 
				
			||||||
    QString chan;
 | 
					    QString chan;
 | 
				
			||||||
 | 
					    std::vector<Module*>* modules;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
    QString answer;
 | 
					    QString answer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QString getNick();
 | 
				
			||||||
 | 
					    QString getChan();
 | 
				
			||||||
 | 
					    int getNbModules();
 | 
				
			||||||
 | 
					    Module* getModule(int index);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QString pong(QString target);
 | 
					    QString pong(QString target);
 | 
				
			||||||
    QString join(QString theChan);
 | 
					    QString join(QString theChan);
 | 
				
			||||||
    QString privateSay(QString str, QString target);
 | 
					    QString privateSay(QString str, QString target);
 | 
				
			||||||
@ -24,7 +31,7 @@ protected:
 | 
				
			|||||||
    QString quit(QString str);
 | 
					    QString quit(QString str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    Module() : enabled(true) {}
 | 
					    Module() : enabled(true), modules(NULL) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual bool messageHandler(Message msg) = 0;
 | 
					    virtual bool messageHandler(Message msg) = 0;
 | 
				
			||||||
    virtual QString getName() = 0;
 | 
					    virtual QString getName() = 0;
 | 
				
			||||||
@ -32,11 +39,10 @@ public:
 | 
				
			|||||||
    QString getAnswer();
 | 
					    QString getAnswer();
 | 
				
			||||||
    bool isEnabled();
 | 
					    bool isEnabled();
 | 
				
			||||||
    void setEnabled(bool newStatus);
 | 
					    void setEnabled(bool newStatus);
 | 
				
			||||||
    QString getNick();
 | 
					 | 
				
			||||||
    QString getChan();
 | 
					 | 
				
			||||||
    void setNick(QString nick_);
 | 
					    void setNick(QString nick_);
 | 
				
			||||||
    void setChan(QString chan_);
 | 
					    void setChan(QString chan_);
 | 
				
			||||||
    // TODO: add serialization methods
 | 
					    void setModuleList(std::vector<Module*>* modList);
 | 
				
			||||||
 | 
					    //TODO: add serialization methods
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // MODULE_H
 | 
					#endif // MODULE_H
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user