Networks can now be removed even when they're connected.
[quassel.git] / src / common / network.h
index 4c04ceb..b9a2236 100644 (file)
@@ -53,7 +53,8 @@ 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)
+  //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 };
@@ -72,7 +73,8 @@ public:
   bool isChannelName(const QString &channelname) const;
 
   bool isConnected() const;
-  Network::ConnectionState connectionState() const;
+  //Network::ConnectionState connectionState() const;
+  int connectionState() const;
 
   QString prefixToMode(const QString &prefix);
   QString prefixToMode(const QCharRef &prefix);
@@ -122,7 +124,8 @@ public slots:
   void setNetworkName(const QString &networkName);
   void setCurrentServer(const QString &currentServer);
   void setConnected(bool isConnected);
-  void setConnectionState(Network::ConnectionState state);
+  //void setConnectionState(Network::ConnectionState state);
+  void setConnectionState(int state);
   void setMyNick(const QString &mynick);
   void setIdentity(IdentityId);
 
@@ -135,7 +138,8 @@ public slots:
   void removeSupport(const QString &param);
 
   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;
@@ -161,17 +165,20 @@ public slots:
   void emitConnectionError(const QString &);
 
 private slots:
-  void ircUserDestroyed();
   void channelDestroyed();
   void removeIrcUser(IrcUser *ircuser);
+  void removeIrcChannel(IrcChannel *ircChannel);
+  void removeChansAndUsers();
   void ircUserInitDone();
   void ircChannelInitDone();
 
 signals:
+  void aboutToBeDestroyed();
   void networkNameSet(const QString &networkName);
   void currentServerSet(const QString &currentServer);
   void connectedSet(bool isConnected);
   void connectionStateSet(Network::ConnectionState);
+  void connectionStateSet(int);
   void connectionError(const QString &errorMsg);
   void myNickSet(const QString &mynick);
   void identitySet(IdentityId);
@@ -190,6 +197,7 @@ signals:
   void ircChannelAdded(IrcChannel *);
 
   void ircUserRemoved(const QString &nick);
+  void ircChannelRemoved(const QString &channel);
 
   // needed for client sync progress
   void ircUserRemoved(QObject *);
@@ -235,9 +243,25 @@ struct NetworkInfo {
   NetworkId networkId;
   QString networkName;
   IdentityId identity;
+
+  bool useCustomEncodings;
   QByteArray codecForEncoding;
   QByteArray codecForDecoding;
+
+  // 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;