mirror of
https://github.com/status-im/dotherside.git
synced 2025-02-11 20:16:47 +00:00
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:
|
||||
/// Constructor
|
||||
DosQAbstractListModel(void* modelObject,
|
||||
OnMetaObject onMetaObject,
|
||||
OnSlotExecuted onSlotExecuted,
|
||||
RowCountCallback rowCountCallback,
|
||||
ColumnCountCallback columnCountCallback,
|
||||
DataCallback dataCallback,
|
||||
@ -78,9 +80,6 @@ public:
|
||||
const QModelIndex& bottomRight,
|
||||
const QVector<int>& roles = QVector<int>());
|
||||
|
||||
/// Set the implementation
|
||||
void setImpl(std::unique_ptr<IDosQObject> impl);
|
||||
|
||||
private:
|
||||
std::unique_ptr<IDosQObject> m_impl;
|
||||
void* m_modelObject;
|
||||
|
@ -15,7 +15,8 @@ class DosQObject : public QObject, public IDosQObject
|
||||
{
|
||||
public:
|
||||
/// Constructor
|
||||
DosQObject();
|
||||
DosQObject(OnMetaObject onMetaObject,
|
||||
OnSlotExecuted onSlotExecuted);
|
||||
|
||||
/// Emit a signal
|
||||
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)
|
||||
{
|
||||
|
||||
auto dynamicQObject = new DosQObject();
|
||||
auto impl = std::make_unique<DosQObjectImpl>(dynamicQObject,
|
||||
OnMetaObjectHandler(dObjectPointer, dMetaObjectCallback),
|
||||
OnSlotExecutedHandler(dObjectPointer, dObjectCallback));
|
||||
dynamicQObject->setImpl(std::move(impl));
|
||||
QQmlEngine::setObjectOwnership(dynamicQObject, QQmlEngine::CppOwnership);
|
||||
*vptr = dynamicQObject;
|
||||
auto dosQObject = new DosQObject(OnMetaObjectHandler(dObjectPointer, dMetaObjectCallback),
|
||||
OnSlotExecutedHandler(dObjectPointer, dObjectCallback));
|
||||
QQmlEngine::setObjectOwnership(dosQObject, QQmlEngine::CppOwnership);
|
||||
*vptr = dosQObject;
|
||||
}
|
||||
|
||||
void dos_qobject_delete(void* vptr)
|
||||
|
@ -1,18 +1,28 @@
|
||||
#include "DOtherSide/DosQAbstractListModel.h"
|
||||
#include "DOtherSide/DosQObjectImpl.h"
|
||||
|
||||
namespace DOS
|
||||
{
|
||||
|
||||
DosQAbstractListModel::DosQAbstractListModel(void *modelObject, RowCountCallback rowCountCallback, ColumnCountCallback columnCountCallback, DataCallback dataCallback, SetDataCallback setDataCallback, RoleNamesCallback roleNamesCallback, FlagsCallback flagsCallback, HeaderDataCallback headerDataCallback)
|
||||
: m_impl(nullptr)
|
||||
, m_modelObject(modelObject)
|
||||
, m_rowCountCallback(rowCountCallback)
|
||||
, m_columnCountCallback(columnCountCallback)
|
||||
, m_dataCallback(dataCallback)
|
||||
, m_setDataCallback(setDataCallback)
|
||||
, m_roleNamesCallback(roleNamesCallback)
|
||||
, m_flagsCallback(flagsCallback)
|
||||
, m_headerDataCallback(headerDataCallback)
|
||||
DosQAbstractListModel::DosQAbstractListModel(void *modelObject,
|
||||
OnMetaObject onMetaObject,
|
||||
OnSlotExecuted onSlotExecuted,
|
||||
RowCountCallback rowCountCallback,
|
||||
ColumnCountCallback columnCountCallback,
|
||||
DataCallback dataCallback,
|
||||
SetDataCallback setDataCallback,
|
||||
RoleNamesCallback roleNamesCallback,
|
||||
FlagsCallback flagsCallback,
|
||||
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);
|
||||
}
|
||||
|
||||
void DosQAbstractListModel::setImpl(std::unique_ptr<IDosQObject> impl)
|
||||
{
|
||||
m_impl = std::move(impl);
|
||||
}
|
||||
|
||||
} // namespace DOS
|
||||
|
@ -1,13 +1,14 @@
|
||||
#include "DOtherSide/DosQObject.h"
|
||||
#include "DOtherSide/DosQMetaObject.h"
|
||||
#include "DOtherSide/DosQObjectImpl.h"
|
||||
#include <QtCore/QMetaMethod>
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
namespace DOS
|
||||
{
|
||||
|
||||
DosQObject::DosQObject()
|
||||
: m_impl(nullptr)
|
||||
DosQObject::DosQObject(OnMetaObject onMetaObject, OnSlotExecuted onSlotExecuted)
|
||||
: 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);
|
||||
}
|
||||
|
||||
void DosQObject::setImpl(std::unique_ptr<IDosQObject> impl)
|
||||
{
|
||||
m_impl = std::move(impl);
|
||||
}
|
||||
|
||||
} // namespace DOS
|
||||
|
Loading…
x
Reference in New Issue
Block a user