+QString NetworkItem::networkName() const {
+ if(_networkInfo)
+ return _networkInfo->networkName();
+ else
+ return _networkName;
+}
+
+QString NetworkItem::currentServer() const {
+ if(_networkInfo)
+ return _networkInfo->currentServer();
+ else
+ return QString();
+}
+
+int NetworkItem::nickCount() const {
+ BufferItem *bufferItem;
+ int count = 0;
+ for(int i = 0; i < childCount(); i++) {
+ bufferItem = qobject_cast<BufferItem *>(child(i));
+ if(!bufferItem)
+ continue;
+ count += bufferItem->nickCount();
+ }
+ return count;
+}
+
+void NetworkItem::attachNetworkInfo(NetworkInfo *networkInfo) {
+ if(!networkInfo)
+ return;
+
+ _networkInfo = networkInfo;
+
+ connect(networkInfo, SIGNAL(networkNameSet(QString)),
+ this, SLOT(setNetworkName(QString)));
+ connect(networkInfo, SIGNAL(currentServerSet(QString)),
+ this, SLOT(setCurrentServer(QString)));
+ connect(networkInfo, SIGNAL(ircChannelAdded(QString)),
+ this, SLOT(attachIrcChannel(QString)));
+ // FIXME: connect this and that...
+}
+
+void NetworkItem::attachIrcChannel(const QString &channelName) {
+ IrcChannel *ircChannel = _networkInfo->ircChannel(channelName);
+ if(!ircChannel) {
+ qWarning() << "NetworkItem::attachIrcChannel(): unkown Channel" << channelName;
+ return;
+ }
+
+ BufferItem *bufferItem;
+ for(int i = 0; i < childCount(); i++) {
+ bufferItem = qobject_cast<BufferItem *>(child(i));
+ if(bufferItem->bufferName() == ircChannel->name()) {
+ bufferItem->attachIrcChannel(ircChannel);
+ break;
+ }
+ }
+}
+
+void NetworkItem::setNetworkName(const QString &networkName) {
+ Q_UNUSED(networkName);
+ emit dataChanged(0);
+}
+
+void NetworkItem::setCurrentServer(const QString &serverName) {
+ Q_UNUSED(serverName);
+ emit dataChanged(1);
+}
+
+/*****************************************
+* Irc User Items
+*****************************************/
+IrcUserItem::IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent)
+ : PropertyMapItem(QStringList() << "nickName", parent),
+ _ircUser(ircUser)
+{
+ connect(ircUser, SIGNAL(destroyed()),
+ this, SLOT(ircUserDestroyed()));
+
+ connect(ircUser, SIGNAL(nickSet(QString)),
+ this, SLOT(setNick(QString)));
+}
+
+QString IrcUserItem::nickName() {
+ return _ircUser->nick();
+}
+
+void IrcUserItem::setNick(QString newNick) {
+ Q_UNUSED(newNick);
+ emit dataChanged(0);
+}
+void IrcUserItem::ircUserDestroyed() {
+ deleteLater();
+}
+
+