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