/***************************************************************************
- * Copyright (C) 2005-2012 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#include "ctcpevent.h"
#include "ircevent.h"
#include "networkevent.h"
#include "messageevent.h"
+#include "peer.h"
+#include "signalproxy.h"
Event::Event(EventManager::EventType type)
: _type(type)
return;
}
+ Q_ASSERT(SignalProxy::current());
+ Q_ASSERT(SignalProxy::current()->sourcePeer());
+
setFlags(static_cast<EventManager::EventFlags>(map.take("flags").toInt())); // TODO sanity check?
- setTimestamp(QDateTime::fromTime_t(map.take("timestamp").toUInt()));
+
+ if (SignalProxy::current()->sourcePeer()->hasFeature(Quassel::Feature::LongTime)) {
+ // timestamp is a qint64, signed rather than unsigned
+ setTimestamp(QDateTime::fromMSecsSinceEpoch(map.take("timestamp").toLongLong()));
+ } else {
+ setTimestamp(QDateTime::fromTime_t(map.take("timestamp").toUInt()));
+ }
}
void Event::toVariantMap(QVariantMap &map) const
{
+ Q_ASSERT(SignalProxy::current());
+ Q_ASSERT(SignalProxy::current()->targetPeer());
+
map["type"] = static_cast<int>(type());
map["flags"] = static_cast<int>(flags());
- map["timestamp"] = timestamp().toTime_t();
+ if (SignalProxy::current()->targetPeer()->hasFeature(Quassel::Feature::LongTime)) {
+ // toMSecs returns a qint64, signed rather than unsigned
+ map["timestamp"] = timestamp().toMSecsSinceEpoch();
+ } else {
+ map["timestamp"] = timestamp().toTime_t();
+ }
}