summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengine.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-06-26 23:42:28 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-06-26 23:42:28 (GMT)
commit59c58576efd3ceff7add46a359fd99e56a2fb279 (patch)
treea23982655f3f7959c9c340b429aebc51435e6676 /src/script/api/qscriptengine.cpp
parentd8f757bdb881c3a3d723642734d7d76fae14dce7 (diff)
parent1a72f98a15ef78004894dc6636b8a5d969d66fde (diff)
downloadQt-59c58576efd3ceff7add46a359fd99e56a2fb279.zip
Qt-59c58576efd3ceff7add46a359fd99e56a2fb279.tar.gz
Qt-59c58576efd3ceff7add46a359fd99e56a2fb279.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: Fixed copy-paste error in htmlgenerator.cpp Corrected filename case for wincrypt.h Add qDebug() operator for QGLFormat Fix conversion between JavaScript Date and QDateTime Avoid memory allocation when converting from Gbk to unicode. Warn if surface creation fails Doc: fixing search bug doc: Added more DITA output to the XML generator QSemaphore::tryAquire(timeout) -- never times out on an active semaphore Fix warnings in QSslSocketPrivate::systemCaCertificates() doc: Added more DITA output to the XML generator
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r--src/script/api/qscriptengine.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 655026c..7bccffe 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -438,6 +438,53 @@ qsreal ToNumber(const QString &value)
#endif
+static const qsreal MsPerSecond = 1000.0;
+
+static inline int MsFromTime(qsreal t)
+{
+ int r = int(::fmod(t, MsPerSecond));
+ return (r >= 0) ? r : r + int(MsPerSecond);
+}
+
+/*!
+ \internal
+ Converts a JS date value (milliseconds) to a QDateTime (local time).
+*/
+QDateTime MsToDateTime(JSC::ExecState *exec, qsreal t)
+{
+ if (qIsNaN(t))
+ return QDateTime();
+ JSC::GregorianDateTime tm;
+ JSC::msToGregorianDateTime(exec, t, /*output UTC=*/true, tm);
+ int ms = MsFromTime(t);
+ QDateTime convertedUTC = QDateTime(QDate(tm.year + 1900, tm.month + 1, tm.monthDay),
+ QTime(tm.hour, tm.minute, tm.second, ms), Qt::UTC);
+ return convertedUTC.toLocalTime();
+}
+
+/*!
+ \internal
+ Converts a QDateTime to a JS date value (milliseconds).
+*/
+qsreal DateTimeToMs(JSC::ExecState *exec, const QDateTime &dt)
+{
+ if (!dt.isValid())
+ return qSNaN();
+ QDateTime utc = dt.toUTC();
+ QDate date = utc.date();
+ QTime time = utc.time();
+ JSC::GregorianDateTime tm;
+ tm.year = date.year() - 1900;
+ tm.month = date.month() - 1;
+ tm.monthDay = date.day();
+ tm.weekDay = date.dayOfWeek();
+ tm.yearDay = date.dayOfYear();
+ tm.hour = time.hour();
+ tm.minute = time.minute();
+ tm.second = time.second();
+ return JSC::gregorianDateTimeToMS(exec, tm, time.msec(), /*inputIsUTC=*/true);
+}
+
void GlobalClientData::mark(JSC::MarkStack& markStack)
{
engine->mark(markStack);