Added QTreeWidget functions (#452)

https://github.com/nodegui/nodegui/issues/231#issuecomment-601390056
This commit is contained in:
mspencer92 2020-03-20 04:43:54 -04:00 committed by GitHub
parent c7428f2d55
commit 38b8c9536d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 98 additions and 5 deletions

View File

@ -26,6 +26,9 @@ class DLL_EXPORT QTreeWidgetWrap : public Napi::ObjectWrap<QTreeWidgetWrap> {
static Napi::FunctionReference constructor;
Napi::Value addTopLevelItem(const Napi::CallbackInfo &info);
Napi::Value addTopLevelItems(const Napi::CallbackInfo &info);
Napi::Value insertTopLevelItem(const Napi::CallbackInfo &info);
Napi::Value insertTopLevelItems(const Napi::CallbackInfo &info);
Napi::Value selectedItems(const Napi::CallbackInfo &info);
Napi::Value setColumnCount(const Napi::CallbackInfo &info);
Napi::Value setHeaderLabel(const Napi::CallbackInfo &info);

View File

@ -14,6 +14,11 @@ Napi::Object QTreeWidgetWrap::init(Napi::Env env, Napi::Object exports) {
Napi::Function func = DefineClass(
env, CLASSNAME,
{InstanceMethod("addTopLevelItem", &QTreeWidgetWrap::addTopLevelItem),
InstanceMethod("addTopLevelItems", &QTreeWidgetWrap::addTopLevelItems),
InstanceMethod("insertTopLevelItem",
&QTreeWidgetWrap::insertTopLevelItem),
InstanceMethod("insertTopLevelItems",
&QTreeWidgetWrap::insertTopLevelItems),
InstanceMethod("selectedItems", &QTreeWidgetWrap::selectedItems),
InstanceMethod("setColumnCount", &QTreeWidgetWrap::setColumnCount),
InstanceMethod("setHeaderLabel", &QTreeWidgetWrap::setHeaderLabel),
@ -62,6 +67,61 @@ Napi::Value QTreeWidgetWrap::addTopLevelItem(const Napi::CallbackInfo& info) {
this->instance->addTopLevelItem(item);
return env.Null();
}
Napi::Value QTreeWidgetWrap::addTopLevelItems(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
Napi::Array itemsNapi = info[0].As<Napi::Array>();
QList<QTreeWidgetItem*> items;
for (int i = 0; i < itemsNapi.Length(); i++) {
Napi::Value itemNapi = itemsNapi[i];
Napi::Object itemObject = itemNapi.As<Napi::Object>();
QTreeWidgetItemWrap* itemWrap =
Napi::ObjectWrap<QTreeWidgetItemWrap>::Unwrap(itemObject);
QTreeWidgetItem* item = itemWrap->getInternalInstance();
items.append(item);
}
this->instance->addTopLevelItems(items);
return env.Null();
}
Napi::Value QTreeWidgetWrap::insertTopLevelItem(
const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
int index = info[0].As<Napi::Number>().Int32Value();
Napi::Object itemObject = info[1].As<Napi::Object>();
QTreeWidgetItemWrap* itemWrap =
Napi::ObjectWrap<QTreeWidgetItemWrap>::Unwrap(itemObject);
QTreeWidgetItem* item = itemWrap->getInternalInstance();
this->instance->insertTopLevelItem(index, item);
return env.Null();
}
Napi::Value QTreeWidgetWrap::insertTopLevelItems(
const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
int index = info[0].As<Napi::Number>().Int32Value();
Napi::Array itemsNapi = info[1].As<Napi::Array>();
QList<QTreeWidgetItem*> items;
for (int i = 0; i < itemsNapi.Length(); i++) {
Napi::Value itemNapi = itemsNapi[i];
Napi::Object itemObject = itemNapi.As<Napi::Object>();
QTreeWidgetItemWrap* itemWrap =
Napi::ObjectWrap<QTreeWidgetItemWrap>::Unwrap(itemObject);
QTreeWidgetItem* item = itemWrap->getInternalInstance();
items.append(item);
}
this->instance->insertTopLevelItems(index, items);
return env.Null();
}
Napi::Value QTreeWidgetWrap::selectedItems(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
@ -158,4 +218,4 @@ Napi::Value QTreeWidgetWrap::currentItem(const Napi::CallbackInfo& info) {
env, new QTreeWidgetItem(*currentItem))});
return value;
}
}

View File

@ -25,10 +25,17 @@ const item2 = new QTreeWidgetItem();
item2.setText(0, `item-2`);
const item3 = new QTreeWidgetItem();
item3.setText(0, `item-3`);
const item4 = new QTreeWidgetItem();
item4.setText(0, `item-4`);
const item5 = new QTreeWidgetItem();
item5.setText(0, `item-5`);
const item6 = new QTreeWidgetItem();
item6.setText(0, `item-6`);
tree.addTopLevelItem(item1);
tree.addTopLevelItem(item2);
tree.addTopLevelItem(item3);
tree.insertTopLevelItems(0, [item2, item3]);
tree.addTopLevelItems([item4, item5]);
tree.insertTopLevelItem(2, item6);
// Add children to item1
const c1item1 = new QTreeWidgetItem(item1);
@ -38,8 +45,7 @@ c1item2.setText(0, `c1item1`);
win.setCentralWidget(tree);
win.show();
(global as any).win = win;
```
(global as any).win = win;```
*/
export class QTreeWidget extends QAbstractScrollArea<QTreeWidgetSignals> {
native: NativeElement;
@ -65,6 +71,30 @@ export class QTreeWidget extends QAbstractScrollArea<QTreeWidgetSignals> {
this.topLevelItems.add(item);
this.native.addTopLevelItem(item.native);
}
addTopLevelItems(items: QTreeWidgetItem[]): void {
const napiItems: NativeElement[] = [];
items.forEach(item => {
this.topLevelItems.add(item);
napiItems.push(item.native);
});
this.native.addTopLevelItems(napiItems);
}
insertTopLevelItem(index: number, item: QTreeWidgetItem): void {
this.topLevelItems.add(item);
this.native.insertTopLevelItem(index, item.native);
}
insertTopLevelItems(index: number, items: QTreeWidgetItem[]): void {
const napiItems: NativeElement[] = [];
items.forEach(item => {
this.topLevelItems.add(item);
napiItems.push(item.native);
});
this.native.insertTopLevelItems(index, napiItems);
}
setHeaderHidden(hide: boolean): void {
this.native.setProperty('headerHidden', hide);
}