more changes to bluemonkey
authorKevron Rees <tripzero.kev@gmail.com>
Fri, 7 Jun 2013 23:55:10 +0000 (16:55 -0700)
committerKevron Rees <tripzero.kev@gmail.com>
Fri, 7 Jun 2013 23:55:10 +0000 (16:55 -0700)
examples/bluemonkey/config.js
plugins/bluemonkey/bluemonkey.cpp
plugins/bluemonkey/bluemonkey.h
plugins/bluemonkey/irccoms.cpp

index 6a77033..363f3f8 100644 (file)
@@ -1,4 +1,5 @@
 var speedProperty = bluemonkey.subscribeTo("VehicleSpeed");
 
+bluemonkey.loadConfig("customPrograms.js");
 
        
index 05ea3ee..6dd2670 100644 (file)
@@ -26,6 +26,7 @@
 #include <QScriptEngine>
 #include <QString>
 #include <QFile>
+#include <QTimer>
 
 extern "C" AbstractSinkManager * create(AbstractRoutingEngine* routingengine, map<string, string> config)
 {
@@ -70,21 +71,19 @@ QVariant gvariantToQVariant(GVariant *value)
        }
 }
 
-BluemonkeySink::BluemonkeySink(AbstractRoutingEngine* e, map<string, string> config): QObject(0), AbstractSink(e, config)
+BluemonkeySink::BluemonkeySink(AbstractRoutingEngine* e, map<string, string> config): QObject(0), AbstractSink(e, config), engine(nullptr)
 {
        irc = new IrcCommunication(this);
        irc->connect("chat.freenode.com",8001,"","tripzero","bluemonkey","");
        connect(irc,&IrcCommunication::connected, [&]() {
                irc->join("#linuxice");
+               irc->join("#bluemonkey");
        });
 
-       engine = new QScriptEngine(this);
+       reloadEngine();
 
        auth = new Authenticate(this);
 
-       QScriptValue value = engine->newQObject(this);
-       engine->globalObject().setProperty("bluemonkey", value);
-
        connect(irc, &IrcCommunication::message, [&](QString sender, QString prefix, QString codes ) {
 
                if(codes.contains("authenticate"))
@@ -116,7 +115,7 @@ BluemonkeySink::BluemonkeySink(AbstractRoutingEngine* e, map<string, string> con
                }
        });
 
-       loadConfig("config.js");
+
 
 }
 
@@ -153,6 +152,17 @@ bool BluemonkeySink::authenticate(QString pass)
 
 void BluemonkeySink::loadConfig(QString str)
 {
+       configsToLoad.append(str);
+       QTimer::singleShot(1,this,SLOT(loadConfigPriv()));
+}
+
+void BluemonkeySink::loadConfigPriv()
+{
+       if(!configsToLoad.count()) return;
+
+       QString str = configsToLoad.first();
+       configsToLoad.pop_front();
+
        QFile file(str);
        if(!file.open(QIODevice::ReadOnly))
        {
@@ -164,7 +174,34 @@ void BluemonkeySink::loadConfig(QString str)
 
        file.close();
 
-       engine->evaluate(script);
+       QScriptValue val = engine->evaluate(script);
+
+       qDebug()<<val.toString();
+}
+
+void BluemonkeySink::reloadEngine()
+{
+       if(engine)
+               engine->deleteLater();
+
+       engine = new QScriptEngine(this);
+
+       QScriptValue value = engine->newQObject(this);
+       engine->globalObject().setProperty("bluemonkey", value);
+
+       loadConfig("config.js");
+}
+
+void BluemonkeySink::writeProgram(QString program)
+{
+       QFile file("customPrograms.js");
+
+       file.open(QIODevice::ReadWrite | QIODevice::Append);
+
+       file.write(program.toUtf8());
+       file.write("\n");
+
+       file.close();
 }
 
 
index 96b7297..c7b1e21 100644 (file)
@@ -80,10 +80,16 @@ public Q_SLOTS:
 
        void loadConfig(QString str);
 
-Q_SIGNALS:
+       void reloadEngine();
+
+       void writeProgram(QString program);
+
+private Q_SLOTS: /// methods:
 
+       void loadConfigPriv();
 
 private:
+       QStringList configsToLoad;
        IrcCommunication* irc;
        QScriptEngine* engine;
        Authenticate* auth;
index 75d7231..a32358a 100644 (file)
@@ -112,7 +112,10 @@ void IrcCommunication::join(QString channel)
 
 void IrcCommunication::reconnect()
 {
-       QTimer::singleShot(5000,session,SLOT(open()));
+       if(session->socket()->state() == QAbstractSocket::ConnectingState)
+               QTimer::singleShot(5000,this,SLOT(reconnect()));
+       else
+               QTimer::singleShot(5000,session,SLOT(open()));
 }
 
 /*void IrcCommunication::sslError(QList<QSslError>)