Clean up operator>>(QDataStream &in, QDateTime &dateTime)
Make the tz variable more local (saving some #if-ery). Recognize that the Qt 4 (and 5.1) format didn't store offset or zone so we're treating offset from UTC as UTC and zone as local time. Don't assign a variable the value it already has. Omit parameters when they're the default value anyway. Improved some comments. Change-Id: Ie29a66b50ecb8ed8b0566a0ecbc6492c6ba63e61 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
3f0fda3783
commit
3e76b841a2
|
|
@ -5331,7 +5331,7 @@ QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
|
|||
|
||||
if (out.version() >= QDataStream::Qt_5_2) {
|
||||
|
||||
// In 5.2 we switched to using Qt::TimeSpec and added offset support
|
||||
// In 5.2 we switched to using Qt::TimeSpec and added offset and zone support
|
||||
dateAndTime = getDateTime(dateTime.d);
|
||||
out << dateAndTime << qint8(dateTime.timeSpec());
|
||||
if (dateTime.timeSpec() == Qt::OffsetFromUTC)
|
||||
|
|
@ -5396,13 +5396,10 @@ QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)
|
|||
qint8 ts = 0;
|
||||
Qt::TimeSpec spec = Qt::LocalTime;
|
||||
qint32 offset = 0;
|
||||
#if QT_CONFIG(timezone)
|
||||
QTimeZone tz;
|
||||
#endif // timezone
|
||||
|
||||
if (in.version() >= QDataStream::Qt_5_2) {
|
||||
|
||||
// In 5.2 we switched to using Qt::TimeSpec and added offset support
|
||||
// In 5.2 we switched to using Qt::TimeSpec and added offset and zone support
|
||||
in >> dt >> tm >> ts;
|
||||
spec = static_cast<Qt::TimeSpec>(ts);
|
||||
if (spec == Qt::OffsetFromUTC) {
|
||||
|
|
@ -5410,6 +5407,7 @@ QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)
|
|||
dateTime = QDateTime(dt, tm, spec, offset);
|
||||
#if QT_CONFIG(timezone)
|
||||
} else if (spec == Qt::TimeZone) {
|
||||
QTimeZone tz;
|
||||
in >> tz;
|
||||
dateTime = QDateTime(dt, tm, tz);
|
||||
#endif // timezone
|
||||
|
|
@ -5429,23 +5427,15 @@ QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)
|
|||
|
||||
// From 4.0 to 5.1 (except 5.0) we used QDateTimePrivate::Spec
|
||||
in >> dt >> tm >> ts;
|
||||
switch ((QDateTimePrivate::Spec)ts) {
|
||||
switch (static_cast<QDateTimePrivate::Spec>(ts)) {
|
||||
case QDateTimePrivate::OffsetFromUTC: // No offset was stored, so treat as UTC.
|
||||
case QDateTimePrivate::UTC:
|
||||
spec = Qt::UTC;
|
||||
break;
|
||||
case QDateTimePrivate::OffsetFromUTC:
|
||||
spec = Qt::OffsetFromUTC;
|
||||
break;
|
||||
case QDateTimePrivate::TimeZone:
|
||||
spec = Qt::TimeZone;
|
||||
#if QT_CONFIG(timezone)
|
||||
// FIXME: need to use a different constructor !
|
||||
#endif
|
||||
break;
|
||||
case QDateTimePrivate::TimeZone: // No zone was stored, so treat as LocalTime:
|
||||
case QDateTimePrivate::LocalUnknown:
|
||||
case QDateTimePrivate::LocalStandard:
|
||||
case QDateTimePrivate::LocalDST:
|
||||
spec = Qt::LocalTime;
|
||||
break;
|
||||
}
|
||||
dateTime = QDateTime(dt, tm, spec, offset);
|
||||
|
|
@ -5454,7 +5444,7 @@ QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)
|
|||
|
||||
// Before 4.0 there was no TimeSpec, only Qt::LocalTime was supported
|
||||
in >> dt >> tm;
|
||||
dateTime = QDateTime(dt, tm, spec, offset);
|
||||
dateTime = QDateTime(dt, tm);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue