Fixed those nasty "Client::updateLastSeen(): Unknown buffer $bufferId" messages.
[quassel.git] / src / common / ircuser.cpp
index f7fc9b0..c3c2d0c 100644 (file)
 #include <QTextCodec>
 #include <QDebug>
 
-IrcUser::IrcUser(const QString &hostmask, Network *network)
-  : SyncableObject(network),
+IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(network),
     _initialized(false),
     _nick(nickFromMask(hostmask)),
     _user(userFromMask(hostmask)),
     _host(hostFromMask(hostmask)),
+    _realName(),
+    _awayMessage(),
+    _away(false),
+    _server(),
+    _idleTime(QDateTime::currentDateTime()),
+    _ircOperator(),
+    _lastAwayMessage(0),
     _network(network),
     _codecForEncoding(0),
     _codecForDecoding(0)
 {
   updateObjectName();
-  _away = false;
 }
 
 IrcUser::~IrcUser() {
-  //qDebug() << nick() << "destroyed.";
 }
 
 // ====================
@@ -78,6 +82,22 @@ QString IrcUser::awayMessage() const {
   return _awayMessage;
 }
 
+QString IrcUser::server() const {
+  return _server;
+}
+
+QDateTime IrcUser::idleTime() const {
+  return _idleTime;
+}
+
+QString IrcUser::ircOperator() const {
+  return _ircOperator;
+}
+
+int IrcUser::lastAwayMessage() const {
+  return _lastAwayMessage;
+}
+
 QString IrcUser::userModes() const {
   return _userModes;
 }
@@ -124,7 +144,7 @@ QString IrcUser::decodeString(const QByteArray &text) const {
   return ::decodeString(text, codecForDecoding());
 }
 
-QByteArray IrcUser::encodeString(const QString string) const {
+QByteArray IrcUser::encodeString(const QString &string) const {
   if(codecForEncoding()) {
     return codecForEncoding()->fromUnicode(string);
   }
@@ -162,6 +182,33 @@ void IrcUser::setAwayMessage(const QString &awayMessage) {
   }
 }
 
+void IrcUser::setIdleTime(const QDateTime &idleTime) {
+  if(idleTime.isValid() && _idleTime != idleTime) {
+    _idleTime = idleTime;
+    emit idleTimeSet(idleTime);
+  }
+}
+
+void IrcUser::setServer(const QString &server) {
+  if(!server.isEmpty() && _server != server) {
+    _server = server;
+    emit serverSet(server);
+  }
+}
+
+void IrcUser::setIrcOperator(const QString &ircOperator) {
+  if(!ircOperator.isEmpty() && _ircOperator != ircOperator) {
+    _ircOperator = ircOperator;
+    emit ircOperatorSet(ircOperator);
+  }
+}
+
+void IrcUser::setLastAwayMessage(const int &lastAwayMessage) {
+  if(lastAwayMessage > _lastAwayMessage) {
+    _lastAwayMessage = lastAwayMessage;
+    emit lastAwayMessageSet(lastAwayMessage);
+  }
+}
 
 void IrcUser::setHost(const QString &host) {
   if(!host.isEmpty() && _host != host) {
@@ -232,10 +279,8 @@ void IrcUser::partChannel(const QString &channelname) {
 void IrcUser::channelDestroyed() {
   // private slot!
   IrcChannel *channel = static_cast<IrcChannel*>(sender());
-  Q_ASSERT(channel);
   if(_channels.contains(channel)) {
     _channels.remove(channel);
-    disconnect(channel, 0, this, 0);
   }
 }