X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetwork.cpp;h=54d0366fd1eea60904949b356eb17f4a8d4c6b01;hp=d18f7130be79f30e87d4b0157029250fc0f58b78;hb=4259bc3c5b11164245535e011a69efa6937bb6a6;hpb=208ccb6d91ebb3c26a67c35c11411ba3ab27708a diff --git a/src/common/network.cpp b/src/common/network.cpp index d18f7130..54d0366f 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,16 +18,13 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include #include #include "network.h" -#include "quassel.h" QTextCodec *Network::_defaultCodecForServer = 0; QTextCodec *Network::_defaultCodecForEncoding = 0; QTextCodec *Network::_defaultCodecForDecoding = 0; -QString Network::_networksIniPath = QString(); // ==================== // Public: @@ -80,6 +77,18 @@ bool Network::isChannelName(const QString &channelname) const } +bool Network::isStatusMsg(const QString &target) const +{ + if (target.isEmpty()) + return false; + + if (supports("STATUSMSG")) + return support("STATUSMSG").contains(target[0]); + else + return QString("@+").contains(target[0]); +} + + NetworkInfo Network::networkInfo() const { NetworkInfo info; @@ -288,20 +297,6 @@ void Network::removeChansAndUsers() QList channels = ircChannels(); _ircChannels.clear(); - foreach(IrcChannel *channel, channels) { - proxy()->detachObject(channel); - disconnect(channel, 0, this, 0); - } - foreach(IrcUser *user, users) { - proxy()->detachObject(user); - disconnect(user, 0, this, 0); - } - - // the second loop is needed because quit can have sideffects - foreach(IrcUser *user, users) { - user->quit(); - } - qDeleteAll(users); qDeleteAll(channels); } @@ -469,7 +464,7 @@ QByteArray Network::encodeString(const QString &string) const if (_defaultCodecForEncoding) { return _defaultCodecForEncoding->fromUnicode(string); } - return string.toAscii(); + return string.toLatin1(); } @@ -490,74 +485,7 @@ QByteArray Network::encodeServerString(const QString &string) const if (_defaultCodecForServer) { return _defaultCodecForServer->fromUnicode(string); } - return string.toAscii(); -} - - -/*** Handle networks.ini ***/ - -QStringList Network::presetNetworks(bool onlyDefault) -{ - // lazily find the file, make sure to not call one of the other preset functions first (they'll fail else) - if (_networksIniPath.isNull()) { - _networksIniPath = Quassel::findDataFilePath("networks.ini"); - if (_networksIniPath.isNull()) { - _networksIniPath = ""; // now we won't check again, as it's not null anymore - return QStringList(); - } - } - if (!_networksIniPath.isEmpty()) { - QSettings s(_networksIniPath, QSettings::IniFormat); - QStringList networks = s.childGroups(); - if (!networks.isEmpty()) { - // we sort the list case-insensitive - QMap sorted; - foreach(QString net, networks) { - if (onlyDefault && !s.value(QString("%1/Default").arg(net)).toBool()) - continue; - sorted[net.toLower()] = net; - } - return sorted.values(); - } - } - return QStringList(); -} - - -QStringList Network::presetDefaultChannels(const QString &networkName) -{ - if (_networksIniPath.isEmpty()) // be sure to have called presetNetworks() first, else this always fails - return QStringList(); - QSettings s(_networksIniPath, QSettings::IniFormat); - return s.value(QString("%1/DefaultChannels").arg(networkName)).toStringList(); -} - - -NetworkInfo Network::networkInfoFromPreset(const QString &networkName) -{ - NetworkInfo info; - if (!_networksIniPath.isEmpty()) { - info.networkName = networkName; - QSettings s(_networksIniPath, QSettings::IniFormat); - s.beginGroup(info.networkName); - foreach(QString server, s.value("Servers").toStringList()) { - bool ssl = false; - QStringList splitserver = server.split(':', QString::SkipEmptyParts); - if (splitserver.count() != 2) { - qWarning() << "Invalid server entry in networks.conf:" << server; - continue; - } - if (splitserver[1].at(0) == '+') - ssl = true; - uint port = splitserver[1].toUInt(); - if (!port) { - qWarning() << "Invalid port entry in networks.conf:" << server; - continue; - } - info.serverList << Network::Server(splitserver[0].trimmed(), port, QString(), ssl); - } - } - return info; + return string.toLatin1(); }