Added fromString functions to QDate, QTime, and QDateTime (#518)
Added fromString functions to QDate, QTime, and QDateTime and added a demo on how to show and sort QDate and QTime in a QTreeWidget.
This commit is contained in:
parent
527a18a1e5
commit
e8c97e1938
@ -43,5 +43,6 @@ DLL_EXPORT Napi::Value currentDate(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromJulianDay(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value isLeapYear(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value isValid(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromString(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromQVariant(const Napi::CallbackInfo& info);
|
||||
} // namespace StaticDateWrapMethods
|
||||
|
||||
@ -55,5 +55,6 @@ DLL_EXPORT Napi::Value currentDateTime(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value currentDateTimeUtc(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value currentMSecsSinceEpoch(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value currentSecsSinceEpoch(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromString(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromQVariant(const Napi::CallbackInfo& info);
|
||||
} // namespace StaticDateTimeWrapMethods
|
||||
|
||||
@ -42,5 +42,6 @@ namespace StaticTimeWrapMethods {
|
||||
DLL_EXPORT Napi::Value currentTime(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromMSecsSinceStartOfDay(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value isValid(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromString(const Napi::CallbackInfo& info);
|
||||
DLL_EXPORT Napi::Value fromQVariant(const Napi::CallbackInfo& info);
|
||||
} // namespace StaticTimeWrapMethods
|
||||
|
||||
@ -32,6 +32,7 @@ Napi::Object QDateWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
StaticMethod("fromJulianDay", &StaticDateWrapMethods::fromJulianDay),
|
||||
StaticMethod("isLeapYear", &StaticDateWrapMethods::isLeapYear),
|
||||
StaticMethod("isValid", &StaticDateWrapMethods::isValid),
|
||||
StaticMethod("fromString", &StaticDateWrapMethods::fromString),
|
||||
StaticMethod("fromQVariant", &StaticDateWrapMethods::fromQVariant),
|
||||
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QDateWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
@ -235,6 +236,26 @@ Napi::Value StaticDateWrapMethods::isValid(const Napi::CallbackInfo& info) {
|
||||
|
||||
return Napi::Value::From(env, QDate::isValid(year, month, day));
|
||||
}
|
||||
Napi::Value StaticDateWrapMethods::fromString(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
std::string dateString = info[0].As<Napi::String>().Utf8Value();
|
||||
|
||||
QDate date;
|
||||
if (info[1].IsString()) {
|
||||
std::string format = info[1].As<Napi::String>().Utf8Value();
|
||||
date = QDate::fromString(QString::fromUtf8(dateString.c_str()),
|
||||
QString::fromUtf8(format.c_str()));
|
||||
} else {
|
||||
int format = info[1].As<Napi::Number>().Int32Value();
|
||||
date = QDate::fromString(QString::fromUtf8(dateString.c_str()),
|
||||
static_cast<Qt::DateFormat>(format));
|
||||
}
|
||||
auto instance = QDateWrap::constructor.New({Napi::External<QDate>::New(
|
||||
env, new QDate(date.year(), date.month(), date.day()))});
|
||||
return instance;
|
||||
}
|
||||
|
||||
Napi::Value StaticDateWrapMethods::fromQVariant(
|
||||
const Napi::CallbackInfo& info) {
|
||||
|
||||
@ -48,6 +48,7 @@ Napi::Object QDateTimeWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
&StaticDateTimeWrapMethods::currentMSecsSinceEpoch),
|
||||
StaticMethod("currentSecsSinceEpoch",
|
||||
&StaticDateTimeWrapMethods::currentSecsSinceEpoch),
|
||||
StaticMethod("fromString", &StaticDateTimeWrapMethods::fromString),
|
||||
StaticMethod("fromQVariant", &StaticDateTimeWrapMethods::fromQVariant),
|
||||
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QDateTimeWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
@ -386,6 +387,28 @@ Napi::Value StaticDateTimeWrapMethods::currentSecsSinceEpoch(
|
||||
return Napi::Value::From(env, QDateTime::currentSecsSinceEpoch());
|
||||
}
|
||||
|
||||
Napi::Value StaticDateTimeWrapMethods::fromString(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
std::string dateTimeString = info[0].As<Napi::String>().Utf8Value();
|
||||
|
||||
QDateTime dateTime;
|
||||
if (info[1].IsString()) {
|
||||
std::string format = info[1].As<Napi::String>().Utf8Value();
|
||||
dateTime = QDateTime::fromString(QString::fromUtf8(dateTimeString.c_str()),
|
||||
QString::fromUtf8(format.c_str()));
|
||||
} else {
|
||||
int format = info[1].As<Napi::Number>().Int32Value();
|
||||
dateTime = QDateTime::fromString(QString::fromUtf8(dateTimeString.c_str()),
|
||||
static_cast<Qt::DateFormat>(format));
|
||||
}
|
||||
auto instance = QDateTimeWrap::constructor.New(
|
||||
{Napi::External<QDateTime>::New(env, new QDateTime(dateTime))});
|
||||
return instance;
|
||||
}
|
||||
|
||||
Napi::Value StaticDateTimeWrapMethods::fromQVariant(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
|
||||
@ -30,6 +30,7 @@ Napi::Object QTimeWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
StaticMethod("fromMSecsSinceStartOfDay",
|
||||
&StaticTimeWrapMethods::fromMSecsSinceStartOfDay),
|
||||
StaticMethod("isValid", &StaticTimeWrapMethods::isValid),
|
||||
StaticMethod("fromString", &StaticTimeWrapMethods::fromString),
|
||||
StaticMethod("fromQVariant", &StaticTimeWrapMethods::fromQVariant),
|
||||
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QTimeWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
@ -230,6 +231,27 @@ Napi::Value StaticTimeWrapMethods::isValid(const Napi::CallbackInfo& info) {
|
||||
return Napi::Value::From(env, QTime::isValid(h, m, s, ms));
|
||||
}
|
||||
|
||||
Napi::Value StaticTimeWrapMethods::fromString(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
std::string timeString = info[0].As<Napi::String>().Utf8Value();
|
||||
|
||||
QTime time;
|
||||
if (info[1].IsString()) {
|
||||
std::string format = info[1].As<Napi::String>().Utf8Value();
|
||||
time = QTime::fromString(QString::fromUtf8(timeString.c_str()),
|
||||
QString::fromUtf8(format.c_str()));
|
||||
} else {
|
||||
int format = info[1].As<Napi::Number>().Int32Value();
|
||||
time = QTime::fromString(QString::fromUtf8(timeString.c_str()),
|
||||
static_cast<Qt::DateFormat>(format));
|
||||
}
|
||||
auto instance = QTimeWrap::constructor.New({Napi::External<QTime>::New(
|
||||
env, new QTime(time.hour(), time.minute(), time.second(), time.msec()))});
|
||||
return instance;
|
||||
}
|
||||
|
||||
Napi::Value StaticTimeWrapMethods::fromQVariant(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
|
||||
54
src/demo.ts
54
src/demo.ts
@ -1,12 +1,48 @@
|
||||
import { QFileDialog, DialogCode, FileMode } from './index';
|
||||
import { QTime } from '.';
|
||||
import { DateFormat } from './lib/QtEnums';
|
||||
|
||||
const fileDialog = new QFileDialog();
|
||||
fileDialog.setFileMode(FileMode.AnyFile);
|
||||
fileDialog.setNameFilter('All files (*.*)');
|
||||
//const date = QDate.fromString('04132020', 'MMddyyyy');
|
||||
const { QMainWindow, QTreeWidgetItem, QTreeWidget, QDate, ItemDataRole, QDateTime } = require('./index');
|
||||
|
||||
if (fileDialog.exec() === DialogCode.Accepted) {
|
||||
const selectedFiles = fileDialog.selectedFiles();
|
||||
console.log(selectedFiles);
|
||||
} else {
|
||||
console.log('User canceled');
|
||||
const win = new QMainWindow();
|
||||
const tree = new QTreeWidget();
|
||||
tree.setSortingEnabled(true);
|
||||
tree.setHeaderLabels(['Date', 'Time']);
|
||||
|
||||
const dates = [
|
||||
'11/22/1973 02:55:43 AM',
|
||||
'02/10/1949 08:44:35 AM',
|
||||
'02/06/1970 02:45:24 PM',
|
||||
'02/15/1984 04:04:01 AM',
|
||||
'03/02/1981 01:14:37 PM',
|
||||
'12/24/1937 11:51:14 AM',
|
||||
'01/01/2003 08:44:47 PM',
|
||||
'08/10/1961 12:21:59 PM',
|
||||
'07/14/1977 04:02:20 AM',
|
||||
'11/23/1980 11:58:03 PM',
|
||||
'03/01/1965 12:35:36 AM',
|
||||
'03/04/1996 05:32:37 AM',
|
||||
'07/11/1986 10:16:10 AM',
|
||||
'04/13/1933 02:14:08 PM',
|
||||
'03/28/1972 08:50:09 PM',
|
||||
'06/18/1925 07:06:51 AM',
|
||||
'04/22/2017 08:29:33 PM',
|
||||
'01/12/1932 04:01:28 AM',
|
||||
'10/07/2019 08:14:44 PM',
|
||||
'10/27/1987 11:51:41 AM',
|
||||
'06/09/2002 06:04:50 AM',
|
||||
'12/31/1980 01:33:19 PM',
|
||||
'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);
|
||||
win.show();
|
||||
(global as any).win = win;
|
||||
|
||||
@ -77,6 +77,9 @@ export class QDate extends Component {
|
||||
static isValid(year: number, month: number, day: number): boolean {
|
||||
return addon.QDate.isValid(year, month, day);
|
||||
}
|
||||
static fromString(dateString: string, format: string | DateFormat): QDate {
|
||||
return new QDate(addon.QDate.fromString(dateString, format));
|
||||
}
|
||||
static fromQVariant(variant: QVariant): QDate {
|
||||
return new QDate(addon.QDate.fromQVariant(variant.native));
|
||||
}
|
||||
|
||||
@ -115,6 +115,9 @@ export class QDateTime extends Component {
|
||||
static currentSecsSinceEpoch(): number {
|
||||
return addon.QDateTime.currentSecsSinceEpoch();
|
||||
}
|
||||
static fromString(dateTimeString: string, format: string | DateFormat): QDateTime {
|
||||
return addon.QDateTime.fromString(dateTimeString, format);
|
||||
}
|
||||
static fromQVariant(variant: QVariant): QDateTime {
|
||||
return new QDateTime(addon.QDateTime.fromQVariant(variant.native));
|
||||
}
|
||||
|
||||
@ -74,6 +74,9 @@ export class QTime extends Component {
|
||||
static isValid(h: number, m: number, s: number, ms = 0): boolean {
|
||||
return addon.QTime.isValid(h, m, s, ms);
|
||||
}
|
||||
static fromString(timeString: string, format: string | DateFormat): QTime {
|
||||
return new QTime(addon.QTime.fromString(timeString, format));
|
||||
}
|
||||
static fromQVariant(variant: QVariant): QTime {
|
||||
return new QTime(addon.QTime.fromQVariant(variant.native));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user