From 0b284798bcdcff9db9eb784324a2d9ab9c0e63a6 Mon Sep 17 00:00:00 2001 From: Filippo Cucchetto Date: Sat, 25 Apr 2015 19:00:02 +0200 Subject: [PATCH] [DQml] Added support for QModelIndex --- D/DQml/CMakeLists.txt | 1 + D/DQml/dothersideinterface.di | 11 ++++++ D/DQml/dqml.d | 1 + D/DQml/qmodelindex.d | 72 +++++++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 D/DQml/qmodelindex.d diff --git a/D/DQml/CMakeLists.txt b/D/DQml/CMakeLists.txt index 352c23d..cdee26a 100644 --- a/D/DQml/CMakeLists.txt +++ b/D/DQml/CMakeLists.txt @@ -11,5 +11,6 @@ add_library(${PROJECT_NAME} STATIC chararray.d qguiapplication.d qapplication.d + qmodelindex.d ) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/D/DQml/dothersideinterface.di b/D/DQml/dothersideinterface.di index 5685a42..17ac6d7 100644 --- a/D/DQml/dothersideinterface.di +++ b/D/DQml/dothersideinterface.di @@ -87,4 +87,15 @@ extern(C) immutable(char)* notifySignal); void dos_qobject_delete(void*); + + // QModelIndex + void dos_qmodelindex_create(ref void* index); + void dos_qmodelindex_delete(void* index); + void dos_qmodelindex_row(void*, ref int result); + void dos_qmodelindex_column(void*, ref int result); + void dos_qmodelindex_isValid(void* index, ref bool result); + void dos_qmodelindex_data(void* index, int role, void* variant); + void dos_qmodelindex_parent(void* index, void* parent); + void dos_qmodelindex_child(void* index, int r, int c, void* child); + void dos_qmodelindex_sibling(void* index, int r, int c, void* sibling); } diff --git a/D/DQml/dqml.d b/D/DQml/dqml.d index 4655ad3..c54cccf 100644 --- a/D/DQml/dqml.d +++ b/D/DQml/dqml.d @@ -6,3 +6,4 @@ public import qobject; public import qqmlapplicationengine; public import qquickview; public import qmetatype; +public import qmodelindex; diff --git a/D/DQml/qmodelindex.d b/D/DQml/qmodelindex.d new file mode 100644 index 0000000..d340185 --- /dev/null +++ b/D/DQml/qmodelindex.d @@ -0,0 +1,72 @@ +import dothersideinterface; +import qvariant; + +class QModelIndex +{ + this() + { + dos_qmodelindex_create(this.ptr); + } + + ~this() + { + dos_qmodelindex_delete(this.ptr); + ptr = null; + } + + public void* internalPtr() + { + return this.ptr; + } + + public int row() + { + int result = -1; + dos_qmodelindex_row(this.ptr, result); + return result; + } + + public int column() + { + int result = -1; + dos_qmodelindex_column(this.ptr, result); + return result; + } + + public bool isValid() + { + bool result = false; + dos_qmodelindex_isValid(this.ptr, result); + return result; + } + + public QVariant data(int role) + { + auto result = new QVariant(); + dos_qmodelindex_data(this.ptr, role, result.rawData()); + return result; + } + + public QModelIndex parent() + { + auto result = new QModelIndex(); + dos_qmodelindex_parent(this.ptr, result.ptr); + return result; + } + + public QModelIndex child(int row, int column) + { + auto result = new QModelIndex(); + dos_qmodelindex_child(this.ptr, row, column, result.ptr); + return result; + } + + public QModelIndex sibling(int row, int column) + { + auto result = new QModelIndex(); + dos_qmodelindex_sibling(this.ptr, row, column, result.ptr); + return result; + } + + private void* ptr; +}