SparrowBot/main.cpp
2015-05-26 20:06:24 +02:00

76 lines
2.2 KiB
C++

#include "mainwindow.h"
#include "socketirc.h"
#include "sparrowbot.h"
#include <QApplication>
int main(int argc, char *argv[])
{
bool nogui = false;
QString server = "irc.freenode.net";
int port = 6667;
QString nick = "SparrowBotDebug";
QString chan = "epicsparrow";
// parsing arguments
for(int i=1; i<argc; ++i)
{
QString str = QString(argv[i]);
if(str.compare("-nogui") == 0)
nogui = true;
else if(str.contains('='))
{
QStringList argList = str.split('=');
if(argList.size() == 2)
{
QString key = argList.at(0);
if(key.compare("server") == 0)
server = argList.at(1);
else if(key.compare("port") == 0)
port = argList.at(1).toInt();
else if(key.compare("nick") == 0)
nick = argList.at(1);
else if(key.compare("chan") == 0)
chan = argList.at(1);
}
}
}
// create the socket
SocketIRC sock(server, port);
// create the bot
SparrowBot* bot = new SparrowBot(nick, chan);
// connect the bot to the socket
QObject::connect(&sock, SIGNAL(receivedMsg(QString)), bot, SLOT(receiveMsg(QString)));
QObject::connect(bot, SIGNAL(sendMsg(QString)), &sock, SLOT(sendMsg(QString)));
// set up UI
if(!nogui)
{
QApplication app(argc, argv);
// init window
MainWindow w;
QObject::connect(&sock, SIGNAL(receivedMsg(QString)), w.getConsole(), SLOT(append(QString)));
QObject::connect(bot, SIGNAL(sendMsg(QString)), w.getConsole(), SLOT(append(QString)));
QObject::connect(w.getPrompt(), SIGNAL(sendMsg(QString)), &sock, SLOT(sendMsg(QString)));
QObject::connect(w.getPrompt(), SIGNAL(returnPressed()), w.getPrompt(), SLOT(confirmationPerformed()));
w.show();
QObject::connect(&app, SIGNAL(aboutToQuit()), bot, SLOT(disconnect()));
sock.connectToServer(&app);
}
else
{
QCoreApplication coreApp(argc, argv);
QObject::connect(&coreApp, SIGNAL(aboutToQuit()), bot, SLOT(disconnect()));
sock.connectToServer(&coreApp);
}
delete(bot);
return 0;
}