Committing my local state. Mostly still invisible part on the not yet enabled network...
[quassel.git] / src / common / network.h
index 6a58d84..255d3ec 100644 (file)
@@ -37,6 +37,9 @@ class SignalProxy;
 class IrcUser;
 class IrcChannel;
 
+// defined below!
+struct NetworkInfo;
+
 // TODO: ConnectionInfo to propagate and sync the current state of NetworkConnection, encodings etcpp
 
 class Network : public SyncableObject {
@@ -48,11 +51,11 @@ class Network : public SyncableObject {
   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 STORED false)
+  Q_PROPERTY(bool isConnected READ isConnected WRITE setConnected STORED false)
 
 public:
   Network(const NetworkId &networkid, QObject *parent = 0);
-  //virtual ~Network();
+  // ~Network();
 
   NetworkId networkId() const;
 
@@ -64,6 +67,8 @@ public:
 
   bool isChannelName(const QString &channelname) const;
 
+  bool isConnected() const;
+
   QString prefixToMode(const QString &prefix);
   QString prefixToMode(const QCharRef &prefix);
   QString modeToPrefix(const QString &mode);
@@ -77,6 +82,9 @@ public:
   QStringList channels() const;
   QList<QVariantMap> serverList() const;
 
+  NetworkInfo networkInfo() const;
+  void setNetworkInfo(const NetworkInfo &);
+
   QString prefixes();
   QString prefixModes();
 
@@ -92,8 +100,8 @@ public:
 
   IrcChannel *newIrcChannel(const QString &channelname);
   IrcChannel *newIrcChannel(const QByteArray &channelname);
-  IrcChannel *ircChannel(QString channelname);
-  IrcChannel *ircChannel(const QByteArray &channelname);
+  IrcChannel *ircChannel(QString channelname) const;
+  IrcChannel *ircChannel(const QByteArray &channelname) const;
   QList<IrcChannel *> ircChannels() const;
   quint32 ircChannelCount() const;
 
@@ -108,6 +116,7 @@ public:
 public slots:
   void setNetworkName(const QString &networkName);
   void setCurrentServer(const QString &currentServer);
+  void setConnected(bool isConnected);
   void setMyNick(const QString &mynick);
   void setIdentity(IdentityId);
 
@@ -152,6 +161,7 @@ private slots:
 signals:
   void networkNameSet(const QString &networkName);
   void currentServerSet(const QString &currentServer);
+  void connectedSet(bool isConnected);
   void myNickSet(const QString &mynick);
   void identitySet(IdentityId);
 
@@ -186,6 +196,7 @@ private:
   QString _myNick;
   QString _networkName;
   QString _currentServer;
+  bool _connected;
 
   QString _prefixes;
   QString _prefixModes;
@@ -196,8 +207,7 @@ private:
 
   QList<QVariantMap> _serverList;
   //QVariantMap networkSettings;
-  //QVariantMap identity;
-  
+
   QPointer<SignalProxy> _proxy;
   void determinePrefixes();
 
@@ -206,4 +216,16 @@ private:
 
 };
 
+//! Stores all editable information about a network (as opposed to runtime state).
+struct NetworkInfo {
+  NetworkId networkId;
+  IdentityId identity;
+  QString networkName;
+  QByteArray codecForEncoding;
+  QByteArray codecForDecoding;
+  QList<QVariantMap> serverList;
+
+};
+
+
 #endif