diff options
Diffstat (limited to 'src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp')
-rw-r--r-- | src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp b/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp index 23bc43a566..08caa662c2 100644 --- a/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp +++ b/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp @@ -41,13 +41,17 @@ #include "qquickwritingsystemlistmodel_p.h" #include <QtGui/qfontdatabase.h> -#include <QtQml/qqml.h> #include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qjsengine.h> +#include <private/qqmlengine_p.h> +#include <private/qv8engine_p.h> +#include <private/qv4value_p.h> +#include <private/qv4engine_p.h> +#include <private/qv4object_p.h> QT_BEGIN_NAMESPACE +using namespace QV4; + class QQuickWritingSystemListModelPrivate { Q_DECLARE_PUBLIC(QQuickWritingSystemListModel) @@ -140,22 +144,23 @@ QStringList QQuickWritingSystemListModel::writingSystems() const return result; } -QJSValue QQuickWritingSystemListModel::get(int idx) const +QQmlV4Handle QQuickWritingSystemListModel::get(int idx) const { Q_D(const QQuickWritingSystemListModel); - QQmlEngine *engine = qmlContext(this)->engine(); - if (idx < 0 || idx >= count()) - return engine->newObject(); - - QJSValue result = engine->newObject(); - int count = d->roleNames.keys().count(); - for (int i = 0; i < count; ++i) - result.setProperty(QString(d->roleNames[Qt::UserRole + i + 1]), data(index(idx, 0), Qt::UserRole + i + 1).toString()); + return QQmlV4Handle(Value::undefinedValue()); - return result; + QQmlEngine *engine = qmlContext(this)->engine(); + QV8Engine *v8engine = QQmlEnginePrivate::getV8Engine(engine); + ExecutionEngine *v4engine = QV8Engine::getV4(v8engine); + Object *o = v4engine->newObject(); + for (int ii = 0; ii < d->roleNames.keys().count(); ++ii) { + Property *p = o->insertMember(v4engine->newIdentifier(d->roleNames[Qt::UserRole + ii + 1]), PropertyAttributes()); + p->value = Value::fromReturnedValue(v8engine->fromVariant(data(index(idx, 0), Qt::UserRole + ii + 1))); + } + return QQmlV4Handle(Value::fromObject(o)); } void QQuickWritingSystemListModel::classBegin() |