Refactored the creation of the DosQObjectImpl
This commit is contained in:
parent
1804071311
commit
cc965c69b8
|
@ -14,6 +14,8 @@ class DosQAbstractListModel : public QAbstractListModel, public IDosQObject
|
||||||
public:
|
public:
|
||||||
/// Constructor
|
/// Constructor
|
||||||
DosQAbstractListModel(void* modelObject,
|
DosQAbstractListModel(void* modelObject,
|
||||||
|
OnMetaObject onMetaObject,
|
||||||
|
OnSlotExecuted onSlotExecuted,
|
||||||
RowCountCallback rowCountCallback,
|
RowCountCallback rowCountCallback,
|
||||||
ColumnCountCallback columnCountCallback,
|
ColumnCountCallback columnCountCallback,
|
||||||
DataCallback dataCallback,
|
DataCallback dataCallback,
|
||||||
|
@ -78,9 +80,6 @@ public:
|
||||||
const QModelIndex& bottomRight,
|
const QModelIndex& bottomRight,
|
||||||
const QVector<int>& roles = QVector<int>());
|
const QVector<int>& roles = QVector<int>());
|
||||||
|
|
||||||
/// Set the implementation
|
|
||||||
void setImpl(std::unique_ptr<IDosQObject> impl);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<IDosQObject> m_impl;
|
std::unique_ptr<IDosQObject> m_impl;
|
||||||
void* m_modelObject;
|
void* m_modelObject;
|
||||||
|
|
|
@ -15,7 +15,8 @@ class DosQObject : public QObject, public IDosQObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/// Constructor
|
/// Constructor
|
||||||
DosQObject();
|
DosQObject(OnMetaObject onMetaObject,
|
||||||
|
OnSlotExecuted onSlotExecuted);
|
||||||
|
|
||||||
/// Emit a signal
|
/// Emit a signal
|
||||||
bool emitSignal(const QString& name, const std::vector<QVariant>& arguments) override;
|
bool emitSignal(const QString& name, const std::vector<QVariant>& arguments) override;
|
||||||
|
|
|
@ -364,13 +364,10 @@ void dos_qobject_create(void** vptr, void* dObjectPointer,
|
||||||
DObjectCallback dObjectCallback)
|
DObjectCallback dObjectCallback)
|
||||||
{
|
{
|
||||||
|
|
||||||
auto dynamicQObject = new DosQObject();
|
auto dosQObject = new DosQObject(OnMetaObjectHandler(dObjectPointer, dMetaObjectCallback),
|
||||||
auto impl = std::make_unique<DosQObjectImpl>(dynamicQObject,
|
OnSlotExecutedHandler(dObjectPointer, dObjectCallback));
|
||||||
OnMetaObjectHandler(dObjectPointer, dMetaObjectCallback),
|
QQmlEngine::setObjectOwnership(dosQObject, QQmlEngine::CppOwnership);
|
||||||
OnSlotExecutedHandler(dObjectPointer, dObjectCallback));
|
*vptr = dosQObject;
|
||||||
dynamicQObject->setImpl(std::move(impl));
|
|
||||||
QQmlEngine::setObjectOwnership(dynamicQObject, QQmlEngine::CppOwnership);
|
|
||||||
*vptr = dynamicQObject;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dos_qobject_delete(void* vptr)
|
void dos_qobject_delete(void* vptr)
|
||||||
|
|
|
@ -1,18 +1,28 @@
|
||||||
#include "DOtherSide/DosQAbstractListModel.h"
|
#include "DOtherSide/DosQAbstractListModel.h"
|
||||||
|
#include "DOtherSide/DosQObjectImpl.h"
|
||||||
|
|
||||||
namespace DOS
|
namespace DOS
|
||||||
{
|
{
|
||||||
|
|
||||||
DosQAbstractListModel::DosQAbstractListModel(void *modelObject, RowCountCallback rowCountCallback, ColumnCountCallback columnCountCallback, DataCallback dataCallback, SetDataCallback setDataCallback, RoleNamesCallback roleNamesCallback, FlagsCallback flagsCallback, HeaderDataCallback headerDataCallback)
|
DosQAbstractListModel::DosQAbstractListModel(void *modelObject,
|
||||||
: m_impl(nullptr)
|
OnMetaObject onMetaObject,
|
||||||
, m_modelObject(modelObject)
|
OnSlotExecuted onSlotExecuted,
|
||||||
, m_rowCountCallback(rowCountCallback)
|
RowCountCallback rowCountCallback,
|
||||||
, m_columnCountCallback(columnCountCallback)
|
ColumnCountCallback columnCountCallback,
|
||||||
, m_dataCallback(dataCallback)
|
DataCallback dataCallback,
|
||||||
, m_setDataCallback(setDataCallback)
|
SetDataCallback setDataCallback,
|
||||||
, m_roleNamesCallback(roleNamesCallback)
|
RoleNamesCallback roleNamesCallback,
|
||||||
, m_flagsCallback(flagsCallback)
|
FlagsCallback flagsCallback,
|
||||||
, m_headerDataCallback(headerDataCallback)
|
HeaderDataCallback headerDataCallback)
|
||||||
|
: m_impl(std::make_unique<DosQObjectImpl>(this, std::move(onMetaObject), std::move(onSlotExecuted)))
|
||||||
|
, m_modelObject(std::move(modelObject))
|
||||||
|
, m_rowCountCallback(std::move(rowCountCallback))
|
||||||
|
, m_columnCountCallback(std::move(columnCountCallback))
|
||||||
|
, m_dataCallback(std::move(dataCallback))
|
||||||
|
, m_setDataCallback(std::move(setDataCallback))
|
||||||
|
, m_roleNamesCallback(std::move(roleNamesCallback))
|
||||||
|
, m_flagsCallback(std::move(flagsCallback))
|
||||||
|
, m_headerDataCallback(std::move(headerDataCallback))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,9 +142,4 @@ void DosQAbstractListModel::publicDataChanged(const QModelIndex &topLeft, const
|
||||||
emit dataChanged(topLeft, bottomRight, roles);
|
emit dataChanged(topLeft, bottomRight, roles);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DosQAbstractListModel::setImpl(std::unique_ptr<IDosQObject> impl)
|
|
||||||
{
|
|
||||||
m_impl = std::move(impl);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace DOS
|
} // namespace DOS
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
#include "DOtherSide/DosQObject.h"
|
#include "DOtherSide/DosQObject.h"
|
||||||
#include "DOtherSide/DosQMetaObject.h"
|
#include "DOtherSide/DosQMetaObject.h"
|
||||||
|
#include "DOtherSide/DosQObjectImpl.h"
|
||||||
#include <QtCore/QMetaMethod>
|
#include <QtCore/QMetaMethod>
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
|
|
||||||
namespace DOS
|
namespace DOS
|
||||||
{
|
{
|
||||||
|
|
||||||
DosQObject::DosQObject()
|
DosQObject::DosQObject(OnMetaObject onMetaObject, OnSlotExecuted onSlotExecuted)
|
||||||
: m_impl(nullptr)
|
: m_impl(std::make_unique<DosQObjectImpl>(this, std::move(onMetaObject), std::move(onSlotExecuted)))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,9 +30,4 @@ int DosQObject::qt_metacall(QMetaObject::Call callType, int index, void** args)
|
||||||
return m_impl->qt_metacall(callType, index, args);
|
return m_impl->qt_metacall(callType, index, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DosQObject::setImpl(std::unique_ptr<IDosQObject> impl)
|
|
||||||
{
|
|
||||||
m_impl = std::move(impl);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace DOS
|
} // namespace DOS
|
||||||
|
|
Loading…
Reference in New Issue