From: Yang Gu <[email protected]>

---
 configure.ac    |    2 +-
 src/control.cpp |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 1 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4d10494..d5d674e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,7 +21,7 @@ AC_ARG_ENABLE(optimization, 
AC_HELP_STRING([--disable-optimization],
        fi
 ])
 
-PKG_CHECK_MODULES(QT, QtCore QtGui QtXml QtNetwork, dummy=yes,
+PKG_CHECK_MODULES(QT, QtCore QtGui QtXml QtNetwork  QtScript, dummy=yes,
                                                AC_MSG_ERROR(Qt is required))
 AC_SUBST(QT_CFLAGS)
 AC_SUBST(QT_LIBS)
diff --git a/src/control.cpp b/src/control.cpp
index 34a228f..9de4ef7 100644
--- a/src/control.cpp
+++ b/src/control.cpp
@@ -33,6 +33,8 @@
 #include <QFile>
 #include <QDir>
 #include <QtGui/QHeaderView>
+#include <QtScript>
+#include <qfilesystemwatcher.h>
 #include "attranslator.h"
 
 #define TWO_BYTE_MAX 65535
@@ -74,6 +76,7 @@ private slots:
     void simInsertRemove();
     void simAppStart();
     void simAppAbort();
+    void handleDirChanged(const QString &path);
 
 signals:
     void unsolicitedCommand(const QString &);
@@ -105,6 +108,10 @@ private:
         static int nextId;
     };
     QList<VoicemailItem> mailbox;
+    QScriptEngine engine;
+    QString dirPath;
+    QStringList fileList;
+    QFileSystemWatcher fileSystemWatcher;
 };
 #include "control.moc"
 
@@ -149,9 +156,62 @@ ControlWidget::ControlWidget(const QString &ruleFile, 
Control *parent)
 
     handleNewApp();
 
+    /* Export tabs to be accessed by script */
+    QScriptValue qsTab = engine.newQObject(ui->tab);
+    engine.globalObject().setProperty("tabRegistration", qsTab);
+
+    QScriptValue qsTab2 = engine.newQObject(ui->tab_2);
+    engine.globalObject().setProperty("tabCBM", qsTab2);
+
+    QScriptValue qsTab3 = engine.newQObject(ui->tab_3);
+    engine.globalObject().setProperty("tabSMS", qsTab3);
+
+    QScriptValue qsTab4 = engine.newQObject(ui->tab_4);
+    engine.globalObject().setProperty("tabVoiceMail", qsTab4);
+
+    QScriptValue qsTab5 = engine.newQObject(ui->tab_5);
+    engine.globalObject().setProperty("tabUSSD", qsTab5);
+
+    QScriptValue qsTab6 = engine.newQObject(ui->tab_6);
+    engine.globalObject().setProperty("tabSIM", qsTab6);
+
+    dirPath = "/tmp/scripts/";
+
+    QDir *dir = new QDir(dirPath);
+    dir->mkpath(dirPath);
+
+    fileList = dir->entryList(QDir::Files);
+
+    fileSystemWatcher.addPath(dirPath);
+    connect(&fileSystemWatcher, SIGNAL(directoryChanged(const QString &)), 
this, SLOT(handleDirChanged(const QString &)));
+
     show();
 }
 
+void ControlWidget::handleDirChanged(const QString &path)
+{
+    QDir *dir = new QDir(dirPath);
+    QStringList newFileList = dir->entryList(QDir::Files);
+
+    for (int i = 0; i < newFileList.size(); ++i)
+        if (!fileList.contains(newFileList.at(i))) {
+            QString fileName(dirPath + newFileList.at(i));
+            qDebug() << fileName << "was added to observed directory.";
+            QFile scriptFile(fileName);
+            scriptFile.open(QIODevice::ReadOnly);
+            QTextStream stream(&scriptFile);
+            QString contents = stream.readAll();
+            scriptFile.close();
+
+            QScriptValue qsScript = engine.evaluate(contents, fileName);
+            if (qsScript.isError())
+                qDebug() << fileName << 
qsScript.property("lineNumber").toInt32() << qsScript.toString();
+        }
+
+    fileList.clear();
+    fileList = newFileList;
+}
+
 void ControlWidget::closeEvent(QCloseEvent *event)
 {
     event->ignore();
-- 
1.7.0.4

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to