/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef _IRCUSER_H_
-#define _IRCUSER_H_
+#ifndef IRCUSER_H
+#define IRCUSER_H
#include <QSet>
#include <QString>
#include <QDateTime>
#include "syncableobject.h"
+#include "types.h"
+
+#ifdef HAVE_QCA2
+#include "cipher.h"
+#endif
class SignalProxy;
class Network;
class IrcChannel;
class IrcUser : public SyncableObject {
+ SYNCABLE_OBJECT
Q_OBJECT
Q_PROPERTY(QString user READ user WRITE setUser STORED false)
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)
+ Q_PROPERTY(QString whoisServiceReply READ whoisServiceReply WRITE setWhoisServiceReply STORED false)
+ Q_PROPERTY(QString suserHost READ suserHost WRITE setSuserHost STORED false)
Q_PROPERTY(QStringList channels READ channels STORED false)
- // Q_PROPERTY(QStringList usermodes READ usermodes WRITE setUsermodes)
+ Q_PROPERTY(QString userModes READ userModes WRITE setUserModes)
public:
IrcUser(const QString &hostmask, Network *network);
virtual ~IrcUser();
- QString user() const;
- QString host() const;
- QString nick() const;
- QString realName() const;
+ inline QString user() const { return _user; }
+ inline QString host() const { return _host; }
+ inline QString nick() const { return _nick; }
+ inline QString realName() const { return _realName; }
QString hostmask() const;
- bool isAway() const;
- QString awayMessage() const;
- QDateTime idleTime() const;
- QString server() const;
- QString ircOperator() const;
- int lastAwayMessage() const;
- Network *network() const;
-
- QString userModes() const;
+ inline bool isAway() const { return _away; }
+ inline QString awayMessage() const { return _awayMessage; }
+ QDateTime idleTime();
+ inline QDateTime loginTime() const { return _loginTime; }
+ inline QString server() const { return _server; }
+ inline QString ircOperator() const { return _ircOperator; }
+ inline int lastAwayMessage() const { return _lastAwayMessage; }
+ inline QString whoisServiceReply() const { return _whoisServiceReply; }
+ inline QString suserHost() const { return _suserHost; }
+ inline Network *network() const { return _network; }
+
+ inline QString userModes() const { return _userModes; }
QStringList channels() const;
// user-specific encodings
- QTextCodec *codecForEncoding() const;
- QTextCodec *codecForDecoding() const;
+ inline QTextCodec *codecForEncoding() const { return _codecForEncoding; }
+ inline QTextCodec *codecForDecoding() const { return _codecForDecoding; }
void setCodecForEncoding(const QString &codecName);
void setCodecForEncoding(QTextCodec *codec);
void setCodecForDecoding(const QString &codecName);
QString decodeString(const QByteArray &text) const;
QByteArray encodeString(const QString &string) const;
+ // only valid on client side, these are not synced!
+ inline QDateTime lastChannelActivity(BufferId id) const { return _lastActivity.value(id); }
+ void setLastChannelActivity(BufferId id, const QDateTime &time);
+ inline QDateTime lastSpokenTo(BufferId id) const { return _lastSpokenTo.value(id); }
+ void setLastSpokenTo(BufferId id, const QDateTime &time);
+
+ #ifdef HAVE_QCA2
+ Cipher* cipher();
+ #endif
+
+ void setEncrypted(bool);
+
public slots:
void setUser(const QString &user);
void setHost(const QString &host);
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 setWhoisServiceReply(const QString &whoisServiceReply);
+ void setSuserHost(const QString &suserHost);
void updateHostmask(const QString &mask);
void setUserModes(const QString &modes);
void joinChannel(const QString &channelname);
void partChannel(IrcChannel *channel);
void partChannel(const QString &channelname);
+ void quit();
- void addUserMode(const QString &mode);
- void removeUserMode(const QString &mode);
-
- // init seters
- void initSetChannels(const QStringList channels);
-
+ void addUserModes(const QString &modes);
+ void removeUserModes(const QString &modes);
+
signals:
- void userSet(QString user);
- void hostSet(QString host);
- void nickSet(QString newnick);
- void realNameSet(QString realName);
- void awaySet(bool away);
- void awayMessageSet(QString awayMessage);
- void idleTimeSet(QDateTime idleTime);
- void serverSet(QString server);
- void ircOperatorSet(QString ircOperator);
- void lastAwayMessageSet(int lastAwayMessage);
- void hostmaskUpdated(QString mask);
+// void userSet(QString user);
+// void hostSet(QString host);
+ void nickSet(QString newnick); // needed in NetworkModel
+// void realNameSet(QString realName);
+ void awaySet(bool away); // needed in NetworkModel
+// void awayMessageSet(QString awayMessage);
+// void idleTimeSet(QDateTime idleTime);
+// void loginTimeSet(QDateTime loginTime);
+// void serverSet(QString server);
+// void ircOperatorSet(QString ircOperator);
+// void lastAwayMessageSet(int lastAwayMessage);
+// void whoisServiceReplySet(QString whoisServiceReply);
+// void suserHostSet(QString suserHost);
void userModesSet(QString modes);
+ void userModesAdded(QString modes);
+ void userModesRemoved(QString modes);
- void channelJoined(QString channel);
+ // void channelJoined(QString channel);
void channelParted(QString channel);
+ void quited();
- void userModeAdded(QString mode);
- void userModeRemoved(QString mode);
-
-// void setUsermodes(const QSet<QString> &usermodes);
-// QSet<QString> usermodes() const;
+ void lastChannelActivityUpdated(BufferId id, const QDateTime &newTime);
+ void lastSpokenToUpdated(BufferId id, const QDateTime &newTime);
private slots:
void updateObjectName();
bool _away;
QString _server;
QDateTime _idleTime;
+ QDateTime _idleTimeSet;
+ QDateTime _loginTime;
QString _ircOperator;
int _lastAwayMessage;
-
+ QString _whoisServiceReply;
+ QString _suserHost;
+
// QSet<QString> _channels;
QSet<IrcChannel *> _channels;
QString _userModes;
QTextCodec *_codecForEncoding;
QTextCodec *_codecForDecoding;
+
+ QHash<BufferId, QDateTime> _lastActivity;
+ QHash<BufferId, QDateTime> _lastSpokenTo;
+
+ #ifdef HAVE_QCA2
+ Cipher *_cipher;
+ #endif
};
#endif