+void CoreSession::renameBuffer(const NetworkId &networkId, const QString &newName, const QString &oldName)
+{
+ BufferInfo bufferInfo = Core::bufferInfo(user(), networkId, BufferInfo::QueryBuffer, oldName, false);
+ if (bufferInfo.isValid()) {
+ _bufferSyncer->renameBuffer(bufferInfo.bufferId(), newName);
+ }
+}
+
+
+void CoreSession::clientsConnected()
+{
+ QHash<NetworkId, CoreNetwork *>::iterator netIter = _networks.begin();
+ Identity *identity = 0;
+ CoreNetwork *net = 0;
+ IrcUser *me = 0;
+ while (netIter != _networks.end()) {
+ net = *netIter;
+ netIter++;
+
+ if (!net->isConnected())
+ continue;
+ identity = net->identityPtr();
+ if (!identity)
+ continue;
+ me = net->me();
+ if (!me)
+ continue;
+
+ if (identity->detachAwayEnabled() && me->isAway()) {
+ net->userInputHandler()->handleAway(BufferInfo(), QString());
+ }
+ }
+}
+
+
+void CoreSession::clientsDisconnected()
+{
+ QHash<NetworkId, CoreNetwork *>::iterator netIter = _networks.begin();
+ Identity *identity = 0;
+ CoreNetwork *net = 0;
+ IrcUser *me = 0;
+ QString awayReason;
+ while (netIter != _networks.end()) {
+ net = *netIter;
+ netIter++;
+
+ if (!net->isConnected())
+ continue;
+
+ identity = net->identityPtr();
+ if (!identity)
+ continue;
+ me = net->me();
+ if (!me)
+ continue;
+
+ if (identity->detachAwayEnabled() && !me->isAway()) {
+ if (!identity->detachAwayReason().isEmpty())
+ awayReason = identity->detachAwayReason();
+ net->setAutoAwayActive(true);
+ net->userInputHandler()->handleAway(BufferInfo(), awayReason);
+ }
+ }
+}
+
+
+void CoreSession::globalAway(const QString &msg)
+{
+ QHash<NetworkId, CoreNetwork *>::iterator netIter = _networks.begin();
+ CoreNetwork *net = 0;
+ while (netIter != _networks.end()) {
+ net = *netIter;
+ netIter++;
+
+ if (!net->isConnected())
+ continue;
+
+ net->userInputHandler()->issueAway(msg, false /* no force away */);
+ }