X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresessioneventprocessor.cpp;h=57d836d9f13fe47d77036a6d1cea337e446284ad;hb=bd5414d8bfe2be18ba051d4bbf936e9ead0cdf66;hp=9a0e0363c324c428fe510e6f27f421c3d5bbdb76;hpb=c2e3479b87e7d0713d302d26fb2d7d01d7b8c9c2;p=quassel.git diff --git a/src/core/coresessioneventprocessor.cpp b/src/core/coresessioneventprocessor.cpp index 9a0e0363..57d836d9 100644 --- a/src/core/coresessioneventprocessor.cpp +++ b/src/core/coresessioneventprocessor.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 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 * @@ -846,7 +846,9 @@ void CoreSessionEventProcessor::processIrcEvent301(IrcEvent *e) if (ircuser) { ircuser->setAway(true); ircuser->setAwayMessage(e->params().at(1)); - //ircuser->setLastAwayMessage(now); + // lastAwayMessageTime is set in EventStringifier::processIrcEvent301(), no need to set it + // here too + //ircuser->setLastAwayMessageTime(now); } } @@ -959,8 +961,18 @@ void CoreSessionEventProcessor::processIrcEvent317(IrcEvent *e) int idleSecs = e->params()[1].toInt(); if (e->params().count() > 3) { // if we have more then 3 params we have the above mentioned "real life" situation - int logintime = e->params()[2].toInt(); - loginTime = QDateTime::fromTime_t(logintime); + // Allow for 64-bit time + qint64 logintime = e->params()[2].toLongLong(); + // Time in IRC protocol is defined as seconds. Convert from seconds instead. + // See https://doc.qt.io/qt-5/qdatetime.html#fromSecsSinceEpoch +#if QT_VERSION >= 0x050800 + loginTime = QDateTime::fromSecsSinceEpoch(logintime); +#else + // fromSecsSinceEpoch() was added in Qt 5.8. Manually downconvert to seconds for + // now. + // See https://doc.qt.io/qt-5/qdatetime.html#fromMSecsSinceEpoch + loginTime = QDateTime::fromMSecsSinceEpoch((qint64)(logintime * 1000)); +#endif } IrcUser *ircuser = e->network()->ircUser(e->params()[0]);