X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.h;h=4c04ceb064d813c28b9d477cafead530072c51e9;hp=84b9b4bf72cc55dd92c976724650a9cc186a534d;hb=6623fd2d46dadd0168e4e28d1db6944c26c2a773;hpb=c7fd86ed385a38210b9dc7356a7e2ac40efe5951 diff --git a/src/common/network.h b/src/common/network.h index 84b9b4bf..4c04ceb0 100644 --- a/src/common/network.h +++ b/src/common/network.h @@ -44,6 +44,7 @@ struct NetworkInfo; 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) @@ -52,10 +53,13 @@ class Network : public SyncableObject { 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) public: + enum ConnectionState { Disconnected, Connecting, Initializing, Initialized, Disconnecting }; + Network(const NetworkId &networkid, QObject *parent = 0); - // ~Network(); + ~Network(); NetworkId networkId() const; @@ -68,6 +72,7 @@ public: bool isChannelName(const QString &channelname) const; bool isConnected() const; + Network::ConnectionState connectionState() const; QString prefixToMode(const QString &prefix); QString prefixToMode(const QCharRef &prefix); @@ -80,7 +85,7 @@ public: IdentityId identity() const; QStringList nicks() const; QStringList channels() const; - QList serverList() const; + QVariantList serverList() const; NetworkInfo networkInfo() const; void setNetworkInfo(const NetworkInfo &); @@ -117,10 +122,11 @@ public slots: void setNetworkName(const QString &networkName); void setCurrentServer(const QString ¤tServer); void setConnected(bool isConnected); + void setConnectionState(Network::ConnectionState state); void setMyNick(const QString &mynick); void setIdentity(IdentityId); - void setServerList(const QList &serverList); + void setServerList(const QVariantList &serverList); void setCodecForEncoding(const QByteArray &codecName); void setCodecForDecoding(const QByteArray &codecName); @@ -149,8 +155,10 @@ public slots: // channel lists up to date void ircUserNickChanged(QString newnick); - void requestConnect(); - void requestDisconnect(); + void requestConnect() const; + void requestDisconnect() const; + + void emitConnectionError(const QString &); private slots: void ircUserDestroyed(); @@ -163,10 +171,12 @@ signals: void networkNameSet(const QString &networkName); void currentServerSet(const QString ¤tServer); void connectedSet(bool isConnected); + void connectionStateSet(Network::ConnectionState); + void connectionError(const QString &errorMsg); void myNickSet(const QString &mynick); void identitySet(IdentityId); - void serverListSet(const QList &serverList); + void serverListSet(QVariantList serverList); void codecForEncodingSet(const QString &codecName); void codecForDecodingSet(const QString &codecName); @@ -188,8 +198,8 @@ signals: void ircUserInitDone(IrcUser *); void ircChannelInitDone(IrcChannel *); - void connectRequested(NetworkId = 0); - void disconnectRequested(NetworkId = 0); + void connectRequested(NetworkId id = 0) const; + void disconnectRequested(NetworkId id = 0) const; private: NetworkId _networkId; @@ -199,6 +209,7 @@ private: QString _networkName; QString _currentServer; bool _connected; + ConnectionState _connectionState; QString _prefixes; QString _prefixModes; @@ -207,7 +218,7 @@ private: QHash _ircChannels; // stores all known channels QHash _supports; // stores results from RPL_ISUPPORT - QList _serverList; + QVariantList _serverList; QStringList _perform; //QVariantMap networkSettings; @@ -222,15 +233,19 @@ private: //! Stores all editable information about a network (as opposed to runtime state). struct NetworkInfo { NetworkId networkId; - IdentityId identity; QString networkName; + IdentityId identity; QByteArray codecForEncoding; QByteArray codecForDecoding; - QList serverList; + QVariantList serverList; 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