From 55217146ae23a321487a4950ab9f8d826723993b Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Sat, 21 Aug 2021 20:44:04 +0200 Subject: [PATCH] More methods for `QAbstractItemModel` --- .../QAbstractItemModel/nabstractitemmodel.hpp | 52 +++++ .../qabstractitemmodel_wrap.h | 14 ++ .../qabstractitemmodel_wrap.cpp | 177 ++++++++++++++++++ src/lib/QtCore/QAbstractItemModel.ts | 80 ++++++-- 4 files changed, 309 insertions(+), 14 deletions(-) diff --git a/src/cpp/include/nodegui/QtCore/QAbstractItemModel/nabstractitemmodel.hpp b/src/cpp/include/nodegui/QtCore/QAbstractItemModel/nabstractitemmodel.hpp index cb89f5262..cd7c818af 100644 --- a/src/cpp/include/nodegui/QtCore/QAbstractItemModel/nabstractitemmodel.hpp +++ b/src/cpp/include/nodegui/QtCore/QAbstractItemModel/nabstractitemmodel.hpp @@ -160,4 +160,56 @@ class DLL_EXPORT NAbstractItemModel : public QAbstractItemModel, QModelIndex* buddyIndex = buddyIndexWrap->getInternalInstance(); return *buddyIndex; } + + void _protected_beginResetModel() { beginResetModel(); } + + void _protected_endResetModel() { endResetModel(); } + + void _protected_beginInsertColumns(const QModelIndex& parent, int first, + int last) { + beginInsertColumns(parent, first, last); + } + + void _protected_beginInsertRows(const QModelIndex& parent, int first, + int last) { + beginInsertRows(parent, first, last); + } + + bool _protected_beginMoveColumns(const QModelIndex& sourceParent, + int sourceFirst, int sourceLast, + const QModelIndex& destinationParent, + int destinationChild) { + return beginMoveColumns(sourceParent, sourceFirst, sourceLast, + destinationParent, destinationChild); + } + + bool _protected_beginMoveRows(const QModelIndex& sourceParent, + int sourceFirst, int sourceLast, + const QModelIndex& destinationParent, + int destinationChild) { + return beginMoveRows(sourceParent, sourceFirst, sourceLast, + destinationParent, destinationChild); + } + + void _protected_beginRemoveColumns(const QModelIndex& parent, int first, + int last) { + beginRemoveColumns(parent, first, last); + } + + void _protected_beginRemoveRows(const QModelIndex& parent, int first, + int last) { + beginRemoveRows(parent, first, last); + } + + void _protected_endInsertColumns() { endInsertColumns(); } + + void _protected_endInsertRows() { endInsertRows(); } + + void _protected_endMoveColumns() { endMoveColumns(); } + + void _protected_endMoveRows() { endMoveRows(); } + + void _protected_endRemoveColumns() { endRemoveColumns(); } + + void _protected_endRemoveRows() { endRemoveRows(); } }; diff --git a/src/cpp/include/nodegui/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h b/src/cpp/include/nodegui/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h index 9eb9e88de..a3fd8e932 100644 --- a/src/cpp/include/nodegui/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h +++ b/src/cpp/include/nodegui/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.h @@ -31,4 +31,18 @@ class DLL_EXPORT QAbstractItemModelWrap Napi::Value emitDataChanged(const Napi::CallbackInfo& info); Napi::Value checkIndex(const Napi::CallbackInfo& info); Napi::Value _super_buddy(const Napi::CallbackInfo& info); + Napi::Value beginInsertColumns(const Napi::CallbackInfo& info); + Napi::Value beginInsertRows(const Napi::CallbackInfo& info); + Napi::Value beginMoveColumns(const Napi::CallbackInfo& info); + Napi::Value beginMoveRows(const Napi::CallbackInfo& info); + Napi::Value beginRemoveColumns(const Napi::CallbackInfo& info); + Napi::Value beginRemoveRows(const Napi::CallbackInfo& info); + Napi::Value beginResetModel(const Napi::CallbackInfo& info); + Napi::Value endResetModel(const Napi::CallbackInfo& info); + Napi::Value endInsertColumns(const Napi::CallbackInfo& info); + Napi::Value endInsertRows(const Napi::CallbackInfo& info); + Napi::Value endMoveColumns(const Napi::CallbackInfo& info); + Napi::Value endMoveRows(const Napi::CallbackInfo& info); + Napi::Value endRemoveColumns(const Napi::CallbackInfo& info); + Napi::Value endRemoveRows(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/lib/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.cpp b/src/cpp/lib/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.cpp index 900a56bdd..1e1f5d2ec 100644 --- a/src/cpp/lib/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.cpp +++ b/src/cpp/lib/QtCore/QAbstractItemModel/qabstractitemmodel_wrap.cpp @@ -19,6 +19,29 @@ Napi::Object QAbstractItemModelWrap::init(Napi::Env env, Napi::Object exports) { &QAbstractItemModelWrap::emitDataChanged), InstanceMethod("checkIndex", &QAbstractItemModelWrap::checkIndex), InstanceMethod("_super_buddy", &QAbstractItemModelWrap::_super_buddy), + InstanceMethod("beginInsertColumns", + &QAbstractItemModelWrap::beginInsertColumns), + InstanceMethod("beginInsertRows", + &QAbstractItemModelWrap::beginInsertRows), + InstanceMethod("beginMoveColumns", + &QAbstractItemModelWrap::beginMoveColumns), + InstanceMethod("beginMoveRows", &QAbstractItemModelWrap::beginMoveRows), + InstanceMethod("beginRemoveColumns", + &QAbstractItemModelWrap::beginRemoveColumns), + InstanceMethod("beginRemoveRows", + &QAbstractItemModelWrap::beginRemoveRows), + InstanceMethod("beginResetModel", + &QAbstractItemModelWrap::beginResetModel), + InstanceMethod("endResetModel", &QAbstractItemModelWrap::endResetModel), + InstanceMethod("endInsertColumns", + &QAbstractItemModelWrap::endInsertColumns), + InstanceMethod("endInsertRows", &QAbstractItemModelWrap::endInsertRows), + InstanceMethod("endMoveColumns", + &QAbstractItemModelWrap::endMoveColumns), + InstanceMethod("endMoveRows", &QAbstractItemModelWrap::endMoveRows), + InstanceMethod("endRemoveColumns", + &QAbstractItemModelWrap::endRemoveColumns), + InstanceMethod("endRemoveRows", &QAbstractItemModelWrap::endRemoveRows), QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QAbstractItemModelWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -147,3 +170,157 @@ Napi::Value QAbstractItemModelWrap::_super_buddy( {Napi::External::New(env, new QModelIndex(resultIndex))}); return resultModelIndexWrap; } + +Napi::Value QAbstractItemModelWrap::beginInsertColumns( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + QModelIndexWrap* parentWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* parent = parentWrap->getInternalInstance(); + int first = info[1].As().Int32Value(); + int last = info[2].As().Int32Value(); + this->instance->_protected_beginInsertColumns(*parent, first, last); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::beginInsertRows( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + QModelIndexWrap* parentWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* parent = parentWrap->getInternalInstance(); + int first = info[1].As().Int32Value(); + int last = info[2].As().Int32Value(); + this->instance->_protected_beginInsertRows(*parent, first, last); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::beginMoveColumns( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + QModelIndexWrap* sourceParentWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* sourceParent = sourceParentWrap->getInternalInstance(); + int sourceFirst = info[1].As().Int32Value(); + int sourceLast = info[2].As().Int32Value(); + QModelIndexWrap* destinationParentWrap = + Napi::ObjectWrap::Unwrap(info[3].As()); + QModelIndex* destinationParent = destinationParentWrap->getInternalInstance(); + int destinationChild = info[4].As().Int32Value(); + bool result = this->instance->_protected_beginMoveColumns( + *sourceParent, sourceFirst, sourceLast, *destinationParent, + destinationChild); + return Napi::Boolean::New(env, result); +} + +Napi::Value QAbstractItemModelWrap::beginMoveRows( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + QModelIndexWrap* sourceParentWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* sourceParent = sourceParentWrap->getInternalInstance(); + int sourceFirst = info[1].As().Int32Value(); + int sourceLast = info[2].As().Int32Value(); + QModelIndexWrap* destinationParentWrap = + Napi::ObjectWrap::Unwrap(info[3].As()); + QModelIndex* destinationParent = destinationParentWrap->getInternalInstance(); + int destinationChild = info[4].As().Int32Value(); + bool result = this->instance->_protected_beginMoveRows( + *sourceParent, sourceFirst, sourceLast, *destinationParent, + destinationChild); + return Napi::Boolean::New(env, result); +} + +Napi::Value QAbstractItemModelWrap::beginRemoveColumns( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + QModelIndexWrap* parentWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* parent = parentWrap->getInternalInstance(); + int first = info[1].As().Int32Value(); + int last = info[2].As().Int32Value(); + this->instance->_protected_beginRemoveColumns(*parent, first, last); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::beginRemoveRows( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + QModelIndexWrap* parentWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* parent = parentWrap->getInternalInstance(); + int first = info[1].As().Int32Value(); + int last = info[2].As().Int32Value(); + this->instance->_protected_beginRemoveRows(*parent, first, last); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::beginResetModel( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_beginResetModel(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endInsertColumns( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endInsertColumns(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endInsertRows( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endInsertRows(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endMoveColumns( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endMoveColumns(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endMoveRows( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endMoveRows(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endRemoveColumns( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endRemoveColumns(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endRemoveRows( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endRemoveRows(); + return env.Null(); +} + +Napi::Value QAbstractItemModelWrap::endResetModel( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->_protected_endResetModel(); + return env.Null(); +} diff --git a/src/lib/QtCore/QAbstractItemModel.ts b/src/lib/QtCore/QAbstractItemModel.ts index 444c0a5b7..fd81bb3ba 100644 --- a/src/lib/QtCore/QAbstractItemModel.ts +++ b/src/lib/QtCore/QAbstractItemModel.ts @@ -202,14 +202,45 @@ export class QAbstractItemModel extends NodeObject { // TODO: void layoutChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint) // *** Protected Functions *** + beginInsertColumns(parent: QModelIndex, first: number, last: number): void { + this.native.beginInsertColumns(parent, first, last); + } - // TODO: void beginInsertColumns(const QModelIndex &parent, int first, int last) - // TODO: void beginInsertRows(const QModelIndex &parent, int first, int last) - // TODO: bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild) - // TODO: bool beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild) - // TODO: void beginRemoveColumns(const QModelIndex &parent, int first, int last) - // TODO: void beginRemoveRows(const QModelIndex &parent, int first, int last) - // TODO: void beginResetModel() + beginInsertRows(parent: QModelIndex, first: number, last: number): void { + this.native.beginInsertRows(parent, first, last); + } + + beginMoveColumns( + sourceParent: QModelIndex, + sourceFirst: number, + sourceLast: number, + destinationParent: QModelIndex, + destinationChild: number, + ): boolean { + return this.native.beginMoveColumns(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild); + } + + beginMoveRows( + sourceParent: QModelIndex, + sourceFirst: number, + sourceLast: number, + destinationParent: QModelIndex, + destinationChild: number, + ): boolean { + return this.native.beginMoveRows(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild); + } + + beginRemoveColumns(parent: QModelIndex, first: number, last: number): void { + this.native.beginRemoveColumns(parent, first, last); + } + + beginRemoveRows(parent: QModelIndex, first: number, last: number): void { + this.native.beginRemoveRows(parent, first, last); + } + + beginResetModel(): void { + this.native.beginResetModel(); + } // TODO: void changePersistentIndex(const QModelIndex &from, const QModelIndex &to) // TODO: void changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to) @@ -219,12 +250,33 @@ export class QAbstractItemModel extends NodeObject { } // TODO: QModelIndex createIndex(int row, int column, quintptr id) const - // TODO: void endInsertColumns() - // TODO: void endInsertRows() - // TODO: void endMoveColumns() - // TODO: void endMoveRows() - // TODO: void endRemoveColumns() - // TODO: void endRemoveRows() - // TODO: void endResetModel() + + endInsertColumns(): void { + this.native.endInsertColumns(); + } + + endInsertRows(): void { + this.native.endInsertRows(); + } + + endMoveColumns(): void { + this.native.endMoveColumns(); + } + + endMoveRows(): void { + this.native.endMoveRows(); + } + + endRemoveColumns(): void { + this.native.endRemoveColumns(); + } + + endRemoveRows(): void { + this.native.endRemoveRows(); + } + + endResetModel(): void { + this.native.endResetModel(); + } // TODO: QModelIndexList persistentIndexList() const }