Possiable Scripting Object¶
This is nothing more than a rough 4am-coffee-powered rough concept.
Header File:
#ifndef SCRIPTINTERFACE_H
#define SCRIPTINTERFACE_H
#include <QObject>
struct userjoin_t
{
QString network;
QString channel;
QString userhost;
};
struct userpart_t
{
QString network;
QString channel;
QString userhost;
QString reason;
};
struct modeset_t
{
QString network;
QString channel;
QChar mode;
QString paramaters;
};
struct numeric_t
{
QString network;
int numeric;
QByteArray data;
};
Q_DECLARE_METATYPE(userjoin_t);
Q_DECLARE_METATYPE(userpart_t);
Q_DECLARE_METATYPE(modeset_t);
Q_DECLARE_METATYPE(numeric_t);
class ScriptInterface : public QObject
{
Q_OJBECT
public:
ScriptInterface();
void exposeToScripting(Command cmd, QVariant data);
enum Command { NetworkConnected, NetworkDisconnected, UserJoin, UserPart, ModeSet, ModeRemove, RawNumeric };
signals:
void networkConnected(QString network);
void networkDisconnected(QString network);
void userJoined(QString network, QString channel, QString userHost);
void userParted(QString network, QString channel, QString userHost, QString reason);
void modeSet(QString network, QString channel, QChar mode, QString paramaters);
void modeRemove(QString network, QString channel, QChar mode, QString parameters);
void rawNumeric(QString network, int numeric, QByteArray data);
};
#endif // SCRIPTINTERFACE_H
Code
#include "scriptinterface.h"
ScriptInterface::ScriptInterface()
{
}
void ScriptInterface::exposeToScripting(Command cmd, QVariant data)
{
switch(cmd)
{
case NetworkConnected:
QString network = qobject_cast<QString>(data);
emit networkConnected(network);
break;
case NetworkDisconnected:
QString network = qobject_cast<QString>(data);
emit networkDisonnected(network);
break;
case UserJoin:
userjoin_t mydata = qobject_cast<userjoin_t>(data);
emit userJoined(mydata.network, mydata.channel, mydata.userhost);
break;
case UserPart:
userpart_t mydata = qobject_cast<userpart_t>(data);
emit userParted(mydata.network, mydata.channel, mydata.userhost, mydata.reason);
break;
case ModeSet:
modeset_t mydata = qobject_cast<modeset_t>(data);
emit modeSet(mydata.network, mydata.channel, mydata.mode, mydata.paramaters);
break;
case ModeRemove:
modeset_t mydata = qobject_cast<modeset_t>(data);
emit modeRemove(mydata.network, mydata.channel, mydata.mode, mydata.paramaters);
break;
case RawNumeric:
numeric_t mydata = qobject_cast<numeric_t>(data);
emit networkConnected(mydata.network, mydata.numeric, mydata.data);
break;
default:
/* no clue, ignore */
break;
}
}