From e382e204a50ad617d432d933038de49963f08e52 Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Tue, 22 Dec 2015 17:53:29 +0100 Subject: [PATCH 1/5] Bind QUrl::toString --- lib/include/DOtherSide/DOtherSide.h | 1 + lib/src/DOtherSide.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index eebf995..9c99cd7 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -147,6 +147,7 @@ DOS_API void dos_qresource_register(const char* filename); // QUrl DOS_API void dos_qurl_create(void** vptr, const char* url, int parsingMode); DOS_API void dos_qurl_delete(void* vptr); +DOS_API void dos_qurl_to_string(void* vptr, char** result); #ifdef __cplusplus } diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index f4db538..9542bc0 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -566,3 +566,9 @@ void dos_qurl_delete(void* vptr) delete url; } +void dos_qurl_to_string(void* vptr, char** result) +{ + QUrl* url = reinterpret_cast(vptr); + convert_to_cstring(url->toString(), result); +} + From 4e920ce3b7a4149247108dd6d9613f8a4483b758 Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Tue, 22 Dec 2015 18:21:52 +0100 Subject: [PATCH 2/5] Bind QQuickView::setSource and QQuickView::setResizeMode --- lib/include/DOtherSide/DOtherSide.h | 2 ++ lib/src/DOtherSide.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index 9c99cd7..4751b79 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -41,7 +41,9 @@ DOS_API void dos_qqmlapplicationengine_delete(void* vptr); DOS_API void dos_qquickview_create(void** vptr); DOS_API void dos_qquickview_show(void* vptr); DOS_API void dos_qquickview_source(void* vptr, char** result); +DOS_API void dos_qquickview_set_source_url(void* vptr, void* url); DOS_API void dos_qquickview_set_source(void* vptr, const char* filename); +DOS_API void dos_qquickview_set_resize_mode(void* vptr, int resizeMode); DOS_API void dos_qquickview_delete(void* vptr); DOS_API void dos_qquickview_rootContext(void* vptr, void** result); diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index 9542bc0..f044098 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -142,6 +142,19 @@ void dos_qquickview_set_source(void* vptr, const char* filename) view->setSource(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + QDir::separator() + QString(filename))); } +void dos_qquickview_set_source_url(void* vptr, void* url) +{ + QQuickView* view = reinterpret_cast(vptr); + QUrl* _url = reinterpret_cast(url); + view->setSource(*_url); +} + +void dos_qquickview_set_resize_mode(void* vptr, int resizeMode) +{ + QQuickView* view = reinterpret_cast(vptr); + view->setResizeMode((QQuickView::ResizeMode) resizeMode); +} + void dos_qquickview_rootContext(void* vptr, void** context) { QQuickView* view = reinterpret_cast(vptr); From 02efef24ef2cf0829b661504ae8820091afc944c Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Wed, 23 Dec 2015 19:58:12 +0100 Subject: [PATCH 3/5] Bind QObject::findChild, QObject::objectName, QQmlApplicationEngine::rootObjects --- lib/include/DOtherSide/DOtherSide.h | 3 +++ lib/src/DOtherSide.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index 4751b79..0e19948 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -35,6 +35,7 @@ DOS_API void dos_qqmlapplicationengine_load(void* vptr, const char* filename); DOS_API void dos_qqmlapplicationengine_load_url(void* vptr, void* url); DOS_API void dos_qqmlapplicationengine_add_import_path(void* vptr, const char* path); DOS_API void dos_qqmlapplicationengine_context(void* vptr, void** context); +DOS_API void dos_qqmlapplicationengine_rootObjects(void* vptr, void*** array, int* array_length); DOS_API void dos_qqmlapplicationengine_delete(void* vptr); // QQuickView @@ -104,6 +105,8 @@ DOS_API void dos_qobject_property_create(void* vptr, const char* readSlot, const char* writeSlot, const char* notifySignal); +DOS_API void dos_qobject_objectName(void* vptr, char** result); +DOS_API void dos_qobject_findChild(void* vptr, const char* name, int options, void** child); DOS_API void dos_qobject_delete(void* vptr); // QModelIndex diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index f044098..542c04f 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -106,6 +106,20 @@ void dos_qqmlapplicationengine_context(void* vptr, void** context) *context = engine->rootContext(); } +void dos_qqmlapplicationengine_rootObjects(void* vptr, void*** array, int* array_length) +{ + QQmlApplicationEngine* engine = reinterpret_cast(vptr); + auto list = engine->rootObjects(); + // Note: On fringe architectures where `8 < CHAR_BIT` this may not allocate enough memory, + // as sizeof returns the number of chars required, while calloc/malloc expects + // the number of octets required. + QObject** objects = reinterpret_cast(calloc(list.length(), sizeof(QObject*))); + if (objects == NULL) return; + for (int i = 0; i < list.length(); i += 1) objects[i] = list.at(i); + *array = reinterpret_cast(objects); + *array_length = list.length(); +} + void dos_qqmlapplicationengine_delete(void* vptr) { QQmlApplicationEngine* engine = reinterpret_cast(vptr); @@ -401,6 +415,18 @@ void dos_qobject_property_create(void* vptr, QString(notifySignal)); } +void dos_qobject_objectName(void* vptr, char** result) +{ + QObject* object = reinterpret_cast(vptr); + convert_to_cstring(object->objectName(), result); +} + +void dos_qobject_findChild(void* vptr, const char* name, int options, void** child) +{ + QObject* object = reinterpret_cast(vptr); + *child = object->findChild(QString::fromUtf8(name), (Qt::FindChildOptions) options); +} + void dos_qmodelindex_create(void** vptr) { auto index = new QModelIndex(); From cfb05fae2570053994d9827ba04066656ffd7fe0 Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Thu, 24 Dec 2015 12:04:31 +0100 Subject: [PATCH 4/5] Changes for PR #31 --- lib/src/DOtherSide.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index 542c04f..e5c546e 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -109,12 +109,12 @@ void dos_qqmlapplicationengine_context(void* vptr, void** context) void dos_qqmlapplicationengine_rootObjects(void* vptr, void*** array, int* array_length) { QQmlApplicationEngine* engine = reinterpret_cast(vptr); - auto list = engine->rootObjects(); + QList list = engine->rootObjects(); // Note: On fringe architectures where `8 < CHAR_BIT` this may not allocate enough memory, // as sizeof returns the number of chars required, while calloc/malloc expects // the number of octets required. QObject** objects = reinterpret_cast(calloc(list.length(), sizeof(QObject*))); - if (objects == NULL) return; + if (objects == nullptr) return; for (int i = 0; i < list.length(); i += 1) objects[i] = list.at(i); *array = reinterpret_cast(objects); *array_length = list.length(); From de7d2f02f6db6e131bf632f061530d5b9eb91b6d Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Thu, 24 Dec 2015 12:16:37 +0100 Subject: [PATCH 5/5] More Changes for PR #31 --- lib/include/DOtherSide/DOtherSide.h | 3 +++ lib/src/DOtherSide.cpp | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index 0e19948..c97d197 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -55,6 +55,9 @@ DOS_API void dos_qqmlcontext_setcontextproperty(void* vptr, const char* name, vo // CharArray DOS_API void dos_chararray_delete(char* ptr); +// QObjectPtrArray +DOS_API void dos_qobjectptr_array_delete(void** ptr); + // QVariant DOS_API void dos_qvariant_create(void** vptr); DOS_API void dos_qvariant_create_int(void** vptr, int value); diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index e5c546e..7c8bcb0 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -110,10 +110,7 @@ void dos_qqmlapplicationengine_rootObjects(void* vptr, void*** array, int* array { QQmlApplicationEngine* engine = reinterpret_cast(vptr); QList list = engine->rootObjects(); - // Note: On fringe architectures where `8 < CHAR_BIT` this may not allocate enough memory, - // as sizeof returns the number of chars required, while calloc/malloc expects - // the number of octets required. - QObject** objects = reinterpret_cast(calloc(list.length(), sizeof(QObject*))); + auto objects = new QObject*[list.size()]; if (objects == nullptr) return; for (int i = 0; i < list.length(); i += 1) objects[i] = list.at(i); *array = reinterpret_cast(objects); @@ -180,6 +177,11 @@ void dos_chararray_delete(char* ptr) if (ptr) delete[] ptr; } +void dos_qobjectptr_array_delete(void** ptr) +{ + if (ptr) delete[] ptr; +} + void dos_qqmlcontext_baseUrl(void* vptr, char** result) { QQmlContext* context = reinterpret_cast(vptr);