+/*****************************************
+ * Network Items
+ *****************************************/
+class NetworkItem : public PropertyMapItem
+{
+ Q_OBJECT
+ Q_PROPERTY(QString networkName READ networkName)
+ Q_PROPERTY(QString currentServer READ currentServer)
+ Q_PROPERTY(int nickCount READ nickCount)
+
+public :
+ NetworkItem(const NetworkId &netid, AbstractTreeItem *parent = nullptr);
+
+ QStringList propertyOrder() const override;
+
+ QVariant data(int column, int row) const override;
+
+ /**
+ * Escapes a string as HTML, ready for Qt markup.
+ *
+ * Implementation depends on Qt version - Qt4 uses Qt::escape, while Qt5 uses .toHtmlEscaped().
+ *
+ * @param[in] string QString to escape
+ * @param[in] useNonbreakingSpaces
+ * @parblock
+ * If true, replace spaces with non-breaking spaces (i.e. ' '), otherwise only HTML escape.
+ * @endparblock
+ */
+ static QString escapeHTML(const QString &string, bool useNonbreakingSpaces = false);
+
+ inline bool isActive() const { return (bool)_network ? _network->isConnected() : false; }
+
+ inline const NetworkId &networkId() const { return _networkId; }
+ inline QString networkName() const { return (bool)_network ? _network->networkName() : QString(); }
+ inline QString currentServer() const { return (bool)_network ? _network->currentServer() : QString(); }
+ inline int nickCount() const { return (bool)_network ? _network->ircUsers().count() : 0; }
+
+ QString toolTip(int column) const override;
+
+ BufferItem *findBufferItem(BufferId bufferId);
+ inline BufferItem *findBufferItem(const BufferInfo &bufferInfo) { return findBufferItem(bufferInfo.bufferId()); }
+ BufferItem *bufferItem(const BufferInfo &bufferInfo);
+ inline StatusBufferItem *statusBufferItem() const { return _statusBufferItem; }
+
+public slots:
+ void setNetworkName(const QString &networkName);
+ void setCurrentServer(const QString &serverName);
+
+ void attachNetwork(Network *network);
+ void attachIrcChannel(IrcChannel *channel);
+ void attachIrcUser(IrcUser *ircUser);
+
+signals:
+ void networkDataChanged(int column = -1);
+
+private slots:
+ void onBeginRemoveChilds(int start, int end);
+ void onNetworkDestroyed();
+
+private:
+ NetworkId _networkId;
+ StatusBufferItem *_statusBufferItem;
+
+ QPointer<Network> _network;
+};