X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.h;h=c67fea89a6e15df89d7e6fdffb68266ad8550d67;hp=b9a22363e79bd766ada68155bee3c7cee847bd28;hb=da3aa4136fe01e142238f0f42fe1273481037b9d;hpb=5b083e1f67c77ceb7d1d134e976cd6081b70bf12 diff --git a/src/common/network.h b/src/common/network.h index b9a22363..c67fea89 100644 --- a/src/common/network.h +++ b/src/common/network.h @@ -49,15 +49,26 @@ class Network : public SyncableObject { Q_PROPERTY(QString networkName READ networkName WRITE setNetworkName STORED false) Q_PROPERTY(QString currentServer READ currentServer WRITE setCurrentServer STORED false) Q_PROPERTY(QString myNick READ myNick WRITE setMyNick STORED false) + Q_PROPERTY(QByteArray codecForServer READ codecForServer WRITE setCodecForServer STORED false) Q_PROPERTY(QByteArray codecForEncoding READ codecForEncoding WRITE setCodecForEncoding 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) + Q_PROPERTY(bool useRandomServer READ useRandomServer WRITE setUseRandomServer STORED false) + Q_PROPERTY(QStringList perform READ perform WRITE setPerform STORED false) + Q_PROPERTY(bool useAutoIdentify READ useAutoIdentify WRITE setUseAutoIdentify STORED false) + Q_PROPERTY(QString autoIdentifyService READ autoIdentifyService WRITE setAutoIdentifyService STORED false) + Q_PROPERTY(QString autoIdentifyPassword READ autoIdentifyPassword WRITE setAutoIdentifyPassword STORED false) + Q_PROPERTY(bool useAutoReconnect READ useAutoReconnect WRITE setUseAutoReconnect STORED false) + Q_PROPERTY(quint32 autoReconnectInterval READ autoReconnectInterval WRITE setAutoReconnectInterval STORED false) + Q_PROPERTY(quint16 autoReconnectRetries READ autoReconnectRetries WRITE setAutoReconnectRetries STORED false) + Q_PROPERTY(bool unlimitedReconnectRetries READ unlimitedReconnectRetries WRITE setUnlimitedReconnectRetries STORED false) + Q_PROPERTY(bool rejoinChannels READ rejoinChannels WRITE setRejoinChannels STORED false) public: - enum ConnectionState { Disconnected, Connecting, Initializing, Initialized, Disconnecting }; + enum ConnectionState { Disconnected, Connecting, Initializing, Initialized, Reconnecting, Disconnecting }; Network(const NetworkId &networkid, QObject *parent = 0); ~Network(); @@ -88,6 +99,16 @@ public: QStringList nicks() const; QStringList channels() const; QVariantList serverList() const; + bool useRandomServer() const; + QStringList perform() const; + bool useAutoIdentify() const; + QString autoIdentifyService() const; + QString autoIdentifyPassword() const; + bool useAutoReconnect() const; + quint32 autoReconnectInterval() const; + quint16 autoReconnectRetries() const; + bool unlimitedReconnectRetries() const; + bool rejoinChannels() const; NetworkInfo networkInfo() const; void setNetworkInfo(const NetworkInfo &); @@ -112,13 +133,26 @@ public: QList ircChannels() const; quint32 ircChannelCount() const; + inline QHash persistentChannels() const { return _persistentChannels; } + + QByteArray codecForServer() const; QByteArray codecForEncoding() const; QByteArray codecForDecoding() const; + void setCodecForServer(QTextCodec *codec); void setCodecForEncoding(QTextCodec *codec); void setCodecForDecoding(QTextCodec *codec); QString decodeString(const QByteArray &text) const; - QByteArray encodeString(const QString string) const; + QByteArray encodeString(const QString &string) const; + QString decodeServerString(const QByteArray &text) const; + QByteArray encodeServerString(const QString &string) const; + + static QByteArray defaultCodecForServer(); + static QByteArray defaultCodecForEncoding(); + static QByteArray defaultCodecForDecoding(); + static void setDefaultCodecForServer(const QByteArray &name); + static void setDefaultCodecForEncoding(const QByteArray &name); + static void setDefaultCodecForDecoding(const QByteArray &name); public slots: void setNetworkName(const QString &networkName); @@ -130,7 +164,18 @@ public slots: void setIdentity(IdentityId); void setServerList(const QVariantList &serverList); - + void setUseRandomServer(bool); + void setPerform(const QStringList &); + void setUseAutoIdentify(bool); + void setAutoIdentifyService(const QString &); + void setAutoIdentifyPassword(const QString &); + void setUseAutoReconnect(bool); + void setAutoReconnectInterval(quint32); + void setAutoReconnectRetries(quint16); + void setUnlimitedReconnectRetries(bool); + void setRejoinChannels(bool); + + void setCodecForServer(const QByteArray &codecName); void setCodecForEncoding(const QByteArray &codecName); void setCodecForDecoding(const QByteArray &codecName); @@ -140,18 +185,24 @@ public slots: inline void addIrcUser(const QString &hostmask) { newIrcUser(hostmask); } void removeIrcUser(const QString &nick); void removeIrcChannel(const QString &channel); - + + void addPersistentChannel(const QString &channel, const QString &key = QString()); + void removePersistentChannel(const QString &channel); + void setPersistentChannelKey(const QString &channel, const QString &key); + //init geters QVariantMap initSupports() const; QVariantList initServerList() const; QStringList initIrcUsers() const; QStringList initIrcChannels() const; + QStringList initPersistentChannels() const; //init seters void initSetSupports(const QVariantMap &supports); void initSetServerList(const QVariantList &serverList); void initSetIrcUsers(const QStringList &hostmasks); - void initSetChannels(const QStringList &channels); + void initSetIrcChannels(const QStringList &channels); + void initSetPersistentChannels(const QStringList &channels); IrcUser *updateNickFromMask(const QString &mask); @@ -184,9 +235,20 @@ signals: void identitySet(IdentityId); void serverListSet(QVariantList serverList); - - void codecForEncodingSet(const QString &codecName); - void codecForDecodingSet(const QString &codecName); + void useRandomServerSet(bool); + void performSet(const QStringList &); + void useAutoIdentifySet(bool); + void autoIdentifyServiceSet(const QString &); + void autoIdentifyPasswordSet(const QString &); + void useAutoReconnectSet(bool); + void autoReconnectIntervalSet(quint32); + void autoReconnectRetriesSet(quint16); + void unlimitedReconnectRetriesSet(bool); + void rejoinChannelsSet(bool); + + void codecForServerSet(const QByteArray &codecName); + void codecForEncodingSet(const QByteArray &codecName); + void codecForDecodingSet(const QByteArray &codecName); void supportAdded(const QString ¶m, const QString &value); void supportRemoved(const QString ¶m); @@ -199,6 +261,10 @@ signals: void ircUserRemoved(const QString &nick); void ircChannelRemoved(const QString &channel); + void persistentChannelAdded(const QString &channel, const QString &key); + void persistentChannelRemoved(const QString &channel); + void persistentChannelKeySet(const QString &channel, const QString &key); + // needed for client sync progress void ircUserRemoved(QObject *); void ircChannelRemoved(QObject *); @@ -210,6 +276,8 @@ signals: void disconnectRequested(NetworkId id = 0) const; private: + QPointer _proxy; + NetworkId _networkId; IdentityId _identity; @@ -225,17 +293,31 @@ private: QHash _ircUsers; // stores all known nicks for the server QHash _ircChannels; // stores all known channels QHash _supports; // stores results from RPL_ISUPPORT + QHash _persistentChannels; // stores persistent channels and their passwords, if any QVariantList _serverList; + bool _useRandomServer; QStringList _perform; - //QVariantMap networkSettings; - QPointer _proxy; + bool _useAutoIdentify; + QString _autoIdentifyService; + QString _autoIdentifyPassword; + + bool _useAutoReconnect; + quint32 _autoReconnectInterval; + quint16 _autoReconnectRetries; + bool _unlimitedReconnectRetries; + bool _rejoinChannels; + void determinePrefixes(); + QTextCodec *_codecForServer; QTextCodec *_codecForEncoding; QTextCodec *_codecForDecoding; + static QTextCodec *_defaultCodecForServer; + static QTextCodec *_defaultCodecForEncoding; + static QTextCodec *_defaultCodecForDecoding; }; //! Stores all editable information about a network (as opposed to runtime state). @@ -244,7 +326,8 @@ struct NetworkInfo { QString networkName; IdentityId identity; - bool useCustomEncodings; + bool useCustomEncodings; // not used! + QByteArray codecForServer; QByteArray codecForEncoding; QByteArray codecForDecoding; @@ -260,7 +343,8 @@ struct NetworkInfo { bool useAutoReconnect; quint32 autoReconnectInterval; - qint16 autoReconnectRetries; // -1 => Unlimited + quint16 autoReconnectRetries; + bool unlimitedReconnectRetries; bool rejoinChannels; bool operator==(const NetworkInfo &other) const; @@ -269,6 +353,7 @@ struct NetworkInfo { QDataStream &operator<<(QDataStream &out, const NetworkInfo &info); QDataStream &operator>>(QDataStream &in, NetworkInfo &info); +QDebug operator<<(QDebug dbg, const NetworkInfo &i); Q_DECLARE_METATYPE(NetworkInfo);