diff --git a/src/cpp/include/nodegui/QtWidgets/QTreeWidget/qtreewidget_wrap.h b/src/cpp/include/nodegui/QtWidgets/QTreeWidget/qtreewidget_wrap.h index 3d6df17ed..000f410fc 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTreeWidget/qtreewidget_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QTreeWidget/qtreewidget_wrap.h @@ -36,10 +36,9 @@ class DLL_EXPORT QTreeWidgetWrap : public Napi::ObjectWrap { Napi::Value setItemWidget(const Napi::CallbackInfo &info); Napi::Value currentItem(const Napi::CallbackInfo &info); Napi::Value findItems(const Napi::CallbackInfo &info); + Napi::Value takeTopLevelItem(const Napi::CallbackInfo &info); + Napi::Value clear(const Napi::CallbackInfo &info); - // Napi::Value addTopLevelItems(const Napi::CallbackInfo& info); // Napi::Value setHorizontalScrollBarPolicy(const Napi::CallbackInfo& info); // Napi::Value setVerticalScrollBarPolicy(const Napi::CallbackInfo& info); - // Napi::Value takeTopLevelItem(const Napi::CallbackInfo& info); - // Napi::Value findItems(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/lib/QtWidgets/QTreeWidget/qtreewidget_wrap.cpp b/src/cpp/lib/QtWidgets/QTreeWidget/qtreewidget_wrap.cpp index c054966ac..9eabb9e28 100644 --- a/src/cpp/lib/QtWidgets/QTreeWidget/qtreewidget_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QTreeWidget/qtreewidget_wrap.cpp @@ -26,6 +26,8 @@ Napi::Object QTreeWidgetWrap::init(Napi::Env env, Napi::Object exports) { InstanceMethod("setItemWidget", &QTreeWidgetWrap::setItemWidget), InstanceMethod("currentItem", &QTreeWidgetWrap::currentItem), InstanceMethod("findItems", &QTreeWidgetWrap::findItems), + InstanceMethod("takeTopLevelItem", &QTreeWidgetWrap::takeTopLevelItem), + InstanceMethod("clear", &QTreeWidgetWrap::clear), QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QTreeWidgetWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -213,12 +215,15 @@ Napi::Value QTreeWidgetWrap::currentItem(const Napi::CallbackInfo& info) { Napi::HandleScope scope(env); QTreeWidgetItem* currentItem = this->instance->currentItem(); + if (currentItem != nullptr) { + Napi::Object value = QTreeWidgetItemWrap::constructor.New( + {Napi::External::New( + env, new QTreeWidgetItem(*currentItem))}); - Napi::Object value = QTreeWidgetItemWrap::constructor.New( - {Napi::External::New( - env, new QTreeWidgetItem(*currentItem))}); - - return value; + return value; + } else { + return env.Null(); + } } Napi::Value QTreeWidgetWrap::findItems(const Napi::CallbackInfo& info) { @@ -242,3 +247,29 @@ Napi::Value QTreeWidgetWrap::findItems(const Napi::CallbackInfo& info) { } return napiItems; } + +Napi::Value QTreeWidgetWrap::takeTopLevelItem(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int index = info[0].As().Int32Value(); + + QTreeWidgetItem* itemRemoved = this->instance->takeTopLevelItem(index); + + if (itemRemoved != nullptr) { + Napi::Object value = QTreeWidgetItemWrap::constructor.New( + {Napi::External::New( + env, new QTreeWidgetItem(*itemRemoved))}); + + return value; + } else { + return env.Null(); + } +} + +Napi::Value QTreeWidgetWrap::clear(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + this->instance->clear(); + return env.Null(); +} diff --git a/src/index.ts b/src/index.ts index dac07acff..2e43d2853 100644 --- a/src/index.ts +++ b/src/index.ts @@ -100,6 +100,7 @@ export { QShortcut, QShortcutSignals } from './lib/QtWidgets/QShortcut'; export { QGroupBox, QGroupBoxSignals } from './lib/QtWidgets/QGroupBox'; export { QStatusBar, QStatusBarSignals } from './lib/QtWidgets/QStatusBar'; export { QStandardItemModel, QStandardItemModelSignals } from './lib/QtWidgets/QStandardItemModel'; +export { QStandardItem } from './lib/QtWidgets/QStandardItem'; // Core export { QDate } from './lib/QtCore/QDate'; export { QDateTime } from './lib/QtCore/QDateTime'; diff --git a/src/lib/QtWidgets/QTreeWidget.ts b/src/lib/QtWidgets/QTreeWidget.ts index a498cbfd7..2f7d4d4b1 100644 --- a/src/lib/QtWidgets/QTreeWidget.ts +++ b/src/lib/QtWidgets/QTreeWidget.ts @@ -83,7 +83,7 @@ export class QTreeWidget extends QAbstractScrollArea { } insertTopLevelItem(index: number, item: QTreeWidgetItem): void { - this.topLevelItems.add(item); + this.topLevelItems.add(item) this.native.insertTopLevelItem(index, item.native); } @@ -145,8 +145,13 @@ export class QTreeWidget extends QAbstractScrollArea { /** * Returns the current item in the tree widget. */ - currentItem(): QTreeWidgetItem { - return new QTreeWidgetItem(this.native.currentItem()); + currentItem(): QTreeWidgetItem | void { + const item = this.native.currentItem(); + if (item) { + return new QTreeWidgetItem(item); + } else { + return undefined; + } } /** @@ -163,6 +168,20 @@ export class QTreeWidget extends QAbstractScrollArea { return new QTreeWidgetItem(eachItem); }); } + + takeTopLevelItem(index: number): QTreeWidgetItem | void { + const item = this.native.takeTopLevelItem(index); + if (item) { + return new QTreeWidgetItem(item); + } else { + return undefined; + } + } + + clear(): void { + this.topLevelItems.clear(); + this.native.clear(); + } } export interface QTreeWidgetSignals extends QAbstractScrollAreaSignals {