BR #117:
[quassel.git] / src / common / ircuser.cpp
index 4c12580..e911d33 100644 (file)
@@ -37,7 +37,7 @@ IrcUser::IrcUser(const QString &hostmask, Network *network) : SyncableObject(net
     _awayMessage(),
     _away(false),
     _server(),
-    _idleTime(QDateTime::currentDateTime()),
+    // _idleTime(QDateTime::currentDateTime()),
     _ircOperator(),
     _lastAwayMessage(0),
     _network(network),
@@ -86,10 +86,16 @@ QString IrcUser::server() const {
   return _server;
 }
 
-QDateTime IrcUser::idleTime() const {
+QDateTime IrcUser::idleTime() {
+  if(QDateTime::currentDateTime().toTime_t() - _idleTimeSet.toTime_t() > 1200)
+    _idleTime = QDateTime();
   return _idleTime;
 }
 
+QDateTime IrcUser::loginTime() const {
+  return _loginTime;
+}
+
 QString IrcUser::ircOperator() const {
   return _ircOperator;
 }
@@ -185,10 +191,18 @@ void IrcUser::setAwayMessage(const QString &awayMessage) {
 void IrcUser::setIdleTime(const QDateTime &idleTime) {
   if(idleTime.isValid() && _idleTime != idleTime) {
     _idleTime = idleTime;
+    _idleTimeSet = QDateTime::currentDateTime();
     emit idleTimeSet(idleTime);
   }
 }
 
+void IrcUser::setLoginTime(const QDateTime &loginTime) {
+  if(loginTime.isValid() && _loginTime != loginTime) {
+    _loginTime = loginTime;
+    emit loginTimeSet(loginTime);
+  }
+}
+
 void IrcUser::setServer(const QString &server) {
   if(!server.isEmpty() && _server != server) {
     _server = server;
@@ -287,23 +301,24 @@ void IrcUser::setUserModes(const QString &modes) {
   emit userModesSet(modes);
 }
 
-void IrcUser::addUserMode(const QString &mode) {
-  if(!_userModes.contains(mode)) {
-    _userModes += mode;
-    emit userModeAdded(mode);
-  }
-}
+void IrcUser::addUserModes(const QString &modes) {
+  if(modes.isEmpty())
+    return;
 
-void IrcUser::removeUserMode(const QString &mode) {
-  if(_userModes.contains(mode)) {
-    _userModes.remove(mode);
-    emit userModeRemoved(mode);
+  for(int i = 0; i < modes.count(); i++) {
+    if(!_userModes.contains(modes[i]))
+      _userModes += modes[i];
   }
+
+  emit userModesAdded(modes);
 }
 
-void IrcUser::initSetChannels(const QStringList channels) {
-  foreach(QString channel, channels) {
-    joinChannel(channel);
+void IrcUser::removeUserModes(const QString &modes) {
+  if(modes.isEmpty())
+    return;
+
+  for(int i = 0; i < modes.count(); i++) {
+    _userModes.remove(modes[i]);
   }
+  emit userModesRemoved(modes);
 }
-