Changeset View
Changeset View
Standalone View
Standalone View
templates/scriptabletags/scriptablefilterexpression.cpp
Show All 14 Lines | 1 | /* | |||
---|---|---|---|---|---|
15 | 15 | | |||
16 | You should have received a copy of the GNU Lesser General Public | 16 | You should have received a copy of the GNU Lesser General Public | ||
17 | License along with this library. If not, see <http://www.gnu.org/licenses/>. | 17 | License along with this library. If not, see <http://www.gnu.org/licenses/>. | ||
18 | 18 | | |||
19 | */ | 19 | */ | ||
20 | 20 | | |||
21 | #include "scriptablefilterexpression.h" | 21 | #include "scriptablefilterexpression.h" | ||
22 | 22 | | |||
23 | #include <QtScript/QScriptEngine> | 23 | #include <QtQml/QJSEngine> | ||
24 | 24 | | |||
25 | #include "parser.h" | 25 | #include "parser.h" | ||
26 | #include "scriptablecontext.h" | 26 | #include "scriptablecontext.h" | ||
27 | #include "scriptablesafestring.h" | 27 | #include "scriptablesafestring.h" | ||
28 | #include "util.h" | 28 | #include "util.h" | ||
29 | 29 | | |||
30 | using namespace Grantlee; | 30 | using namespace Grantlee; | ||
31 | 31 | | |||
32 | Q_SCRIPT_DECLARE_QMETAOBJECT(ScriptableFilterExpression, QObject *) | | |||
33 | | ||||
34 | QScriptValue ScriptableFilterExpressionConstructor(QScriptContext *context, | | |||
35 | QScriptEngine *engine) | | |||
36 | { | | |||
37 | auto object = new ScriptableFilterExpression(engine); | | |||
38 | | ||||
39 | auto parserObj = context->argument(1).toQObject(); | | |||
40 | auto p = qobject_cast<Parser *>(parserObj); | | |||
41 | | ||||
42 | object->init(context->argument(0).toString(), p); | | |||
43 | | ||||
44 | return engine->newQObject(object); | | |||
45 | } | | |||
46 | | ||||
47 | ScriptableFilterExpression::ScriptableFilterExpression(QObject *parent) | 32 | ScriptableFilterExpression::ScriptableFilterExpression(QObject *parent) | ||
48 | : QObject(parent), m_engine(0) | 33 | : QObject(parent), m_engine(0) | ||
49 | { | 34 | { | ||
50 | } | 35 | } | ||
51 | 36 | | |||
52 | ScriptableFilterExpression::ScriptableFilterExpression(QScriptEngine *engine, | 37 | ScriptableFilterExpression::ScriptableFilterExpression(QJSEngine *engine, | ||
53 | QObject *parent) | 38 | QObject *parent) | ||
54 | : QObject(parent), m_engine(engine) | 39 | : QObject(parent), m_engine(engine) | ||
55 | { | 40 | { | ||
56 | } | 41 | } | ||
57 | 42 | | |||
58 | void ScriptableFilterExpression::init(const QString &content, | 43 | void ScriptableFilterExpression::init(const QString &content, | ||
59 | Grantlee::Parser *parser) | 44 | Grantlee::Parser *parser) | ||
60 | { | 45 | { | ||
61 | m_filterExpression = FilterExpression(content, parser); | 46 | m_filterExpression = FilterExpression(content, parser); | ||
62 | } | 47 | } | ||
63 | 48 | | |||
64 | QVariant ScriptableFilterExpression::resolve(ScriptableContext *c) | 49 | QVariant ScriptableFilterExpression::resolve(QObject *o) | ||
65 | { | 50 | { | ||
51 | ScriptableContext *c = qobject_cast<ScriptableContext *>(o); | ||||
66 | auto var = m_filterExpression.resolve(c->context()); | 52 | auto var = m_filterExpression.resolve(c->context()); | ||
67 | 53 | | |||
68 | if (Grantlee::isSafeString(var)) { | 54 | if (Grantlee::isSafeString(var)) { | ||
69 | auto ssObj = new ScriptableSafeString(m_engine); | 55 | auto ssObj = new ScriptableSafeString(m_engine); | ||
70 | ssObj->setContent(getSafeString(var)); | 56 | ssObj->setContent(getSafeString(var)); | ||
71 | return m_engine->newQObject(ssObj).toVariant(); | 57 | return m_engine->newQObject(ssObj).toVariant(); | ||
72 | } | 58 | } | ||
73 | return var; | 59 | return var; | ||
74 | } | 60 | } | ||
75 | 61 | | |||
76 | bool ScriptableFilterExpression::isTrue(ScriptableContext *c) | 62 | bool ScriptableFilterExpression::isTrue(QObject *o) | ||
77 | { | 63 | { | ||
64 | ScriptableContext *c = qobject_cast<ScriptableContext *>(o); | ||||
78 | return m_filterExpression.isTrue(c->context()); | 65 | return m_filterExpression.isTrue(c->context()); | ||
79 | } | 66 | } | ||
80 | 67 | | |||
81 | bool ScriptableFilterExpression::equals(ScriptableFilterExpression *other, | 68 | bool ScriptableFilterExpression::equals(ScriptableFilterExpression *other, | ||
82 | ScriptableContext *scriptableC) | 69 | QObject *scriptableO) | ||
83 | { | 70 | { | ||
71 | ScriptableContext *scriptableC = qobject_cast<ScriptableContext *>(scriptableO); | ||||
84 | auto c = scriptableC->context(); | 72 | auto c = scriptableC->context(); | ||
85 | return Grantlee::equals(m_filterExpression.resolve(c), | 73 | return Grantlee::equals(m_filterExpression.resolve(c), | ||
86 | other->m_filterExpression.resolve(c)); | 74 | other->m_filterExpression.resolve(c)); | ||
87 | } | 75 | } |