- // restore old user modes if server default mode is set.
- IrcUser *me_ = me();
- if(me_) {
- if(!me_->userModes().isEmpty()) {
- restoreUserModes();
- } else {
- connect(me_, SIGNAL(userModesSet(QString)), this, SLOT(restoreUserModes()));
- connect(me_, SIGNAL(userModesAdded(QString)), this, SLOT(restoreUserModes()));
- }
- }
-
- // send perform list
- foreach(QString line, perform()) {
- if(!line.isEmpty()) userInput(statusBuf, line);
- }
-
- // rejoin channels we've been in
- if(rejoinChannels()) {
- QStringList channels, keys;
- foreach(QString chan, coreSession()->persistentChannels(networkId()).keys()) {
- QString key = channelKey(chan);
- if(!key.isEmpty()) {
- channels.prepend(chan);
- keys.prepend(key);
- } else {
- channels.append(chan);
- }
- }
- 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 modesDelta = Core::userModes(userId(), networkId());
- QString currentModes = me_->userModes();
-
- QString addModes, removeModes;
- if(modesDelta.contains('-')) {
- addModes = modesDelta.section('-', 0, 0);
- removeModes = modesDelta.section('-', 1);
- } else {
- addModes = modesDelta;
- }
-
-
- addModes.remove(QRegExp(QString("[%1]").arg(currentModes)));
- if(currentModes.isEmpty())
- removeModes = QString();
- else
- removeModes.remove(QRegExp(QString("[^%1]").arg(currentModes)));
-
- if(addModes.isEmpty() && removeModes.isEmpty())
- return;
-
- if(!addModes.isEmpty())
- addModes = '+' + addModes;
- if(!removeModes.isEmpty())
- removeModes = '-' + removeModes;
-
- // don't use InputHandler::handleMode() as it keeps track of our persistent mode changes
- putRawLine(serverEncode(QString("MODE %1 %2%3").arg(me_->nick()).arg(addModes).arg(removeModes)));
-}
-
-void CoreNetwork::updateIssuedModes(const QString &requestedModes) {
- QString addModes;
- QString removeModes;
- bool addMode = true;
-
- for(int i = 0; i < requestedModes.length(); i++) {
- if(requestedModes[i] == '+') {
- addMode = true;
- continue;
- }
- if(requestedModes[i] == '-') {
- addMode = false;
- continue;
- }
- if(addMode) {
- addModes += requestedModes[i];
- } else {
- removeModes += requestedModes[i];
+ // do auto identify
+ if (useAutoIdentify() && !autoIdentifyService().isEmpty() && !autoIdentifyPassword().isEmpty()) {
+ userInputHandler()->handleMsg(statusBuf, QString("%1 IDENTIFY %2").arg(autoIdentifyService(), autoIdentifyPassword()));
+ }
+
+ // restore old user modes if server default mode is set.
+ IrcUser *me_ = me();
+ if (me_) {
+ if (!me_->userModes().isEmpty()) {
+ restoreUserModes();
+ }
+ else {
+ connect(me_, SIGNAL(userModesSet(QString)), this, SLOT(restoreUserModes()));
+ connect(me_, SIGNAL(userModesAdded(QString)), this, SLOT(restoreUserModes()));
+ }
+ }
+
+ // send perform list
+ foreach(QString line, perform()) {
+ if (!line.isEmpty()) userInput(statusBuf, line);
+ }
+
+ // rejoin channels we've been in
+ if (rejoinChannels()) {
+ QStringList channels, keys;
+ foreach(QString chan, coreSession()->persistentChannels(networkId()).keys()) {
+ QString key = channelKey(chan);
+ if (!key.isEmpty()) {
+ channels.prepend(chan);
+ keys.prepend(key);
+ }
+ else {
+ channels.append(chan);
+ }
+ }
+ 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 modesDelta = Core::userModes(userId(), networkId());
+ QString currentModes = me_->userModes();
+
+ QString addModes, removeModes;
+ if (modesDelta.contains('-')) {
+ addModes = modesDelta.section('-', 0, 0);
+ removeModes = modesDelta.section('-', 1);