}
toolTip.append(tr("idling since %1").arg(idleString));
}
+ if(_ircUser->loginTime().isValid()) {
+ toolTip.append(tr("login time: %1").arg(_ircUser->loginTime().toString()));
+ }
if(!_ircUser->server().isEmpty()) toolTip.append(tr("server: %1").arg(_ircUser->server()));
_awayMessage(),
_away(false),
_server(),
- _idleTime(QDateTime::currentDateTime()),
+ // _idleTime(QDateTime::currentDateTime()),
_ircOperator(),
_lastAwayMessage(0),
_network(network),
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;
}
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;
Q_PROPERTY(bool away READ isAway WRITE setAway STORED false)
Q_PROPERTY(QString awayMessage READ awayMessage WRITE setAwayMessage STORED false)
Q_PROPERTY(QDateTime idleTime READ idleTime WRITE setIdleTime STORED false)
+ Q_PROPERTY(QDateTime loginTime READ loginTime WRITE setLoginTime STORED false)
Q_PROPERTY(QString server READ server WRITE setServer STORED false)
Q_PROPERTY(QString ircOperator READ ircOperator WRITE setIrcOperator STORED false)
Q_PROPERTY(int lastAwayMessage READ lastAwayMessage WRITE setLastAwayMessage STORED false)
QString hostmask() const;
bool isAway() const;
QString awayMessage() const;
- QDateTime idleTime() const;
+ QDateTime idleTime();
+ QDateTime loginTime() const;
QString server() const;
QString ircOperator() const;
int lastAwayMessage() const;
void setAway(const bool &away);
void setAwayMessage(const QString &awayMessage);
void setIdleTime(const QDateTime &idleTime);
+ void setLoginTime(const QDateTime &loginTime);
void setServer(const QString &server);
void setIrcOperator(const QString &ircOperator);
void setLastAwayMessage(const int &lastAwayMessage);
void awaySet(bool away);
void awayMessageSet(QString awayMessage);
void idleTimeSet(QDateTime idleTime);
+ void loginTimeSet(QDateTime loginTime);
void serverSet(QString server);
void ircOperatorSet(QString ircOperator);
void lastAwayMessageSet(int lastAwayMessage);
bool _away;
QString _server;
QDateTime _idleTime;
+ QDateTime _idleTimeSet;
+ QDateTime _loginTime;
QString _ircOperator;
int _lastAwayMessage;
int idleSecs = serverDecode(params[1]).toInt();
idleSecs *= -1;
ircuser->setIdleTime(now.addSecs(idleSecs));
- emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2 seconds").arg(ircuser->nick()).arg(ircuser->idleTime().secsTo(now)));
+ if(params.size()>3) {
+ int loginTime = serverDecode(params[2]).toInt();
+ ircuser->setLoginTime(QDateTime::fromTime_t(loginTime));
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is logged in since %2 seconds").arg(ircuser->nick()).arg(ircuser->loginTime().toString()));
+ }
+ emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] %1 is idling for %2").arg(ircuser->nick()).arg(ircuser->idleTime().secsTo(now)));
+
} else {
emit displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("[Whois] idle message: %1").arg(userDecode(nick, params).join(" ")));
}