diff options
| author | 2016-08-06 22:56:45 -0400 | |
|---|---|---|
| committer | 2016-08-07 23:12:47 -0400 | |
| commit | a0c4c0fb07a7d04c283c429273ebfe9947a51697 (patch) | |
| tree | 261b0005c5ed2d71664e6eef084de3e61afb2173 /src | |
| parent | KviProxyDatabase: Move to vector and unique pointers (diff) | |
| download | KVIrc-a0c4c0fb07a7d04c283c429273ebfe9947a51697.tar.gz KVIrc-a0c4c0fb07a7d04c283c429273ebfe9947a51697.tar.bz2 KVIrc-a0c4c0fb07a7d04c283c429273ebfe9947a51697.zip | |
KviIrcServerReconnectInfo: Refactor
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/kvilib/irc/KviIrcServerReconnectInfo.cpp | 44 | ||||
| -rw-r--r-- | src/kvilib/irc/KviIrcServerReconnectInfo.h | 20 | ||||
| -rw-r--r-- | src/kvirc/kernel/KviIrcConnection.cpp | 40 | ||||
| -rw-r--r-- | src/kvirc/kernel/KviIrcConnection.h | 7 |
5 files changed, 26 insertions, 86 deletions
diff --git a/src/kvilib/CMakeLists.txt b/src/kvilib/CMakeLists.txt index 6108b69e4..eb49b6767 100644 --- a/src/kvilib/CMakeLists.txt +++ b/src/kvilib/CMakeLists.txt @@ -62,7 +62,6 @@ set(kvilib_SRCS irc/KviIrcNetwork.cpp irc/KviIrcServer.cpp irc/KviIrcServerDataBase.cpp - irc/KviIrcServerReconnectInfo.cpp irc/KviIrcUserDataBase.cpp irc/KviIrcUserEntry.cpp irc/KviNickServRule.cpp diff --git a/src/kvilib/irc/KviIrcServerReconnectInfo.cpp b/src/kvilib/irc/KviIrcServerReconnectInfo.cpp deleted file mode 100644 index 354eac588..000000000 --- a/src/kvilib/irc/KviIrcServerReconnectInfo.cpp +++ /dev/null @@ -1,44 +0,0 @@ -//============================================================================= -// -// File : KviIrcServerReconnectInfo.h -// Creation date : Tue Jan 04 2010 21:44:11 by Elvio Basello -// -// This file is part of the KVIrc IRC client distribution -// Copyright (C) 2010 Elvio Basello (hellvis69 at gmail dot com) -// -// This program is FREE software. You can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the HOPE that it will be USEFUL, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -// See the GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, write to the Free Software Foundation, -// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -//============================================================================= - -#include "KviIrcServerReconnectInfo.h" - -KviIrcServerReconnectInfo::KviIrcServerReconnectInfo() -{ - m_bIsAway = false; -} - -KviIrcServerReconnectInfo::~KviIrcServerReconnectInfo() - = default; - -KviIrcServerReconnectInfo::KviIrcServerReconnectInfo(const KviIrcServerReconnectInfo & info) -{ - m_szNick = info.m_szNick; - m_szPass = info.m_szPass; - m_szAwayReason = info.m_szAwayReason; - //m_szJoinChannels = info.m_szJoinChannels; - m_lJoinChannels = info.m_lJoinChannels; - m_lOpenQueries = info.m_lOpenQueries; - m_bIsAway = info.m_bIsAway; -} diff --git a/src/kvilib/irc/KviIrcServerReconnectInfo.h b/src/kvilib/irc/KviIrcServerReconnectInfo.h index 67bfca89e..75902bdf0 100644 --- a/src/kvilib/irc/KviIrcServerReconnectInfo.h +++ b/src/kvilib/irc/KviIrcServerReconnectInfo.h @@ -36,8 +36,8 @@ #include <QString> #include <QStringList> -#include <QList> -#include <QPair> +#include <utility> +#include <vector> /** * \class KviIrcServerReconnectInfo @@ -50,19 +50,7 @@ public: * \brief Constructs the server reconnect info object * \return KviIrcServerReconnectInfo */ - KviIrcServerReconnectInfo(); - - /** - * \brief Carbon copy - * \param info The object to copy the info from - * \return KviIrcServerReconnectInfo - */ - KviIrcServerReconnectInfo(const KviIrcServerReconnectInfo & info); - - /** - * \brief Destroys the server reconnect info object - */ - ~KviIrcServerReconnectInfo(); + KviIrcServerReconnectInfo() : m_bIsAway(false) {}; public: QString m_szNick; @@ -72,7 +60,7 @@ public: bool m_bIsAway; // The list of channels to join (first = channel name, second = password) - QList<QPair<QString, QString>> m_lJoinChannels; + std::vector<std::pair<QString, QString>> m_lJoinChannels; }; #endif //_KVI_IRCSERVER_INFO_H_ diff --git a/src/kvirc/kernel/KviIrcConnection.cpp b/src/kvirc/kernel/KviIrcConnection.cpp index 1409871ed..4d9456845 100644 --- a/src/kvirc/kernel/KviIrcConnection.cpp +++ b/src/kvirc/kernel/KviIrcConnection.cpp @@ -70,6 +70,8 @@ #include <QTextCodec> #include <QtGlobal> +#include <algorithm> + extern KVIRC_API KviIrcServerDataBase * g_pServerDataBase; extern KVIRC_API KviProxyDataBase * g_pProxyDataBase; @@ -1664,13 +1666,12 @@ bool KviIrcConnection::changeUserMode(char cMode, bool bSet) return true; } -void KviIrcConnection::gatherChannelAndPasswordPairs(QList<QPair<QString, QString>> & lChannelsAndPasses) +void KviIrcConnection::gatherChannelAndPasswordPairs(std::vector<std::pair<QString, QString>> & lChannelsAndPasses) { for(auto & c : m_pChannelList) - lChannelsAndPasses.append( - QPair<QString, QString>( - c->windowName(), - c->hasChannelMode('k') ? c->channelModeParam('k') : QString())); + lChannelsAndPasses.emplace_back( + c->windowName(), + c->hasChannelMode('k') ? c->channelModeParam('k') : QString()); } void KviIrcConnection::gatherQueryNames(QStringList & lQueryNames) @@ -1679,30 +1680,27 @@ void KviIrcConnection::gatherQueryNames(QStringList & lQueryNames) lQueryNames.append(q->target()); } -void KviIrcConnection::joinChannels(const QList<QPair<QString, QString>> & lChannelsAndPasses) +void KviIrcConnection::joinChannels(const std::vector<std::pair<QString, QString>> & lChannelsAndPasses) { - if(lChannelsAndPasses.count() < 1) + if(lChannelsAndPasses.empty()) return; // Sort the list so the channels with passwords come first - QList<QPair<QString, QString>> lSorted; + std::vector<std::pair<QString, QString>> lSorted = lChannelsAndPasses; - QPair<QString, QString> oChanAndPass; - Q_FOREACH(oChanAndPass, lChannelsAndPasses) + std::sort(lSorted.begin(), lSorted.end(), + [](const std::pair<QString, QString> & left, + const std::pair<QString, QString> & right) { - if(oChanAndPass.second.isEmpty()) - lSorted.append(oChanAndPass); - else - lSorted.prepend(oChanAndPass); - } + return left.second.count() > right.second.count(); + }); // We send the channel list in chunks to avoid overflowing the 510 character limit on the message. QString szChans, szPasses; QString szCommand; - while(lSorted.count() > 0) + for(auto & oChanAndPass : lSorted) { - QPair<QString, QString> oChanAndPass = lSorted.takeFirst(); if(!szChans.isEmpty()) szChans.append(','); @@ -1843,7 +1841,7 @@ void KviIrcConnection::loginComplete(const QString & szNickName) if(target()->server()->reconnectInfo()) { - if(!target()->server()->reconnectInfo()->m_lJoinChannels.isEmpty()) + if(!target()->server()->reconnectInfo()->m_lJoinChannels.empty()) { bJoinStdChannels = false; joinChannels(target()->server()->reconnectInfo()->m_lJoinChannels); @@ -1879,7 +1877,7 @@ void KviIrcConnection::loginComplete(const QString & szNickName) if(bJoinStdChannels) { - QList<QPair<QString, QString>> lChansAndPass; + std::vector<std::pair<QString, QString>> lChansAndPass; if(target()->network()->autoJoinChannelList()) { @@ -1895,7 +1893,7 @@ void KviIrcConnection::loginComplete(const QString & szNickName) continue; if(!m_pServerInfo->isSupportedChannelType(szCurChan[0])) szCurChan.prepend('#'); - lChansAndPass.append(QPair<QString, QString>(szCurChan, szCurPass)); + lChansAndPass.emplace_back(szCurChan, szCurPass); } } @@ -1913,7 +1911,7 @@ void KviIrcConnection::loginComplete(const QString & szNickName) continue; if(!m_pServerInfo->isSupportedChannelType(szCurChan[0])) szCurChan.prepend('#'); - lChansAndPass.append(QPair<QString, QString>(szCurChan, szCurPass)); + lChansAndPass.emplace_back(szCurChan, szCurPass); } } diff --git a/src/kvirc/kernel/KviIrcConnection.h b/src/kvirc/kernel/KviIrcConnection.h index 7a514b9a9..0e33484c1 100644 --- a/src/kvirc/kernel/KviIrcConnection.h +++ b/src/kvirc/kernel/KviIrcConnection.h @@ -37,9 +37,8 @@ #include <QObject> #include <QByteArray> #include <QStringList> -#include <QList> -#include <QPair> +#include <utility> #include <vector> class QTimer; @@ -771,12 +770,12 @@ protected: * The first element of the pair is the channel name, the second element of the pair is the eventual password. * May send multiple JOIN messages. */ - void joinChannels(const QList<QPair<QString, QString>> & lChannelsAndPasses); + void joinChannels(const std::vector<std::pair<QString, QString>> & lChannelsAndPasses); /** * Gather the list of currently joined channels with the relative passwords. */ - void gatherChannelAndPasswordPairs(QList<QPair<QString, QString>> & lChannelsAndPasses); + void gatherChannelAndPasswordPairs(std::vector<std::pair<QString, QString>> & lChannelsAndPasses); /** * Gather the list of currently open query names. |
