aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlbuiltinfunctions_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlbuiltinfunctions_p.h')
-rw-r--r--src/qml/qml/qqmlbuiltinfunctions_p.h265
1 files changed, 265 insertions, 0 deletions
diff --git a/src/qml/qml/qqmlbuiltinfunctions_p.h b/src/qml/qml/qqmlbuiltinfunctions_p.h
new file mode 100644
index 0000000000..9ceedad28b
--- /dev/null
+++ b/src/qml/qml/qqmlbuiltinfunctions_p.h
@@ -0,0 +1,265 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QQMLBUILTINFUNCTIONS_P_H
+#define QQMLBUILTINFUNCTIONS_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <private/qjsengine_p.h>
+#include <private/qqmlglobal_p.h>
+#include <private/qqmlplatform_p.h>
+#include <private/qv4functionobject_p.h>
+
+#include <QtCore/qnamespace.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qsize.h>
+#include <QtCore/qrect.h>
+#include <QtCore/qpoint.h>
+
+#include <QtQml/qqmlcomponent.h>
+#include <QtQml/qqmlengine.h>
+
+QT_BEGIN_NAMESPACE
+
+class Q_QML_EXPORT QtObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QQmlApplication *application READ application CONSTANT)
+ Q_PROPERTY(QQmlPlatform *platform READ platform CONSTANT)
+ Q_PROPERTY(QObject *inputMethod READ inputMethod CONSTANT)
+ Q_PROPERTY(QObject *styleHints READ styleHints CONSTANT)
+
+#if QT_CONFIG(translation)
+ Q_PROPERTY(QString uiLanguage READ uiLanguage WRITE setUiLanguage BINDABLE uiLanguageBindable)
+#endif
+
+ QML_NAMED_ELEMENT(Qt)
+ QML_SINGLETON
+ QML_EXTENDED_NAMESPACE(Qt)
+ QML_ADDED_IN_VERSION(2, 0)
+
+ Q_CLASSINFO("QML.StrictArguments", "true")
+
+public:
+ enum LoadingMode { Asynchronous = 0, Synchronous = 1 };
+ Q_ENUM(LoadingMode);
+
+ static QtObject *create(QQmlEngine *, QJSEngine *jsEngine);
+
+ Q_INVOKABLE QJSValue include(const QString &url, const QJSValue &callback = QJSValue()) const;
+ Q_INVOKABLE bool isQtObject(const QJSValue &value) const;
+
+ Q_INVOKABLE QVariant color(const QString &name) const;
+ Q_INVOKABLE QVariant rgba(double r, double g, double b, double a = 1) const;
+ Q_INVOKABLE QVariant hsla(double h, double s, double l, double a = 1) const;
+ Q_INVOKABLE QVariant hsva(double h, double s, double v, double a = 1) const;
+ Q_INVOKABLE bool colorEqual(const QVariant &lhs, const QVariant &rhs) const;
+
+ Q_INVOKABLE QRectF rect(double x, double y, double width, double height) const;
+ Q_INVOKABLE QPointF point(double x, double y) const;
+ Q_INVOKABLE QSizeF size(double width, double height) const;
+ Q_INVOKABLE QVariant vector2d(double x, double y) const;
+ Q_INVOKABLE QVariant vector3d(double x, double y, double z) const;
+ Q_INVOKABLE QVariant vector4d(double x, double y, double z, double w) const;
+ Q_INVOKABLE QVariant quaternion(double scalar, double x, double y, double z) const;
+
+ Q_INVOKABLE QVariant matrix4x4() const;
+ Q_INVOKABLE QVariant matrix4x4(double m11, double m12, double m13, double m14,
+ double m21, double m22, double m23, double m24,
+ double m31, double m32, double m33, double m34,
+ double m41, double m42, double m43, double m44) const;
+ Q_INVOKABLE QVariant matrix4x4(const QJSValue &value) const;
+
+ Q_INVOKABLE QVariant lighter(const QJSValue &color, double factor = 1.5) const;
+ Q_INVOKABLE QVariant darker(const QJSValue &color, double factor = 2.0) const;
+ Q_INVOKABLE QVariant alpha(const QJSValue &baseColor, double value) const;
+ Q_INVOKABLE QVariant tint(const QJSValue &baseColor, const QJSValue &tintColor) const;
+
+ Q_INVOKABLE QString formatDate(QDate date, const QString &format) const;
+ Q_INVOKABLE QString formatDate(const QDateTime &dateTime, const QString &format) const;
+ Q_INVOKABLE QString formatDate(const QString &string, const QString &format) const;
+ Q_INVOKABLE QString formatDate(QDate date, Qt::DateFormat format) const;
+ Q_INVOKABLE QString formatDate(const QDateTime &dateTime, Qt::DateFormat format) const;
+ Q_INVOKABLE QString formatDate(const QString &string, Qt::DateFormat format) const;
+
+ Q_INVOKABLE QString formatTime(QTime time, const QString &format) const;
+ Q_INVOKABLE QString formatTime(const QDateTime &dateTime, const QString &format) const;
+ Q_INVOKABLE QString formatTime(const QString &time, const QString &format) const;
+ Q_INVOKABLE QString formatTime(QTime time, Qt::DateFormat format) const;
+ Q_INVOKABLE QString formatTime(const QDateTime &dateTime, Qt::DateFormat format) const;
+ Q_INVOKABLE QString formatTime(const QString &time, Qt::DateFormat format) const;
+
+ Q_INVOKABLE QString formatDateTime(const QDateTime &date, const QString &format) const;
+ Q_INVOKABLE QString formatDateTime(const QString &string, const QString &format) const;
+ Q_INVOKABLE QString formatDateTime(const QDateTime &date, Qt::DateFormat format) const;
+ Q_INVOKABLE QString formatDateTime(const QString &string, Qt::DateFormat format) const;
+
+#if QT_CONFIG(qml_locale)
+ Q_INVOKABLE QString formatDate(QDate date, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatDate(const QDateTime &dateTime, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatDate(const QString &string, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatTime(QTime time, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatTime(const QDateTime &dateTime, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatTime(const QString &time, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatDateTime(const QDateTime &date, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QString formatDateTime(const QString &string, const QLocale &locale = QLocale(),
+ QLocale::FormatType formatType = QLocale::ShortFormat) const;
+ Q_INVOKABLE QLocale locale() const;
+ Q_INVOKABLE QLocale locale(const QString &name) const;
+#endif
+
+ Q_INVOKABLE QUrl url(const QUrl &url) const;
+ Q_INVOKABLE QUrl resolvedUrl(const QUrl &url) const;
+ Q_INVOKABLE QUrl resolvedUrl(const QUrl &url, QObject *context) const;
+ Q_INVOKABLE bool openUrlExternally(const QUrl &url) const;
+
+ Q_INVOKABLE QVariant font(const QJSValue &fontSpecifier) const;
+ Q_INVOKABLE QStringList fontFamilies() const;
+
+ Q_INVOKABLE QString md5(const QString &data) const;
+ Q_INVOKABLE QString btoa(const QString &data) const;
+ Q_INVOKABLE QString atob(const QString &data) const;
+
+ Q_INVOKABLE void quit() const;
+ Q_INVOKABLE void exit(int retCode) const;
+
+ Q_INVOKABLE QObject *createQmlObject(const QString &qml, QObject *parent,
+ const QUrl &url = QUrl(QStringLiteral("inline"))) const;
+ Q_INVOKABLE QQmlComponent *createComponent(const QUrl &url, QObject *parent) const;
+ Q_INVOKABLE QQmlComponent *createComponent(
+ const QUrl &url, QQmlComponent::CompilationMode mode = QQmlComponent::PreferSynchronous,
+ QObject *parent = nullptr) const;
+
+ Q_INVOKABLE QQmlComponent *createComponent(const QString &moduleUri,
+ const QString &typeName, QObject *parent) const;
+ Q_INVOKABLE QQmlComponent *createComponent(const QString &moduleUri, const QString &typeName,
+ QQmlComponent::CompilationMode mode = QQmlComponent::PreferSynchronous,
+ QObject *parent = nullptr) const;
+
+ Q_INVOKABLE QJSValue binding(const QJSValue &function) const;
+ Q_INVOKABLE void callLater(QQmlV4FunctionPtr args);
+
+#if QT_CONFIG(translation)
+ QString uiLanguage() const;
+ void setUiLanguage(const QString &uiLanguage);
+ QBindable<QString> uiLanguageBindable();
+#endif
+
+ // Not const because created on first use, and parented to this.
+ QQmlPlatform *platform();
+ QQmlApplication *application();
+
+ QObject *inputMethod() const;
+ QObject *styleHints() const;
+
+private:
+ friend struct QV4::ExecutionEngine;
+
+ QtObject(QV4::ExecutionEngine *engine);
+
+ QQmlEngine *qmlEngine() const { return m_engine->qmlEngine(); }
+ QJSEngine *jsEngine() const { return m_engine->jsEngine(); }
+ QV4::ExecutionEngine *v4Engine() const { return m_engine; }
+
+ struct Contexts {
+ QQmlRefPointer<QQmlContextData> context;
+ QQmlRefPointer<QQmlContextData> effectiveContext;
+ };
+ Contexts getContexts() const;
+
+ QQmlPlatform *m_platform = nullptr;
+ QQmlApplication *m_application = nullptr;
+
+ QV4::ExecutionEngine *m_engine = nullptr;
+};
+
+namespace QV4 {
+
+namespace Heap {
+
+struct ConsoleObject : Object {
+ void init();
+};
+
+#define QQmlBindingFunctionMembers(class, Member) \
+ Member(class, Pointer, FunctionObject *, bindingFunction)
+DECLARE_HEAP_OBJECT(QQmlBindingFunction, FunctionObject) {
+ DECLARE_MARKOBJECTS(QQmlBindingFunction)
+ void init(const QV4::FunctionObject *bindingFunction);
+};
+
+}
+
+struct ConsoleObject : Object
+{
+ V4_OBJECT2(ConsoleObject, Object)
+
+ static ReturnedValue method_error(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_log(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_info(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_profile(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_profileEnd(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_time(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_timeEnd(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_count(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_trace(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_warn(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_assert(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_exception(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+
+};
+
+struct Q_QML_EXPORT GlobalExtensions {
+ static void init(Object *globalObject, QJSEngine::Extensions extensions);
+
+#if QT_CONFIG(translation)
+ static QString currentTranslationContext(ExecutionEngine *engine);
+ static ReturnedValue method_qsTranslate(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_qsTranslateNoOp(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_qsTr(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_qsTrNoOp(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_qsTrId(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_qsTrIdNoOp(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+#endif
+ static ReturnedValue method_gc(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+
+ // on String:prototype
+ static ReturnedValue method_string_arg(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
+
+};
+
+struct QQmlBindingFunction : public QV4::FunctionObject
+{
+ V4_OBJECT2(QQmlBindingFunction, FunctionObject)
+
+ Heap::FunctionObject *bindingFunction() const { return d()->bindingFunction; }
+ QQmlSourceLocation currentLocation() const; // from caller stack trace
+};
+
+inline bool FunctionObject::isBinding() const
+{
+ return d()->vtable() == QQmlBindingFunction::staticVTable();
+}
+
+}
+
+QT_END_NAMESPACE
+
+#endif // QQMLBUILTINFUNCTIONS_P_H