From d71da6200b0f46f6d6aae06ce2bd6dab6a0d40fa Mon Sep 17 00:00:00 2001 From: Moritz Maxeiner Date: Sat, 5 Dec 2015 17:33:54 +0100 Subject: [PATCH] Add functionality to load assets with the Qt Resource System Use case: Load application QML file and/or vendor QML modules from external binary resources (RCC) --- lib/include/DOtherSide/DOtherSide.h | 9 +++++++++ lib/src/DOtherSide.cpp | 30 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index 773e297..90bb961 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -29,6 +29,8 @@ DOS_API void dos_qapplication_delete(); // QQmlApplicationEngine DOS_API void dos_qqmlapplicationengine_create(void** vptr); 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_delete(void* vptr); @@ -136,6 +138,13 @@ DOS_API void dos_qabstractlistmodel_endResetModel(void* vptr); DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, void* topLeft, void* bottomRight, int* rolesPtr, int rolesLength); DOS_API void dos_qabstractlistmodel_delete(void* vptr); +// QResource +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); + #ifdef __cplusplus } #endif diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index ada0ac6..77ad69d 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "DOtherSide/DynamicQObject.h" #include "DOtherSide/BaseQAbstractListModel.h" @@ -80,6 +81,19 @@ void dos_qqmlapplicationengine_load(void* vptr, const char* filename) engine->load(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + QDir::separator() + QString(filename))); } +void dos_qqmlapplicationengine_load_url(void* vptr, void* url) +{ + QQmlApplicationEngine* engine = reinterpret_cast(vptr); + QUrl* qurl = reinterpret_cast(url); + engine -> load(*qurl); +} + +void dos_qqmlapplicationengine_add_import_path(void* vptr, const char* path) +{ + QQmlApplicationEngine* engine = reinterpret_cast(vptr); + engine -> addImportPath(QString(path)); +} + void dos_qqmlapplicationengine_context(void* vptr, void** context) { QQmlApplicationEngine* engine = reinterpret_cast(vptr); @@ -531,3 +545,19 @@ void dos_qhash_int_qbytearray_value(QHashIntQByteArrayVoidPtr vptr, int key, cha *result = qstrdup(value.data()); } +void dos_qresource_register(const char* filename) +{ + QResource::registerResource(QString(filename)); +} + +void dos_qurl_create(void** vptr, const char* url, int parsingMode) +{ + *vptr = new QUrl(QString(url), (QUrl::ParsingMode) parsingMode); +} + +void dos_qurl_delete(void* vptr) +{ + QUrl* url = reinterpret_cast(vptr); + delete url; +} +