/***************************************************************************
- * Copyright (C) 2005-07 by the Quassel IRC Team *
+ * Copyright (C) 2005-08 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QStringList>
#include <QVariantMap>
+#include "syncableobject.h"
+
class SignalProxy;
-class NetworkInfo;
+class Network;
class IrcChannel;
-class IrcUser : public QObject {
+class IrcUser : public SyncableObject {
Q_OBJECT
Q_PROPERTY(QString user READ user WRITE setUser STORED false)
Q_PROPERTY(QStringList channels READ channels STORED false)
// Q_PROPERTY(QStringList usermodes READ usermodes WRITE setUsermodes)
-
public:
- IrcUser(const QString &hostmask, NetworkInfo *networkInfo);
+ IrcUser(const QString &hostmask, Network *network);
virtual ~IrcUser();
bool initialized() const;
QString host() const;
QString nick() const;
QString hostmask() const;
+ Network *network() const;
QString userModes() const;
QStringList channels() const;
+ // user-specific encodings
+ QTextCodec *codecForEncoding() const;
+ QTextCodec *codecForDecoding() const;
+ void setCodecForEncoding(const QString &codecName);
+ void setCodecForEncoding(QTextCodec *codec);
+ void setCodecForDecoding(const QString &codecName);
+ void setCodecForDecoding(QTextCodec *codec);
+
+ QString decodeString(const QByteArray &text) const;
+ QByteArray encodeString(const QString string) const;
+
public slots:
void setUser(const QString &user);
void setHost(const QString &host);
void updateHostmask(const QString &mask);
void setUserModes(const QString &modes);
-
+
void joinChannel(IrcChannel *channel);
void joinChannel(const QString &channelname);
void partChannel(IrcChannel *channel);
void hostSet(QString host);
void nickSet(QString newnick);
void hostmaskUpdated(QString mask);
-
+
void userModesSet(QString modes);
-
+
void channelJoined(QString channel);
void channelParted(QString channel);
void userModeRemoved(QString mode);
void renameObject(QString oldname, QString newname);
-
+
// void setUsermodes(const QSet<QString> &usermodes);
// QSet<QString> usermodes() const;
private slots:
void updateObjectName();
void channelDestroyed();
-
+
private:
inline bool operator==(const IrcUser &ircuser2) {
return (_nick.toLower() == ircuser2.nick().toLower());
// QSet<QString> _channels;
QSet<IrcChannel *> _channels;
QString _userModes;
-
- NetworkInfo *networkInfo;
+
+ Network *_network;
+
+ QTextCodec *_codecForEncoding;
+ QTextCodec *_codecForDecoding;
};
#endif