2011-02-26 18:02:43 +00:00
|
|
|
#include "Evaluate.h"
|
|
|
|
#include "WebPage.h"
|
2012-04-04 22:18:17 +00:00
|
|
|
#include "WebPageManager.h"
|
2011-02-26 18:02:43 +00:00
|
|
|
#include <iostream>
|
|
|
|
|
2012-07-08 19:04:30 +00:00
|
|
|
Evaluate::Evaluate(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
|
2011-02-26 18:02:43 +00:00
|
|
|
m_buffer = "";
|
|
|
|
}
|
|
|
|
|
2012-03-16 23:58:58 +00:00
|
|
|
void Evaluate::start() {
|
|
|
|
QVariant result = page()->currentFrame()->evaluateJavaScript(arguments()[0]);
|
2011-02-26 18:02:43 +00:00
|
|
|
addVariant(result);
|
2011-05-05 21:45:44 +00:00
|
|
|
emit finished(new Response(true, m_buffer));
|
2011-02-26 18:02:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Evaluate::addVariant(QVariant &object) {
|
|
|
|
if (object.isValid()) {
|
|
|
|
switch(object.type()) {
|
|
|
|
case QMetaType::QString:
|
|
|
|
{
|
|
|
|
QString string = object.toString();
|
|
|
|
addString(string);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case QMetaType::QVariantList:
|
|
|
|
{
|
|
|
|
QVariantList list = object.toList();
|
|
|
|
addArray(list);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case QMetaType::Double:
|
|
|
|
m_buffer.append(object.toString());
|
|
|
|
break;
|
|
|
|
case QMetaType::QVariantMap:
|
|
|
|
{
|
|
|
|
QVariantMap map = object.toMap();
|
|
|
|
addMap(map);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case QMetaType::Bool:
|
|
|
|
{
|
|
|
|
m_buffer.append(object.toString());
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
m_buffer.append("null");
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
m_buffer.append("null");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void Evaluate::addString(QString &string) {
|
|
|
|
QString escapedString(string);
|
|
|
|
escapedString.replace("\"", "\\\"");
|
|
|
|
m_buffer.append("\"");
|
|
|
|
m_buffer.append(escapedString);
|
|
|
|
m_buffer.append("\"");
|
|
|
|
}
|
|
|
|
|
|
|
|
void Evaluate::addArray(QVariantList &list) {
|
|
|
|
m_buffer.append("[");
|
|
|
|
for (int i = 0; i < list.length(); i++) {
|
|
|
|
if (i > 0)
|
|
|
|
m_buffer.append(",");
|
|
|
|
addVariant(list[i]);
|
|
|
|
}
|
|
|
|
m_buffer.append("]");
|
|
|
|
}
|
|
|
|
|
|
|
|
void Evaluate::addMap(QVariantMap &map) {
|
|
|
|
m_buffer.append("{");
|
|
|
|
QMapIterator<QString, QVariant> iterator(map);
|
|
|
|
while (iterator.hasNext()) {
|
|
|
|
iterator.next();
|
|
|
|
QString key = iterator.key();
|
|
|
|
QVariant value = iterator.value();
|
|
|
|
addString(key);
|
|
|
|
m_buffer.append(":");
|
|
|
|
addVariant(value);
|
|
|
|
if (iterator.hasNext())
|
|
|
|
m_buffer.append(",");
|
|
|
|
}
|
|
|
|
m_buffer.append("}");
|
|
|
|
}
|