class Network : public SyncableObject {
Q_OBJECT
+ Q_ENUMS(ConnectionState Network::ConnectionState)
Q_PROPERTY(QString networkName READ networkName WRITE setNetworkName STORED false)
Q_PROPERTY(QString currentServer READ currentServer WRITE setCurrentServer STORED false)
Q_PROPERTY(QByteArray codecForDecoding READ codecForDecoding WRITE setCodecForDecoding STORED false)
Q_PROPERTY(IdentityId identityId READ identity WRITE setIdentity STORED false)
Q_PROPERTY(bool isConnected READ isConnected WRITE setConnected STORED false)
+ //Q_PROPERTY(Network::ConnectionState connectionState READ connectionState WRITE setConnectionState STORED false)
+ Q_PROPERTY(int connectionState READ connectionState WRITE setConnectionState STORED false)
public:
+ enum ConnectionState { Disconnected, Connecting, Initializing, Initialized, Disconnecting };
+
Network(const NetworkId &networkid, QObject *parent = 0);
- // ~Network();
+ ~Network();
NetworkId networkId() const;
bool isChannelName(const QString &channelname) const;
bool isConnected() const;
+ //Network::ConnectionState connectionState() const;
+ int connectionState() const;
QString prefixToMode(const QString &prefix);
QString prefixToMode(const QCharRef &prefix);
IdentityId identity() const;
QStringList nicks() const;
QStringList channels() const;
- QList<QVariantMap> serverList() const;
+ QVariantList serverList() const;
NetworkInfo networkInfo() const;
void setNetworkInfo(const NetworkInfo &);
void setNetworkName(const QString &networkName);
void setCurrentServer(const QString ¤tServer);
void setConnected(bool isConnected);
+ //void setConnectionState(Network::ConnectionState state);
+ void setConnectionState(int state);
void setMyNick(const QString &mynick);
void setIdentity(IdentityId);
- void setServerList(const QList<QVariantMap> &serverList);
+ void setServerList(const QVariantList &serverList);
void setCodecForEncoding(const QByteArray &codecName);
void setCodecForDecoding(const QByteArray &codecName);
void removeSupport(const QString ¶m);
inline void addIrcUser(const QString &hostmask) { newIrcUser(hostmask); }
- void removeIrcUser(QString nick);
+ void removeIrcUser(const QString &nick);
+ void removeIrcChannel(const QString &channel);
//init geters
QVariantMap initSupports() const;
// channel lists up to date
void ircUserNickChanged(QString newnick);
- void requestConnect();
+ void requestConnect() const;
+ void requestDisconnect() const;
+
+ void emitConnectionError(const QString &);
private slots:
- void ircUserDestroyed();
void channelDestroyed();
void removeIrcUser(IrcUser *ircuser);
+ void removeIrcChannel(IrcChannel *ircChannel);
+ void removeChansAndUsers();
void ircUserInitDone();
void ircChannelInitDone();
void networkNameSet(const QString &networkName);
void currentServerSet(const QString ¤tServer);
void connectedSet(bool isConnected);
+ void connectionStateSet(Network::ConnectionState);
+ void connectionStateSet(int);
+ void connectionError(const QString &errorMsg);
void myNickSet(const QString &mynick);
void identitySet(IdentityId);
- void serverListSet(const QList<QVariantMap> &serverList);
+ void serverListSet(QVariantList serverList);
void codecForEncodingSet(const QString &codecName);
void codecForDecodingSet(const QString &codecName);
void ircChannelAdded(IrcChannel *);
void ircUserRemoved(const QString &nick);
+ void ircChannelRemoved(const QString &channel);
// needed for client sync progress
void ircUserRemoved(QObject *);
void ircUserInitDone(IrcUser *);
void ircChannelInitDone(IrcChannel *);
- void connectRequested(NetworkId = 0);
+ void connectRequested(NetworkId id = 0) const;
+ void disconnectRequested(NetworkId id = 0) const;
private:
NetworkId _networkId;
QString _networkName;
QString _currentServer;
bool _connected;
+ ConnectionState _connectionState;
QString _prefixes;
QString _prefixModes;
QHash<QString, IrcChannel *> _ircChannels; // stores all known channels
QHash<QString, QString> _supports; // stores results from RPL_ISUPPORT
- QList<QVariantMap> _serverList;
+ QVariantList _serverList;
+ QStringList _perform;
//QVariantMap networkSettings;
QPointer<SignalProxy> _proxy;
//! Stores all editable information about a network (as opposed to runtime state).
struct NetworkInfo {
NetworkId networkId;
- IdentityId identity;
QString networkName;
+ IdentityId identity;
+
+ bool useCustomEncodings;
QByteArray codecForEncoding;
QByteArray codecForDecoding;
- QList<QVariantMap> serverList;
+ // Server entry: QString "Host", uint "Port", QString "Password", bool "UseSSL"
+ QVariantList serverList;
+ bool useRandomServer;
+
+ QStringList perform;
+
+ bool useAutoIdentify;
+ QString autoIdentifyService;
+ QString autoIdentifyPassword;
+
+ bool useAutoReconnect;
+ quint32 autoReconnectInterval;
+ qint16 autoReconnectRetries; // -1 => Unlimited
+ bool rejoinChannels;
+
+ bool operator==(const NetworkInfo &other) const;
+ bool operator!=(const NetworkInfo &other) const;
};
+QDataStream &operator<<(QDataStream &out, const NetworkInfo &info);
+QDataStream &operator>>(QDataStream &in, NetworkInfo &info);
+
+Q_DECLARE_METATYPE(NetworkInfo);
#endif