summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Loehning <robert.loehning@nokia.com>2009-12-02 14:42:03 +0100
committerRobert Loehning <robert.loehning@nokia.com>2009-12-02 14:43:22 +0100
commite494864b08f094d0efe2bb49208ae316f97cbc6d (patch)
tree282d5a222211aa7bbff737e40a16d60aceca5515
parent7057584f982e1a607140f267995c7352a1356cd8 (diff)
downloadqt-creator-e494864b08f094d0efe2bb49208ae316f97cbc6d.tar.gz
Trk: Setting correct date and time when closing remote file.
Reviewed-by: Friedemann Kleint
-rw-r--r--src/shared/trk/launcher.cpp2
-rw-r--r--src/shared/trk/trkutils.cpp15
-rw-r--r--src/shared/trk/trkutils.h3
3 files changed, 19 insertions, 1 deletions
diff --git a/src/shared/trk/launcher.cpp b/src/shared/trk/launcher.cpp
index b9b5f04a15..8a78456477 100644
--- a/src/shared/trk/launcher.cpp
+++ b/src/shared/trk/launcher.cpp
@@ -467,7 +467,7 @@ void Launcher::closeRemoteFile(bool failed)
{
QByteArray ba;
appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
- appendInt(&ba, QDateTime::currentDateTime().toTime_t(), TargetByteOrder);
+ appendDateTime(&ba, QDateTime::currentDateTime(), TargetByteOrder);
d->m_device->sendTrkMessage(TrkCloseFile,
failed ? TrkCallback() : TrkCallback(this, &Launcher::handleFileCopied),
ba);
diff --git a/src/shared/trk/trkutils.cpp b/src/shared/trk/trkutils.cpp
index 458390d889..256d4ad1e1 100644
--- a/src/shared/trk/trkutils.cpp
+++ b/src/shared/trk/trkutils.cpp
@@ -32,6 +32,9 @@
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
+#include <QtCore/QDate>
+#include <QtCore/QDateTime>
+#include <QtCore/QTime>
#define logMessage(s) do { qDebug() << "TRKCLIENT: " << s; } while (0)
@@ -400,6 +403,18 @@ void appendString(QByteArray *ba, const QByteArray &str, Endianness endian, bool
ba->append('\0');
}
+void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness endian)
+{
+ // convert the QDateTime to UTC and append its representation to QByteArray
+ // format is the same as in FAT file system
+ dateTime = dateTime.toUTC();
+ const QTime utcTime = dateTime.time();
+ const QDate utcDate = dateTime.date();
+ uint fatDateTime = (utcTime.hour() << 11 | utcTime.minute() << 5 | utcTime.second()/2) << 16;
+ fatDateTime |= (utcDate.year()-1980) << 9 | utcDate.month() << 5 | utcDate.day();
+ appendInt(ba, fatDateTime, endian);
+}
+
QByteArray errorMessage(byte code)
{
switch (code) {
diff --git a/src/shared/trk/trkutils.h b/src/shared/trk/trkutils.h
index aec86a1730..3648619373 100644
--- a/src/shared/trk/trkutils.h
+++ b/src/shared/trk/trkutils.h
@@ -37,6 +37,8 @@
typedef unsigned char byte;
+class QDateTime;
+
namespace trk {
enum Command {
@@ -92,6 +94,7 @@ void appendByte(QByteArray *ba, byte b);
void appendShort(QByteArray *ba, ushort s, Endianness = TargetByteOrder);
void appendInt(QByteArray *ba, uint i, Endianness = TargetByteOrder);
void appendString(QByteArray *ba, const QByteArray &str, Endianness = TargetByteOrder, bool appendNullTerminator = true);
+void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteOrder);
struct Library
{