diff --git a/lib/include/DOtherSide/DOtherSide.h b/lib/include/DOtherSide/DOtherSide.h index 80e02f6..d9ecc71 100644 --- a/lib/include/DOtherSide/DOtherSide.h +++ b/lib/include/DOtherSide/DOtherSide.h @@ -431,17 +431,17 @@ DOS_API DosQMetaObject *DOS_CALL dos_qabstracttablemmodel_qmetaobject(); /// \param indexCallback The callback for handling the QAbstractItemModel::index() execution /// \param parentCallback The callback for handling the QAbstractItemModel::parent() execution DOS_API DosQAbstractListModel *DOS_CALL dos_qabstracttablemodel_create(void *callbackObject, - DosQMetaObject *metaObject, - DObjectCallback dObjectCallback, - RowCountCallback rowCountCallback, - ColumnCountCallback columnCountCallback, - DataCallback dataCallback, - SetDataCallback setDataCallback, - RoleNamesCallback roleNamesCallback, - FlagsCallback flagsCallback, - HeaderDataCallback headerDataCallback, - IndexCallback indexCallback, - ParentCallback parentCallback); + DosQMetaObject *metaObject, + DObjectCallback dObjectCallback, + RowCountCallback rowCountCallback, + ColumnCountCallback columnCountCallback, + DataCallback dataCallback, + SetDataCallback setDataCallback, + RoleNamesCallback roleNamesCallback, + FlagsCallback flagsCallback, + HeaderDataCallback headerDataCallback, + IndexCallback indexCallback, + ParentCallback parentCallback); /// @} /// \defgroup QAbstractItemModel QAbstractItemModel @@ -551,6 +551,18 @@ DOS_API void DOS_CALL dos_qabstractitemmodel_dataChanged(DosQAbstractItemModel * /// \brief Calls the createIndex function DOS_API DosQModelIndex* DOS_CALL dos_qabstractitemmodel_createIndex(DosQAbstractItemModel *vptr, int row, int column, void *data = 0); + + +DOS_API int DOS_CALL dos_qabstractitemmodel_rowCount(DosQAbstractItemModel *vptr, DosQModelIndex* parent); +DOS_API int DOS_CALL dos_qabstractitemmodel_columnCount(DosQAbstractItemModel *vptr, DosQModelIndex* parent); +DOS_API DosQVariant* DOS_CALL dos_qabstractitemmodel_data(DosQAbstractItemModel *vptr, DosQModelIndex* index, int role); +DOS_API bool DOS_CALL dos_qabstractitemmodel_setData(DosQAbstractItemModel *vptr, DosQModelIndex* index, DosQVariant* value, int role); +DOS_API DosQHashIntQByteArray* DOS_CALL dos_qabstractitemmodel_roleNames(DosQAbstractItemModel *vptr); +DOS_API int DOS_CALL dos_qabstractitemmodel_flags(DosQAbstractItemModel *vptr, DosQModelIndex* index); +DOS_API DosQVariant* DOS_CALL dos_qabstractitemmodel_headerData(DosQAbstractItemModel *vptr, int section, int orienation, int role); +DOS_API DosQModelIndex* DOS_CALL dos_qabstractitemmodel_index(DosQAbstractItemModel *vptr, int row, int column, DosQModelIndex* parent); +DOS_API DosQModelIndex* DOS_CALL dos_qabstractitemmodel_parent(DosQAbstractItemModel *vptr, DosQModelIndex* child); + /// @} diff --git a/lib/include/DOtherSide/DosIQAbstractItemModelImpl.h b/lib/include/DOtherSide/DosIQAbstractItemModelImpl.h index 30c6444..06fcddc 100644 --- a/lib/include/DOtherSide/DosIQAbstractItemModelImpl.h +++ b/lib/include/DOtherSide/DosIQAbstractItemModelImpl.h @@ -18,25 +18,25 @@ public: virtual ~DosIQAbstractItemModelImpl() = default; /// @see QAbstractListModel::rowCount - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0; + virtual int defaultRowCount(const QModelIndex &parent = QModelIndex()) const = 0; /// @see QAbstractListModel::columnCount - virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0; + virtual int defaultColumnCount(const QModelIndex &parent = QModelIndex()) const = 0; /// @see QAbstractListModel::data - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; + virtual QVariant defaultData(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; /// @see QAbstractListModel::setData - virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) = 0; + virtual bool defaultSetData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) = 0; /// @see QAbstractListModel::flags - virtual Qt::ItemFlags flags(const QModelIndex &index) const = 0; + virtual Qt::ItemFlags defaultFlags(const QModelIndex &index) const = 0; /// @see QAbstractListModel::headerData - virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const = 0; + virtual QVariant defaultHeaderData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const = 0; /// @see QAbstractListModel::roleNames - virtual QHash roleNames() const = 0; + virtual QHash defaultRoleNames() const = 0; /// @see QAbstractListModel::beginInsertRows virtual void publicBeginInsertRows(const QModelIndex &index, int first, int last) = 0; diff --git a/lib/include/DOtherSide/DosQAbstractItemModel.h b/lib/include/DOtherSide/DosQAbstractItemModel.h index 4ca5968..62bb4ad 100644 --- a/lib/include/DOtherSide/DosQAbstractItemModel.h +++ b/lib/include/DOtherSide/DosQAbstractItemModel.h @@ -104,6 +104,14 @@ public: /// Expose createIndex QModelIndex publicCreateIndex(int row, int column, void *data = nullptr) const override; + int defaultRowCount(const QModelIndex &parent) const override; + int defaultColumnCount(const QModelIndex &parent) const override; + QVariant defaultData(const QModelIndex &index, int role) const override; + bool defaultSetData(const QModelIndex &index, const QVariant &value, int role) override; + Qt::ItemFlags defaultFlags(const QModelIndex &index) const override; + QVariant defaultHeaderData(int section, Qt::Orientation orientation, int role) const override; + QHash defaultRoleNames() const override; + private: std::unique_ptr m_impl; void *m_modelObject; diff --git a/lib/include/DOtherSide/DosQAbstractItemModelWrapper.h b/lib/include/DOtherSide/DosQAbstractItemModelWrapper.h index bc6e5ce..73d497d 100644 --- a/lib/include/DOtherSide/DosQAbstractItemModelWrapper.h +++ b/lib/include/DOtherSide/DosQAbstractItemModelWrapper.h @@ -102,6 +102,27 @@ public: /// @see DosIQAbstractItemModelImpl::createIndex QModelIndex publicCreateIndex(int row, int column, void *data) const override; + /// @see DosIQAbstractItemModelImpl::defaultRowCount + int defaultRowCount(const QModelIndex &parent) const override; + + /// @see DosIQAbstractItemModelImpl::defaultColumnCount + int defaultColumnCount(const QModelIndex &parent) const override; + + /// @see DosIQAbstractItemModelImpl::defaultData + QVariant defaultData(const QModelIndex &index, int role) const override; + + /// @see DosIQAbstractItemModelImpl::defaultSetData + bool defaultSetData(const QModelIndex &index, const QVariant &value, int role) override; + + /// @see DosIQAbstractItemModelImpl::defaultFlags + Qt::ItemFlags defaultFlags(const QModelIndex &index) const override; + + /// @see DosIQAbstractItemModelImpl::defaultHeaderData + QVariant defaultHeaderData(int section, Qt::Orientation orientation, int role) const override; + + /// @see DosIQAbstractItemModelImpl::defaultRoleNames + QHash defaultRoleNames() const override; + private: void *m_dObject; DosQAbstractItemModel *m_impl; @@ -128,23 +149,23 @@ DosQAbstractItemModelWrapper::DosQAbstractItemModelWrapper(QObject *parent m_data.createDObject(m_id, static_cast(this), &m_dObject, &impl); beginResetModel(); m_impl = dynamic_cast(static_cast(impl)); - QObject::connect(m_impl, &DosQAbstractItemModel::rowsAboutToBeInserted, this, &DosQAbstractItemModelWrapper::beginInsertRows); - QObject::connect(m_impl, &DosQAbstractItemModel::rowsInserted, this, &DosQAbstractItemModelWrapper::endInsertRows); - QObject::connect(m_impl, &DosQAbstractItemModel::rowsAboutToBeRemoved, this, &DosQAbstractItemModelWrapper::beginRemoveRows); - QObject::connect(m_impl, &DosQAbstractItemModel::rowsRemoved, this, &DosQAbstractItemModelWrapper::endRemoveRows); - QObject::connect(m_impl, &DosQAbstractItemModel::rowsAboutToBeMoved, this, &DosQAbstractItemModelWrapper::beginMoveRows); - QObject::connect(m_impl, &DosQAbstractItemModel::rowsMoved, this, &DosQAbstractItemModelWrapper::endMoveRows); - QObject::connect(m_impl, &DosQAbstractItemModel::columnsAboutToBeInserted, this, &DosQAbstractItemModelWrapper::beginInsertColumns); - QObject::connect(m_impl, &DosQAbstractItemModel::columnsInserted, this, &DosQAbstractItemModelWrapper::endInsertColumns); - QObject::connect(m_impl, &DosQAbstractItemModel::columnsAboutToBeRemoved, this, &DosQAbstractItemModelWrapper::beginRemoveColumns); - QObject::connect(m_impl, &DosQAbstractItemModel::columnsRemoved, this, &DosQAbstractItemModelWrapper::endRemoveColumns); - QObject::connect(m_impl, &DosQAbstractItemModel::columnsAboutToBeMoved, this, &DosQAbstractItemModelWrapper::beginMoveColumns); - QObject::connect(m_impl, &DosQAbstractItemModel::columnsMoved, this, &DosQAbstractItemModelWrapper::endMoveColumns); - QObject::connect(m_impl, &DosQAbstractItemModel::modelAboutToBeReset, this, &DosQAbstractItemModelWrapper::beginResetModel); - QObject::connect(m_impl, &DosQAbstractItemModel::modelReset, this, &DosQAbstractItemModelWrapper::endResetModel); - QObject::connect(m_impl, &DosQAbstractItemModel::dataChanged, this, &DosQAbstractItemModelWrapper::dataChanged); - QObject::connect(m_impl, &DosQAbstractItemModel::layoutAboutToBeChanged, this, &DosQAbstractItemModelWrapper::layoutAboutToBeChanged); - QObject::connect(m_impl, &DosQAbstractItemModel::layoutChanged, this, &DosQAbstractItemModelWrapper::layoutChanged); + QObject::connect(m_impl, &DosQAbstractItemModel::rowsAboutToBeInserted, this, &DosQAbstractItemModelWrapper::beginInsertRows); + QObject::connect(m_impl, &DosQAbstractItemModel::rowsInserted, this, &DosQAbstractItemModelWrapper::endInsertRows); + QObject::connect(m_impl, &DosQAbstractItemModel::rowsAboutToBeRemoved, this, &DosQAbstractItemModelWrapper::beginRemoveRows); + QObject::connect(m_impl, &DosQAbstractItemModel::rowsRemoved, this, &DosQAbstractItemModelWrapper::endRemoveRows); + QObject::connect(m_impl, &DosQAbstractItemModel::rowsAboutToBeMoved, this, &DosQAbstractItemModelWrapper::beginMoveRows); + QObject::connect(m_impl, &DosQAbstractItemModel::rowsMoved, this, &DosQAbstractItemModelWrapper::endMoveRows); + QObject::connect(m_impl, &DosQAbstractItemModel::columnsAboutToBeInserted, this, &DosQAbstractItemModelWrapper::beginInsertColumns); + QObject::connect(m_impl, &DosQAbstractItemModel::columnsInserted, this, &DosQAbstractItemModelWrapper::endInsertColumns); + QObject::connect(m_impl, &DosQAbstractItemModel::columnsAboutToBeRemoved, this, &DosQAbstractItemModelWrapper::beginRemoveColumns); + QObject::connect(m_impl, &DosQAbstractItemModel::columnsRemoved, this, &DosQAbstractItemModelWrapper::endRemoveColumns); + QObject::connect(m_impl, &DosQAbstractItemModel::columnsAboutToBeMoved, this, &DosQAbstractItemModelWrapper::beginMoveColumns); + QObject::connect(m_impl, &DosQAbstractItemModel::columnsMoved, this, &DosQAbstractItemModelWrapper::endMoveColumns); + QObject::connect(m_impl, &DosQAbstractItemModel::modelAboutToBeReset, this, &DosQAbstractItemModelWrapper::beginResetModel); + QObject::connect(m_impl, &DosQAbstractItemModel::modelReset, this, &DosQAbstractItemModelWrapper::endResetModel); + QObject::connect(m_impl, &DosQAbstractItemModel::dataChanged, this, &DosQAbstractItemModelWrapper::dataChanged); + QObject::connect(m_impl, &DosQAbstractItemModel::layoutAboutToBeChanged, this, &DosQAbstractItemModelWrapper::layoutAboutToBeChanged); + QObject::connect(m_impl, &DosQAbstractItemModel::layoutChanged, this, &DosQAbstractItemModelWrapper::layoutChanged); endResetModel(); Q_ASSERT(m_dObject); Q_ASSERT(m_impl); @@ -333,6 +354,48 @@ QModelIndex DosQAbstractItemModelWrapper::publicCreateIndex(int row, int c return m_impl->publicCreateIndex(row, column, data); } +template +int DosQAbstractItemModelWrapper::defaultRowCount(const QModelIndex &parent) const +{ + return m_impl->defaultRowCount(parent); +} + +template +int DosQAbstractItemModelWrapper::defaultColumnCount(const QModelIndex &parent) const +{ + return m_impl->defaultColumnCount(parent); +} + +template +QVariant DosQAbstractItemModelWrapper::defaultData(const QModelIndex &index, int role) const +{ + return m_impl->defaultData(index, role); +} + +template +bool DosQAbstractItemModelWrapper::defaultSetData(const QModelIndex &index, const QVariant &value, int role) +{ + return m_impl->defaultSetData(index, value, role); +} + +template +Qt::ItemFlags DosQAbstractItemModelWrapper::defaultFlags(const QModelIndex &index) const +{ + return m_impl->defaultFlags(index); +} + +template +QVariant DosQAbstractItemModelWrapper::defaultHeaderData(int section, Qt::Orientation orientation, int role) const +{ + return m_impl->defaultHeaderData(section, orientation, role); +} + +template +QHash DosQAbstractItemModelWrapper::defaultRoleNames() const +{ + return m_impl->defaultRoleNames(); +} + template const QmlRegisterType &DosQAbstractItemModelWrapper::qmlRegisterType() { diff --git a/lib/src/DOtherSide.cpp b/lib/src/DOtherSide.cpp index 980c2bc..d94d992 100644 --- a/lib/src/DOtherSide.cpp +++ b/lib/src/DOtherSide.cpp @@ -594,31 +594,31 @@ void dos_qmetaobject_delete(::DosQMetaObject *vptr) } ::DosQAbstractListModel *dos_qabstracttablemodel_create(void *dObjectPointer, - ::DosQMetaObject *metaObjectPointer, - ::DObjectCallback dObjectCallback, - ::RowCountCallback rowCountCallback, - ::ColumnCountCallback columnCountCallback, - ::DataCallback dataCallback, - ::SetDataCallback setDataCallback, - ::RoleNamesCallback roleNamesCallaback, - ::FlagsCallback flagsCallback, - ::HeaderDataCallback headerDataCallback, - ::IndexCallback indexCallback, - ::ParentCallback parentCallback) + ::DosQMetaObject *metaObjectPointer, + ::DObjectCallback dObjectCallback, + ::RowCountCallback rowCountCallback, + ::ColumnCountCallback columnCountCallback, + ::DataCallback dataCallback, + ::SetDataCallback setDataCallback, + ::RoleNamesCallback roleNamesCallaback, + ::FlagsCallback flagsCallback, + ::HeaderDataCallback headerDataCallback, + ::IndexCallback indexCallback, + ::ParentCallback parentCallback) { auto metaObjectHolder = static_cast(metaObjectPointer); auto model = new DOS::DosQAbstractTableModel(dObjectPointer, - metaObjectHolder->data(), - DOS::OnSlotExecutedHandler(dObjectPointer, dObjectCallback), - rowCountCallback, - columnCountCallback, - dataCallback, - setDataCallback, - roleNamesCallaback, - flagsCallback, - headerDataCallback, - indexCallback, - parentCallback); + metaObjectHolder->data(), + DOS::OnSlotExecutedHandler(dObjectPointer, dObjectCallback), + rowCountCallback, + columnCountCallback, + dataCallback, + setDataCallback, + roleNamesCallaback, + flagsCallback, + headerDataCallback, + indexCallback, + parentCallback); QQmlEngine::setObjectOwnership(model, QQmlEngine::CppOwnership); return static_cast(model); } @@ -782,13 +782,20 @@ void dos_qabstractitemmodel_dataChanged(::DosQAbstractItemModel *vptr, } DosQModelIndex *dos_qabstractitemmodel_createIndex(::DosQAbstractItemModel *vptr, - int row, int column, void *data) + int row, int column, void *data) { auto object = static_cast(vptr); auto model = dynamic_cast(object); return new QModelIndex(model->publicCreateIndex(row, column, data)); } +int dos_qabstractitemmodel_rowCount(DosQAbstractItemModel *vptr, DosQModelIndex *parent) +{ + auto object = static_cast(vptr); + auto model = dynamic_cast(object); + return model->defaultRowCount(); +} + int dos_qdeclarative_qmlregistertype(const ::QmlRegisterType *cArgs) { auto holder = static_cast(cArgs->staticMetaObject); diff --git a/lib/src/DosQAbstractItemModel.cpp b/lib/src/DosQAbstractItemModel.cpp index 7839ec5..56a06b8 100644 --- a/lib/src/DosQAbstractItemModel.cpp +++ b/lib/src/DosQAbstractItemModel.cpp @@ -215,5 +215,5 @@ QModelIndex DosQAbstractGenericModel::publicCreateIndex(int row, int column, // Force instantiation template class DOS::DosQAbstractGenericModel; -template class DOS::DosQAbstractGenericModel; -template class DOS::DosQAbstractGenericModel; +//template class DOS::DosQAbstractGenericModel; +//template class DOS::DosQAbstractGenericModel;