Adds itemData and icon and bulk clear to combobox (#276)
This commit is contained in:
parent
16a74dc589
commit
7d33f25040
@ -29,6 +29,7 @@ class QComboBoxWrap : public Napi::ObjectWrap<QComboBoxWrap> {
|
||||
Napi::Value currentText(const Napi::CallbackInfo& info);
|
||||
Napi::Value insertSeparator(const Napi::CallbackInfo& info);
|
||||
Napi::Value itemText(const Napi::CallbackInfo& info);
|
||||
Napi::Value itemData(const Napi::CallbackInfo& info);
|
||||
Napi::Value removeItem(const Napi::CallbackInfo& info);
|
||||
Napi::Value sizeAdjustPolicy(const Napi::CallbackInfo& info);
|
||||
Napi::Value setSizeAdjustPolicy(const Napi::CallbackInfo& info);
|
||||
@ -36,6 +37,7 @@ class QComboBoxWrap : public Napi::ObjectWrap<QComboBoxWrap> {
|
||||
Napi::Value setMaxVisibleItems(const Napi::CallbackInfo& info);
|
||||
Napi::Value isEditable(const Napi::CallbackInfo& info);
|
||||
Napi::Value setEditable(const Napi::CallbackInfo& info);
|
||||
Napi::Value clear(const Napi::CallbackInfo& info);
|
||||
|
||||
QWIDGET_WRAPPED_METHODS_DECLARATION
|
||||
};
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
|
||||
#include "QtWidgets/QComboBox/qcombobox_wrap.h"
|
||||
|
||||
#include <QWidget>
|
||||
#include "QtCore/QVariant/qvariant_wrap.h"
|
||||
#include "QtGui/QIcon/qicon_wrap.h"
|
||||
|
||||
#include "Extras/Utils/nutils.h"
|
||||
#include "QtWidgets/QWidget/qwidget_wrap.h"
|
||||
@ -21,6 +22,7 @@ Napi::Object QComboBoxWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
InstanceMethod("currentText", &QComboBoxWrap::currentText),
|
||||
InstanceMethod("insertSeparator", &QComboBoxWrap::insertSeparator),
|
||||
InstanceMethod("itemText", &QComboBoxWrap::itemText),
|
||||
InstanceMethod("itemData", &QComboBoxWrap::itemData),
|
||||
InstanceMethod("removeItem", &QComboBoxWrap::removeItem),
|
||||
InstanceMethod("sizeAdjustPolicy", &QComboBoxWrap::sizeAdjustPolicy),
|
||||
InstanceMethod("setSizeAdjustPolicy",
|
||||
@ -29,6 +31,7 @@ Napi::Object QComboBoxWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
InstanceMethod("setMaxVisibleItems", &QComboBoxWrap::setMaxVisibleItems),
|
||||
InstanceMethod("isEditable", &QComboBoxWrap::isEditable),
|
||||
InstanceMethod("setEditable", &QComboBoxWrap::setEditable),
|
||||
InstanceMethod("clear", &QComboBoxWrap::clear),
|
||||
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QComboBoxWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
exports.Set(CLASSNAME, func);
|
||||
@ -63,10 +66,25 @@ QComboBoxWrap::QComboBoxWrap(const Napi::CallbackInfo& info)
|
||||
Napi::Value QComboBoxWrap::addItem(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
if (info.Length() == 3) {
|
||||
Napi::Object iconWrap = info[0].As<Napi::Object>();
|
||||
QIconWrap* iconWrapValue = Napi::ObjectWrap<QIconWrap>::Unwrap(iconWrap);
|
||||
QIcon* icon = iconWrapValue->getInternalInstance();
|
||||
std::string text = info[1].As<Napi::String>().Utf8Value();
|
||||
Napi::Object variantWrap = info[2].As<Napi::Object>();
|
||||
QVariantWrap* variantWrapValue =
|
||||
Napi::ObjectWrap<QVariantWrap>::Unwrap(variantWrap);
|
||||
QVariant* variant = variantWrapValue->getInternalInstance();
|
||||
this->instance->addItem(*icon, text.c_str(), *variant);
|
||||
} else {
|
||||
std::string text = info[0].As<Napi::String>().Utf8Value();
|
||||
Napi::Object variantWrap = info[1].As<Napi::Object>();
|
||||
QVariantWrap* variantWrapValue =
|
||||
Napi::ObjectWrap<QVariantWrap>::Unwrap(variantWrap);
|
||||
QVariant* variant = variantWrapValue->getInternalInstance();
|
||||
this->instance->addItem(text.c_str(), *variant);
|
||||
}
|
||||
|
||||
std::string text = info[0].As<Napi::String>().Utf8Value();
|
||||
|
||||
this->instance->addItem(text.c_str());
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
@ -147,6 +165,17 @@ Napi::Value QComboBoxWrap::itemText(const Napi::CallbackInfo& info) {
|
||||
return Napi::String::New(env, this->instance->itemText(index).toStdString());
|
||||
}
|
||||
|
||||
Napi::Value QComboBoxWrap::itemData(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int index = info[0].As<Napi::Number>().Int32Value();
|
||||
QVariant* variant = new QVariant(this->instance->itemData(index));
|
||||
auto variantWrap = QVariantWrap::constructor.New(
|
||||
{Napi::External<QVariant>::New(env, variant)});
|
||||
return variantWrap;
|
||||
}
|
||||
|
||||
Napi::Value QComboBoxWrap::removeItem(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
@ -205,3 +234,11 @@ Napi::Value QComboBoxWrap::setEditable(const Napi::CallbackInfo& info) {
|
||||
this->instance->setEditable(editable);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QComboBoxWrap::clear(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
this->instance->clear();
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ export { QFileDialog, QFileDialogEvents } from './lib/QtWidgets/QFileDialog';
|
||||
export { QLineEdit, QLineEditEvents, EchoMode } from './lib/QtWidgets/QLineEdit';
|
||||
export { QMainWindow, QMainWindowEvents } from './lib/QtWidgets/QMainWindow';
|
||||
export { QProgressBar, QProgressBarEvents } from './lib/QtWidgets/QProgressBar';
|
||||
export { QComboBox, QComboBoxEvents } from './lib/QtWidgets/QComboBox';
|
||||
export { QComboBox, QComboBoxEvents, InsertPolicy } from './lib/QtWidgets/QComboBox';
|
||||
export { QPushButton, QPushButtonEvents } from './lib/QtWidgets/QPushButton';
|
||||
export { QToolButton, QToolButtonEvents, ToolButtonPopupMode } from './lib/QtWidgets/QToolButton';
|
||||
export { QSpinBox, QSpinBoxEvents } from './lib/QtWidgets/QSpinBox';
|
||||
|
||||
@ -3,6 +3,8 @@ import { NodeWidget } from './QWidget';
|
||||
import { BaseWidgetEvents } from '../core/EventWidget';
|
||||
import { NativeElement } from '../core/Component';
|
||||
import { SizeAdjustPolicy } from '../QtEnums';
|
||||
import { QIcon } from '../QtGui/QIcon';
|
||||
import { QVariant } from '../QtCore/QVariant';
|
||||
|
||||
export const QComboBoxEvents = Object.freeze({
|
||||
currentIndexChanged: 'currentIndexChanged',
|
||||
@ -23,11 +25,19 @@ export class QComboBox extends NodeWidget {
|
||||
this.native = native;
|
||||
this.nodeParent = parent;
|
||||
}
|
||||
addItem(value: string): void {
|
||||
this.native.addItem(value);
|
||||
addItem(icon: QIcon | undefined, text: string, userData: QVariant = new QVariant()): void {
|
||||
if (icon) {
|
||||
this.native.addItem(icon.native, text, userData.native);
|
||||
} else {
|
||||
this.native.addItem(text, userData.native);
|
||||
}
|
||||
}
|
||||
insertItem(index: number, text: string): void {
|
||||
this.native.insertItem(index, text);
|
||||
insertItem(index: number, icon: QIcon | undefined, text: string, userData: QVariant = new QVariant()): void {
|
||||
if (icon) {
|
||||
this.native.insertItem(index, icon.native, text, userData.native);
|
||||
} else {
|
||||
this.native.insertItem(index, text, userData.native);
|
||||
}
|
||||
}
|
||||
addItems(texts: string[]): void {
|
||||
this.native.addItems(texts);
|
||||
@ -44,8 +54,11 @@ export class QComboBox extends NodeWidget {
|
||||
insertSeparator(index: number): void {
|
||||
this.native.insertSeparator(index);
|
||||
}
|
||||
itemText(index: number): void {
|
||||
this.native.itemText(index);
|
||||
itemText(index: number): string {
|
||||
return this.native.itemText(index);
|
||||
}
|
||||
itemData(index: number): QVariant {
|
||||
return new QVariant(this.native.itemData(index));
|
||||
}
|
||||
removeItem(index: number): void {
|
||||
this.native.removeItem(index);
|
||||
@ -68,4 +81,17 @@ export class QComboBox extends NodeWidget {
|
||||
setEditable(editable: boolean): void {
|
||||
this.native.setEditable(editable);
|
||||
}
|
||||
clear(): void {
|
||||
this.native.clear();
|
||||
}
|
||||
}
|
||||
|
||||
export enum InsertPolicy {
|
||||
NoInsert,
|
||||
InsertAtTop,
|
||||
InsertAtCurrent,
|
||||
InsertAtBottom,
|
||||
InsertAfterCurrent,
|
||||
InsertBeforeCurrent,
|
||||
InsertAlphabetically,
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user