Basic support for qmlRegisterType
This commit is contained in:
parent
cd0c08fb50
commit
8d62c449be
|
@ -169,6 +169,7 @@ DOS_API void dos_qurl_to_string(void* vptr, char** result);
|
|||
// QDeclarative
|
||||
DOS_API void dos_qdeclarative_qmlregistertype(const char* uri, int major, int minor,
|
||||
const char* qmlName, int* result,
|
||||
void* staticMetaObject,
|
||||
CreateDObject createDObject,
|
||||
DeleteDObject deleteDObject);
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ namespace DOS {
|
|||
class DosQObjectWrapper : public QObject
|
||||
{
|
||||
public:
|
||||
static const QMetaObject staticMetaObject;
|
||||
|
||||
DosQObjectWrapper(QObject *parent = nullptr);
|
||||
~DosQObjectWrapper();
|
||||
|
||||
|
@ -21,6 +23,7 @@ namespace DOS {
|
|||
static DeleteDObject deleteDObject();
|
||||
static void setCreateDObject(CreateDObject createDObject);
|
||||
static void setDeleteDObject(DeleteDObject deleteDObject);
|
||||
static void setStaticMetaObject(const QMetaObject& metaObject);
|
||||
|
||||
private:
|
||||
void* m_dObject;
|
||||
|
|
|
@ -650,15 +650,19 @@ void dos_qabstractlistmodel_dataChanged(void *vptr,
|
|||
|
||||
void dos_qdeclarative_qmlregistertype(const char *uri, int major, int minor,
|
||||
const char *qml, int *result,
|
||||
void *staticMetaObject,
|
||||
CreateDObject createDObject,
|
||||
DeleteDObject deleteDObject)
|
||||
{
|
||||
static int i = 0;
|
||||
|
||||
auto holder = static_cast<DosIQMetaObjectHolder*>(staticMetaObject);
|
||||
|
||||
if (i == 0) {
|
||||
*result = qmlRegisterType<DosQObjectWrapper>(uri, major, minor, qml);
|
||||
DosQObjectWrapper::setCreateDObject(createDObject);
|
||||
DosQObjectWrapper::setDeleteDObject(deleteDObject);
|
||||
DosQObjectWrapper::setStaticMetaObject(*(holder->data()->metaObject()));
|
||||
*result = qmlRegisterType<DosQObjectWrapper>(uri, major, minor, qml);
|
||||
}
|
||||
|
||||
++i;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
namespace DOS {
|
||||
|
||||
const QMetaObject DosQObjectWrapper::staticMetaObject = QObject::staticMetaObject;
|
||||
CreateDObject DosQObjectWrapper::m_createDObject;
|
||||
DeleteDObject DosQObjectWrapper::m_deleteDObject;
|
||||
|
||||
|
@ -47,4 +48,9 @@ void DosQObjectWrapper::setCreateDObject(CreateDObject createDObject) { m_create
|
|||
|
||||
void DosQObjectWrapper::setDeleteDObject(DeleteDObject deleteDObject) { m_deleteDObject = deleteDObject; }
|
||||
|
||||
void DosQObjectWrapper::setStaticMetaObject(const QMetaObject &metaObject)
|
||||
{
|
||||
*(const_cast<QMetaObject*>(&staticMetaObject)) = metaObject;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue