Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ class DLL_EXPORT QTableWidgetWrap : public Napi::ObjectWrap<QTableWidgetWrap> {
Napi::Value sortByColumn(const Napi::CallbackInfo& info);
Napi::Value setColumnWidth(const Napi::CallbackInfo& info);
Napi::Value setRowHeight(const Napi::CallbackInfo& info);
Napi::Value columnCount(const Napi::CallbackInfo& info);
Napi::Value rowCount(const Napi::CallbackInfo& info);
Napi::Value setColumnCount(const Napi::CallbackInfo& info);
Napi::Value setRowCount(const Napi::CallbackInfo& info);
Napi::Value setSortingEnabled(const Napi::CallbackInfo& info);
Napi::Value isSortingEnabled(const Napi::CallbackInfo& info);
};
34 changes: 34 additions & 0 deletions src/cpp/lib/QtWidgets/QTableWidget/qtablewidget_wrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ Napi::Object QTableWidgetWrap::init(Napi::Env env, Napi::Object exports) {
InstanceMethod("sortByColumn", &QTableWidgetWrap::sortByColumn),
InstanceMethod("setColumnWidth", &QTableWidgetWrap::setColumnWidth),
InstanceMethod("setRowHeight", &QTableWidgetWrap::setRowHeight),
InstanceMethod("columnCount", &QTableWidgetWrap::columnCount),
InstanceMethod("rowCount", &QTableWidgetWrap::rowCount),
InstanceMethod("setColumnCount", &QTableWidgetWrap::setColumnCount),
InstanceMethod("setRowCount", &QTableWidgetWrap::setRowCount),
InstanceMethod("setSortingEnabled",
&QTableWidgetWrap::setSortingEnabled),
InstanceMethod("isSortingEnabled", &QTableWidgetWrap::isSortingEnabled),
Expand Down Expand Up @@ -429,6 +433,36 @@ Napi::Value QTableWidgetWrap::setRowHeight(const Napi::CallbackInfo& info) {
this->instance->setRowHeight(row, height);
return env.Null();
}
Napi::Value QTableWidgetWrap::columnCount(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);

int count = static_cast<int>(this->instance->columnCount());
return Napi::Number::New(env, count);
}
Napi::Value QTableWidgetWrap::rowCount(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);

int count = static_cast<int>(this->instance->rowCount());
return Napi::Number::New(env, count);
}
Napi::Value QTableWidgetWrap::setColumnCount(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);

int count = info[0].As<Napi::Number>().Int32Value();
this->instance->setColumnCount(count);
return env.Null();
}
Napi::Value QTableWidgetWrap::setRowCount(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);

int count = info[0].As<Napi::Number>().Int32Value();
this->instance->setRowCount(count);
return env.Null();
}

Napi::Value QTableWidgetWrap::setSortingEnabled(
const Napi::CallbackInfo& info) {
Expand Down
57 changes: 39 additions & 18 deletions src/demo.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
import { QTime } from '.';
import { DateFormat } from './lib/QtEnums';

//const date = QDate.fromString('04132020', 'MMddyyyy');
const { QMainWindow, QTreeWidgetItem, QTreeWidget, QDate, ItemDataRole, QDateTime } = require('./index');
import { QMainWindow, QTableWidget, QTableWidgetItem, QWidget, QBoxLayout } from '.';
import { QPushButton } from './lib/QtWidgets/QPushButton';

const win = new QMainWindow();
win.resize(500, 500);
const tree = new QTreeWidget();
tree.setSortingEnabled(true);
tree.setHeaderLabels(['Date', 'Time', 'Test Column']);
tree.setColumnWidth(1, 15); //Sets the size of the selected column (index, size).
const table = new QTableWidget(0, 0);

const dates = [
'11/22/1973 02:55:43 AM',
Expand Down Expand Up @@ -37,14 +31,41 @@ const dates = [
'11/07/1964 04:43:42 PM',
'03/26/1957 06:40:36 AM',
];
for (const date of dates) {
const item = new QTreeWidgetItem();
const dateObject = QDate.fromString(date.split(' ')[0], 'MM/dd/yyyy');
const timeObject = QTime.fromString(date.split(' ')[1] + ' ' + date.split(' ')[2], 'hh:mm:ss AP');
item.setData(0, ItemDataRole.DisplayRole, dateObject.native);
item.setData(1, ItemDataRole.DisplayRole, timeObject.native);
tree.addTopLevelItem(item);
}
win.setCentralWidget(tree);

table.setColumnCount(2);
table.setRowCount(dates.length);
table.setHorizontalHeaderLabels(['Date', 'Time']);

const buildDateStrings = (date: string) => {
const dateString = date.split(' ')[0];
const timeString = date.split(' ')[1] + ' ' + date.split(' ')[2];
return [dateString, timeString];
};

dates.forEach((date, row) => {
const [dateString, timeString] = buildDateStrings(date);
table.setItem(row, 0, new QTableWidgetItem(dateString));
table.setItem(row, 1, new QTableWidgetItem(timeString));
});

const centralWidget = new QWidget();
const boxLayout = new QBoxLayout(0);

const button = new QPushButton();
button.setText('Add row');
button.addEventListener('clicked', () => {
const rowCount = table.rowCount();
table.setRowCount(rowCount + 1);

const date = new Date().toDateString();
const [dateString, timeString] = buildDateStrings(date);
table.setItem(rowCount, 0, new QTableWidgetItem(dateString));
table.setItem(rowCount, 1, new QTableWidgetItem(timeString));
});
boxLayout.addWidget(table);
boxLayout.addWidget(button);
centralWidget.setLayout(boxLayout);

win.setCentralWidget(centralWidget);
win.show();
(global as any).win = win;
12 changes: 12 additions & 0 deletions src/lib/QtWidgets/QTableWidget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ export class QTableWidget extends QAbstractScrollArea<QTableWidgetSignals> {
setRowHeight(row: number, height: number): void {
this.native.setRowHeight(row, height);
}
columnCount(): number {
return this.native.columnCount();
}
rowCount(): number {
return this.native.rowCount();
}
setColumnCount(count: number): void {
this.native.setColumnCount(count);
}
setRowCount(count: number): void {
this.native.setRowCount(count);
}
setSortingEnabled(enable: boolean): void {
this.native.setSortingEnabled(enable);
}
Expand Down