X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fircuser.cpp;h=6c10cf4c998d3f02c3ec36447f7b05da26c7b973;hp=b9f359e1da8c00593b7de937b82923b0a749694b;hb=6a63070246d89aa2a2474e3a9a1035fa889ad77e;hpb=04315f46a16fc3627218377071e008b6b9744992 diff --git a/src/common/ircuser.cpp b/src/common/ircuser.cpp index b9f359e1..6c10cf4c 100644 --- a/src/common/ircuser.cpp +++ b/src/common/ircuser.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 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 * @@ -42,6 +42,7 @@ IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(net _ircOperator(), _lastAwayMessage(0), _whoisServiceReply(), + _encrypted(false), _network(network), _codecForEncoding(0), _codecForDecoding(0) @@ -67,8 +68,12 @@ QString IrcUser::hostmask() const QDateTime IrcUser::idleTime() { - if (QDateTime::currentDateTime().toTime_t() - _idleTimeSet.toTime_t() > 1200) + if ((QDateTime::currentDateTime().toMSecsSinceEpoch() - _idleTimeSet.toMSecsSinceEpoch()) + > 1200000) { + // 20 * 60 * 1000 = 1200000 + // 20 minutes have elapsed, clear the known idle time as it's likely inaccurate by now _idleTime = QDateTime(); + } return _idleTime; } @@ -86,7 +91,7 @@ QStringList IrcUser::channels() const void IrcUser::setCodecForEncoding(const QString &name) { - setCodecForEncoding(QTextCodec::codecForName(name.toAscii())); + setCodecForEncoding(QTextCodec::codecForName(name.toLatin1())); } @@ -98,7 +103,7 @@ void IrcUser::setCodecForEncoding(QTextCodec *codec) void IrcUser::setCodecForDecoding(const QString &name) { - setCodecForDecoding(QTextCodec::codecForName(name.toAscii())); + setCodecForDecoding(QTextCodec::codecForName(name.toLatin1())); } @@ -145,6 +150,15 @@ void IrcUser::setRealName(const QString &realName) } +void IrcUser::setAccount(const QString &account) +{ + if (_account != account) { + _account = account; + SYNC(ARG(account)) + } +} + + void IrcUser::setAway(const bool &away) { if (away != _away) { @@ -248,6 +262,14 @@ void IrcUser::setSuserHost(const QString &suserHost) } +void IrcUser::setEncrypted(bool encrypted) +{ + _encrypted = encrypted; + emit encryptedSet(encrypted); + SYNC(ARG(encrypted)) +} + + void IrcUser::updateObjectName() { renameObject(QString::number(network()->networkId().toInt()) + "/" + _nick); @@ -266,12 +288,13 @@ void IrcUser::updateHostmask(const QString &mask) } -void IrcUser::joinChannel(IrcChannel *channel) +void IrcUser::joinChannel(IrcChannel *channel, bool skip_channel_join) { Q_ASSERT(channel); if (!_channels.contains(channel)) { _channels.insert(channel); - channel->joinIrcUser(this); + if (!skip_channel_join) + channel->joinIrcUser(this); } } @@ -336,9 +359,11 @@ void IrcUser::channelDestroyed() void IrcUser::setUserModes(const QString &modes) { - _userModes = modes; - SYNC(ARG(modes)) - emit userModesSet(modes); + if (_userModes != modes) { + _userModes = modes; + SYNC(ARG(modes)) + emit userModesSet(modes); + } } @@ -347,13 +372,19 @@ void IrcUser::addUserModes(const QString &modes) if (modes.isEmpty()) return; + // Don't needlessly sync when no changes are made + bool changesMade = false; for (int i = 0; i < modes.count(); i++) { - if (!_userModes.contains(modes[i])) + if (!_userModes.contains(modes[i])) { _userModes += modes[i]; + changesMade = true; + } } - SYNC(ARG(modes)) - emit userModesAdded(modes); + if (changesMade) { + SYNC(ARG(modes)) + emit userModesAdded(modes); + } }