Merge pull request #30 from Calrama/resource

Added support for QResource and QUrl
This commit is contained in:
Filippo Cucchetto 2015-12-06 01:33:12 +01:00
commit fbcd50d673
2 changed files with 47 additions and 0 deletions

View File

@ -14,6 +14,9 @@ extern "C"
{
#endif
// QCoreApplication
DOS_API void dos_qcoreapplication_application_dir_path(char** result);
// QGuiApplication
DOS_API void dos_qguiapplication_create();
DOS_API void dos_qguiapplication_exec();
@ -29,6 +32,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 +141,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

View File

@ -6,6 +6,7 @@
#include <QtCore/QDebug>
#include <QtCore/QModelIndex>
#include <QtCore/QHash>
#include <QtCore/QResource>
#include <QtGui/QGuiApplication>
#include <QtQml/QQmlContext>
#include <QtQml/QQmlApplicationEngine>
@ -23,6 +24,11 @@ void convert_to_cstring(const QString& source, char** destination)
*destination = qstrdup(array.data());
}
void dos_qcoreapplication_application_dir_path(char** result)
{
convert_to_cstring(QCoreApplication::applicationDirPath(), result);
}
void dos_qguiapplication_create()
{
static int argc = 1;
@ -80,6 +86,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<QQmlApplicationEngine*>(vptr);
QUrl* qurl = reinterpret_cast<QUrl*>(url);
engine->load(*qurl);
}
void dos_qqmlapplicationengine_add_import_path(void* vptr, const char* path)
{
QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr);
engine->addImportPath(QString(path));
}
void dos_qqmlapplicationengine_context(void* vptr, void** context)
{
QQmlApplicationEngine* engine = reinterpret_cast<QQmlApplicationEngine*>(vptr);
@ -531,3 +550,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::fromUtf8(filename));
}
void dos_qurl_create(void** vptr, const char* url, int parsingMode)
{
*vptr = new QUrl(QString::fromUtf8(url), (QUrl::ParsingMode) parsingMode);
}
void dos_qurl_delete(void* vptr)
{
QUrl* url = reinterpret_cast<QUrl*>(vptr);
delete url;
}