#
# Machekku Updated Delayed Delivery
#
# Version: 0.1.1
# Date: 2007-02-09
#
# types.cpp      |   17 ++++++++++++-----
# xmpp_tasks.cpp |    6 ++++++
# 2 files changed, 18 insertions(+), 5 deletions(-)
#
diff -rN -u old-psit-1/iris/xmpp-im/types.cpp new-psit-1/iris/xmpp-im/types.cpp
--- old-psit-1/iris/xmpp-im/types.cpp	2007-02-09 02:57:58.000000000 +0100
+++ new-psit-1/iris/xmpp-im/types.cpp	2007-02-09 02:58:03.468750000 +0100
@@ -1481,7 +1481,11 @@
 	// timestamp
 	if(d->timeStampSend && !d->timeStamp.isNull()) {
 		QDomElement e = s.createElement("jabber:x:delay", "x");
-		e.setAttribute("stamp", TS2stamp(d->timeStamp));
+		e.setAttribute("stamp", TS2stamp(d->timeStamp.toUTC()));
+		s.appendChild(e);
+
+		e = s.createElement("http://www.xmpp.org/extensions/xep-0203.html#ns", "x");
+		e.setAttribute("stamp", d->timeStamp.toUTC().toString(Qt::ISODate) + "Z");
 		s.appendChild(e);
 	}
 
@@ -1694,10 +1698,13 @@
 	}
 
 	// timestamp
-	QDomElement t = root.elementsByTagNameNS("jabber:x:delay", "x").item(0).toElement();
-	if(!t.isNull()) {
-		d->timeStamp = stamp2TS(t.attribute("stamp"));
-		d->timeStamp = d->timeStamp.addSecs(timeZoneOffset * 60);
+	QDomElement t = root.elementsByTagNameNS("http://www.xmpp.org/extensions/xep-0203.html#ns", "x").item(0).toElement();
+	if (!t.isNull()) {
+		d->timeStamp = QDateTime::fromString(t.attribute("stamp").left(19), Qt::ISODate).addSecs(timeZoneOffset * 60);
+		d->spooled = true;
+	}
+	else if (t = root.elementsByTagNameNS("jabber:x:delay", "x").item(0).toElement(), !t.isNull()) {
+		d->timeStamp = stamp2TS(t.attribute("stamp")).addSecs(timeZoneOffset * 60);
 		d->spooled = true;
 	}
 	else {
diff -rN -u old-psit-1/iris/xmpp-im/xmpp_tasks.cpp new-psit-1/iris/xmpp-im/xmpp_tasks.cpp
--- old-psit-1/iris/xmpp-im/xmpp_tasks.cpp	2007-02-09 02:57:58.000000000 +0100
+++ new-psit-1/iris/xmpp-im/xmpp_tasks.cpp	2007-02-09 02:58:03.515625000 +0100
@@ -704,6 +704,12 @@
 				p.setTimeStamp(dt);
 			}
 		}
+		else if(i.tagName() == "x" && i.attribute("xmlns") == "http://www.xmpp.org/extensions/xep-0203.html#ns") {
+			if(i.hasAttribute("stamp")) {
+				QDateTime dt = QDateTime::fromString(i.attribute("stamp").left(19), Qt::ISODate).addSecs(client()->timeZoneOffset() * 60);
+				p.setTimeStamp(dt);
+			}
+		}
 		else if(i.tagName() == "x" && i.attribute("xmlns") == "gabber:x:music:info") {
 			QDomElement t;
 			bool found;

