aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar staticfox2016-08-06 22:56:45 -0400
committerGravatar staticfox2016-08-07 23:12:47 -0400
commita0c4c0fb07a7d04c283c429273ebfe9947a51697 (patch)
tree261b0005c5ed2d71664e6eef084de3e61afb2173 /src
parentKviProxyDatabase: Move to vector and unique pointers (diff)
downloadKVIrc-a0c4c0fb07a7d04c283c429273ebfe9947a51697.tar.gz
KVIrc-a0c4c0fb07a7d04c283c429273ebfe9947a51697.tar.bz2
KVIrc-a0c4c0fb07a7d04c283c429273ebfe9947a51697.zip
KviIrcServerReconnectInfo: Refactor
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/CMakeLists.txt1
-rw-r--r--src/kvilib/irc/KviIrcServerReconnectInfo.cpp44
-rw-r--r--src/kvilib/irc/KviIrcServerReconnectInfo.h20
-rw-r--r--src/kvirc/kernel/KviIrcConnection.cpp40
-rw-r--r--src/kvirc/kernel/KviIrcConnection.h7
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.