-QStringList Network::initIrcChannels() const {
- QStringList channels;
- QHash<QString, IrcChannel *>::const_iterator iter = _ircChannels.constBegin();
- while(iter != _ircChannels.constEnd()) {
- channels << iter.value()->name();
- iter++;
+void Network::initSetIrcUsersAndChannels(const QVariantMap &usersAndChannels) {
+ Q_ASSERT(proxy());
+ if(!_ircUsers.isEmpty() || !_ircChannels.isEmpty()) {
+ qWarning() << "Network" << networkId() << "received init data for users and channels allthough there allready are known users or channels!";
+ return;
+ }
+
+ QVariantMap users = usersAndChannels.value("users").toMap();
+
+ QVariantMap::const_iterator userIter = users.constBegin();
+ QVariantMap::const_iterator userIterEnd = users.constEnd();
+ IrcUser *ircUser = 0;
+ QString hostmask;
+ while(userIter != userIterEnd) {
+ hostmask = userIter.key();
+ ircUser = new IrcUser(hostmask, this);
+ ircUser->fromVariantMap(userIter.value().toMap());
+ ircUser->setInitialized();
+ proxy()->synchronize(ircUser);
+
+ connect(ircUser, SIGNAL(nickSet(QString)), this, SLOT(ircUserNickChanged(QString)));
+ connect(ircUser, SIGNAL(destroyed()), this, SLOT(ircUserDestroyed()));
+
+ _ircUsers[nickFromMask(hostmask).toLower()] = ircUser;
+
+ emit ircUserAdded(hostmask);
+ emit ircUserAdded(ircUser);
+ emit ircUserInitDone(ircUser);
+
+ userIter++;