X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fircuser.cpp;h=65dcbe14affaaf64684a51e57ef20f28529b288f;hp=6c10cf4c998d3f02c3ec36447f7b05da26c7b973;hb=4ce53949ab7d52a49ae79b8817bd3aa50fada0d1;hpb=6a63070246d89aa2a2474e3a9a1035fa889ad77e diff --git a/src/common/ircuser.cpp b/src/common/ircuser.cpp index 6c10cf4c..65dcbe14 100644 --- a/src/common/ircuser.cpp +++ b/src/common/ircuser.cpp @@ -40,7 +40,7 @@ IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(net _server(), // _idleTime(QDateTime::currentDateTime()), _ircOperator(), - _lastAwayMessage(0), + _lastAwayMessageTime(), _whoisServiceReply(), _encrypted(false), _network(network), @@ -48,6 +48,8 @@ IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(net _codecForDecoding(0) { updateObjectName(); + _lastAwayMessageTime.setTimeSpec(Qt::UTC); + _lastAwayMessageTime.setMSecsSinceEpoch(0); } @@ -159,10 +161,11 @@ void IrcUser::setAccount(const QString &account) } -void IrcUser::setAway(const bool &away) +void IrcUser::setAway(bool away) { if (away != _away) { _away = away; + markAwayChanged(); SYNC(ARG(away)) emit awaySet(away); } @@ -173,6 +176,7 @@ void IrcUser::setAwayMessage(const QString &awayMessage) { if (!awayMessage.isEmpty() && _awayMessage != awayMessage) { _awayMessage = awayMessage; + markAwayChanged(); SYNC(ARG(awayMessage)) } } @@ -215,11 +219,27 @@ void IrcUser::setIrcOperator(const QString &ircOperator) } -void IrcUser::setLastAwayMessage(const int &lastAwayMessage) +// This function is only ever called by SYNC calls from legacy cores (pre-0.13). +// Therefore, no SYNC call is needed here. +void IrcUser::setLastAwayMessage(int lastAwayMessage) { - if (lastAwayMessage > _lastAwayMessage) { - _lastAwayMessage = lastAwayMessage; - SYNC(ARG(lastAwayMessage)) +#if QT_VERSION >= 0x050800 + QDateTime lastAwayMessageTime = QDateTime::fromSecsSinceEpoch(lastAwayMessage); +#else + // toSecsSinceEpoch() was added in Qt 5.8. Manually downconvert to seconds for now. + // See https://doc.qt.io/qt-5/qdatetime.html#toMSecsSinceEpoch + QDateTime lastAwayMessageTime = QDateTime::fromMSecsSinceEpoch(lastAwayMessage * 1000); +#endif + lastAwayMessageTime.setTimeSpec(Qt::UTC); + setLastAwayMessageTime(lastAwayMessageTime); +} + + +void IrcUser::setLastAwayMessageTime(const QDateTime &lastAwayMessageTime) +{ + if (lastAwayMessageTime > _lastAwayMessageTime) { + _lastAwayMessageTime = lastAwayMessageTime; + SYNC(ARG(lastAwayMessageTime)) } }