- QString joinString = QString("%1 %2").arg(channels.join(",")).arg(keys.join(",")).trimmed();
- if(!joinString.isEmpty())
- userInputHandler()->handleJoin(statusBuf, joinString);
+}
+
+void CoreNetwork::restoreUserModes() {
+ IrcUser *me_ = me();
+ Q_ASSERT(me_);
+
+ disconnect(me_, SIGNAL(userModesSet(QString)), this, SLOT(restoreUserModes()));
+ disconnect(me_, SIGNAL(userModesAdded(QString)), this, SLOT(restoreUserModes()));
+
+ QString removeModes;
+ QString addModes = Core::userModes(userId(), networkId());
+ QString currentModes = me_->userModes();
+
+ removeModes = currentModes;
+ removeModes.remove(QRegExp(QString("[%1]").arg(addModes)));
+ addModes.remove(QRegExp(QString("[%1]").arg(currentModes)));
+
+ removeModes = QString("%1 -%2").arg(me_->nick(), removeModes);
+ addModes = QString("%1 +%2").arg(me_->nick(), addModes);
+ userInputHandler()->handleMode(BufferInfo(), removeModes);
+ userInputHandler()->handleMode(BufferInfo(), addModes);