X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fnetworkconnection.h;h=649171dbf048219ca134b91a0efaae3a2c1aa539;hp=ace1e4ea25ebdfc4d2ecf80aaa1a2cf8e189bed6;hb=236e70030428e5b85309d6ddb97b772fa3efe61a;hpb=28f1a9d9d96645757691cdea19500aefce4bcdac diff --git a/src/core/networkconnection.h b/src/core/networkconnection.h index ace1e4ea..649171db 100644 --- a/src/core/networkconnection.h +++ b/src/core/networkconnection.h @@ -43,7 +43,7 @@ class NetworkConnection : public QObject { Q_OBJECT public: - NetworkConnection(Network *network, CoreSession *session, const QVariant &previousState = QVariant()); + NetworkConnection(Network *network, CoreSession *session); ~NetworkConnection(); NetworkId networkId() const; @@ -59,9 +59,6 @@ public: UserInputHandler *userInputHandler() const; CtcpHandler *ctcpHandler() const; - //! Return data necessary to restore the connection state upon core restart - QVariant state() const; - //! Decode a string using the server (network) decoding. QString serverDecode(const QByteArray &string) const; @@ -80,20 +77,29 @@ public: //! Encode a string using the user-specific encoding, if set, and use the standard encoding else. QByteArray userEncode(const QString &userNick, const QString &string) const; + inline QString channelKey(const QString &channel) const { return _channelKeys.value(channel.toLower(), QString()); } + inline QStringList persistentChannels() const { return _channelKeys.keys(); } + public slots: // void setServerOptions(); void connectToIrc(bool reconnecting = false); - void disconnectFromIrc(); + void disconnectFromIrc(bool requested = true); void userInput(BufferInfo bufferInfo, QString msg); void putRawLine(QByteArray input); void putCmd(const QString &cmd, const QVariantList ¶ms, const QByteArray &prefix = QByteArray()); + void setChannelJoined(const QString &channel); + void setChannelParted(const QString &channel); + void addChannelKey(const QString &channel, const QString &key); + void removeChannelKey(const QString &channel); private slots: void sendPerform(); void autoReconnectSettingsChanged(); void doAutoReconnect(); + void sendWho(); + void nickChanged(const QString &newNick, const QString &oldNick); // this signal is inteded to rename query buffers in the storage backend signals: // #void networkState(QString net, QVariantMap data); @@ -110,7 +116,9 @@ signals: void quitRequested(NetworkId networkId); //void queryRequested(QString network, QString nick); - + void nickChanged(const NetworkId &networkId, const QString &newNick, const QString &oldNick); // this signal is inteded to rename query buffers in the storage backend + void channelJoined(NetworkId, const QString &channel, const QString &key = QString()); + void channelParted(NetworkId, const QString &channel); private slots: void socketHasData(); @@ -127,16 +135,22 @@ private: Network *_network; CoreSession *_coreSession; + BufferInfo _statusBufferInfo; IrcServerHandler *_ircServerHandler; UserInputHandler *_userInputHandler; CtcpHandler *_ctcpHandler; - QVariant _previousState; + QHash _channelKeys; // stores persistent channels and their passwords, if any QTimer _autoReconnectTimer; int _autoReconnectCount; + QTimer _whoTimer; + + bool _previousConnectionAttemptFailed; + int _lastUsedServerlistIndex; + class ParseError : public Exception { public: ParseError(QString cmd, QString prefix, QStringList params);