From: Manuel Nickschas Date: Tue, 7 Jan 2020 19:31:31 +0000 (+0100) Subject: qa: Avoid deprecation warnings for QList/QSet conversions X-Git-Tag: test-travis-01~17 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=52209badc8e769e50aa3019b63689dda0e79e9d0;ds=sidebyside qa: Avoid deprecation warnings for QList/QSet conversions Qt 5.14 deprecated the explicit functions for converting between QSet and QList, preferring instead the use of range-based ctors. Unfortunately, those ctors were only added in Qt 5.14, so we can't use them when compiling against older versions. Add a util function for QList->QSet to keep the version check in a single place. Replace the other direction by using QSet::values(). In some cases, conversions could be avoided altogether, or an STL container be used easily, so do that. --- diff --git a/src/client/backlogrequester.cpp b/src/client/backlogrequester.cpp index 48f16177..e3cdbc4b 100644 --- a/src/client/backlogrequester.cpp +++ b/src/client/backlogrequester.cpp @@ -35,36 +35,30 @@ BacklogRequester::BacklogRequester(bool buffering, RequesterType requesterType, Q_ASSERT(backlogManager); } -void BacklogRequester::setWaitingBuffers(const QSet& buffers) +void BacklogRequester::setWaitingBuffers(const BufferIdList& buffers) { - _buffersWaiting = buffers; - _totalBuffers = _buffersWaiting.count(); -} - -void BacklogRequester::addWaitingBuffer(BufferId buffer) -{ - _buffersWaiting << buffer; - _totalBuffers++; + _buffersWaiting = {buffers.begin(), buffers.end()}; + _totalBuffers = int(_buffersWaiting.size()); } bool BacklogRequester::buffer(BufferId bufferId, const MessageList& messages) { _bufferedMessages << messages; - _buffersWaiting.remove(bufferId); - return !_buffersWaiting.isEmpty(); + _buffersWaiting.erase(bufferId); + return !_buffersWaiting.empty(); } BufferIdList BacklogRequester::allBufferIds() const { QSet bufferIds = Client::bufferViewOverlay()->bufferIds(); bufferIds += Client::bufferViewOverlay()->tempRemovedBufferIds(); - return bufferIds.toList(); + return bufferIds.values(); } void BacklogRequester::flushBuffer() { - if (!_buffersWaiting.isEmpty()) { - qWarning() << Q_FUNC_INFO << "was called before all backlog was received:" << _buffersWaiting.count() << "buffers are waiting."; + if (!_buffersWaiting.empty()) { + qWarning() << Q_FUNC_INFO << "was called before all backlog was received:" << _buffersWaiting.size() << "buffers are waiting."; } _bufferedMessages.clear(); _totalBuffers = 0; diff --git a/src/client/backlogrequester.h b/src/client/backlogrequester.h index 2ecb09a4..c8a51e6a 100644 --- a/src/client/backlogrequester.h +++ b/src/client/backlogrequester.h @@ -18,8 +18,9 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef BACKLOGREQUESTER_H -#define BACKLOGREQUESTER_H +#pragma once + +#include #include @@ -48,7 +49,7 @@ public: inline RequesterType type() { return _requesterType; } inline const QList& bufferedMessages() { return _bufferedMessages; } - inline int buffersWaiting() const { return _buffersWaiting.count(); } + inline int buffersWaiting() const { return int(_buffersWaiting.size()); } inline int totalBuffers() const { return _totalBuffers; } bool buffer(BufferId bufferId, const MessageList& messages); //! returns false if it was the last missing backlogpart @@ -60,9 +61,7 @@ public: protected: BufferIdList allBufferIds() const; - inline void setWaitingBuffers(const QList& buffers) { setWaitingBuffers(buffers.toSet()); } - void setWaitingBuffers(const QSet& buffers); - void addWaitingBuffer(BufferId buffer); + void setWaitingBuffers(const BufferIdList& buffers); ClientBacklogManager* backlogManager; @@ -71,7 +70,7 @@ private: RequesterType _requesterType; MessageList _bufferedMessages; int _totalBuffers; - QSet _buffersWaiting; + std::set _buffersWaiting; }; // ======================================== @@ -115,5 +114,3 @@ private: int _limit; int _additional; }; - -#endif // BACKLOGREQUESTER_H diff --git a/src/client/bufferviewoverlay.cpp b/src/client/bufferviewoverlay.cpp index fe0d97a5..455f2735 100644 --- a/src/client/bufferviewoverlay.cpp +++ b/src/client/bufferviewoverlay.cpp @@ -27,6 +27,7 @@ #include "clientbacklogmanager.h" #include "clientbufferviewmanager.h" #include "networkmodel.h" +#include "util.h" const int BufferViewOverlay::_updateEventId = QEvent::registerEventType(); @@ -92,13 +93,13 @@ void BufferViewOverlay::addView(int viewId) if (Client::networkModel()->networkId(bufferId) == config->networkId()) buffers << bufferId; } - foreach (BufferId bufferId, config->temporarilyRemovedBuffers().toList()) { + for (BufferId bufferId : config->temporarilyRemovedBuffers()) { if (Client::networkModel()->networkId(bufferId) == config->networkId()) buffers << bufferId; } } else { - buffers = BufferIdList::fromSet(config->bufferList().toSet() + config->temporarilyRemovedBuffers()); + buffers = (toQSet(config->bufferList()) + config->temporarilyRemovedBuffers()).values(); } Client::backlogManager()->checkForBacklog(buffers); } @@ -207,12 +208,12 @@ void BufferViewOverlay::updateHelper() // we have to apply several filters before we can add a buffer to a category (visible, removed, ...) buffers += filterBuffersByConfig(config->bufferList(), config); - tempRemovedBuffers += filterBuffersByConfig(config->temporarilyRemovedBuffers().toList(), config); + tempRemovedBuffers += filterBuffersByConfig(config->temporarilyRemovedBuffers().values(), config); removedBuffers += config->removedBuffers(); } // prune the sets from overlap - QSet availableBuffers = Client::networkModel()->allBufferIds().toSet(); + QSet availableBuffers = toQSet(Client::networkModel()->allBufferIds()); buffers.intersect(availableBuffers); diff --git a/src/client/clientbacklogmanager.cpp b/src/client/clientbacklogmanager.cpp index b969251d..35403c0e 100644 --- a/src/client/clientbacklogmanager.cpp +++ b/src/client/clientbacklogmanager.cpp @@ -29,6 +29,7 @@ #include "backlogrequester.h" #include "backlogsettings.h" #include "client.h" +#include "util.h" ClientBacklogManager::ClientBacklogManager(QObject* parent) : BacklogManager(parent) @@ -117,7 +118,7 @@ void ClientBacklogManager::requestInitialBacklog() BufferIdList ClientBacklogManager::filterNewBufferIds(const BufferIdList& bufferIds) { BufferIdList newBuffers; - QSet availableBuffers = Client::networkModel()->allBufferIds().toSet(); + QSet availableBuffers = toQSet(Client::networkModel()->allBufferIds()); foreach (BufferId bufferId, bufferIds) { if (_buffersRequested.contains(bufferId) || !availableBuffers.contains(bufferId)) continue; diff --git a/src/client/messagefilter.cpp b/src/client/messagefilter.cpp index 97cf8929..6ff6378b 100644 --- a/src/client/messagefilter.cpp +++ b/src/client/messagefilter.cpp @@ -28,6 +28,7 @@ #include "clientignorelistmanager.h" #include "messagemodel.h" #include "networkmodel.h" +#include "util.h" MessageFilter::MessageFilter(QAbstractItemModel* source, QObject* parent) : QSortFilterProxyModel(parent) @@ -39,7 +40,7 @@ MessageFilter::MessageFilter(QAbstractItemModel* source, QObject* parent) MessageFilter::MessageFilter(MessageModel* source, const QList& buffers, QObject* parent) : QSortFilterProxyModel(parent) - , _validBuffers(buffers.toSet()) + , _validBuffers(toQSet(buffers)) , _messageTypeFilter(0) { init(); @@ -114,7 +115,7 @@ QString MessageFilter::idString() const if (_validBuffers.isEmpty()) return "*"; - QList bufferIds = _validBuffers.toList(); + QList bufferIds = _validBuffers.values(); std::sort(bufferIds.begin(), bufferIds.end()); QStringList bufferIdStrings; diff --git a/src/common/ircuser.cpp b/src/common/ircuser.cpp index a23595c1..d7b65f09 100644 --- a/src/common/ircuser.cpp +++ b/src/common/ircuser.cpp @@ -317,7 +317,7 @@ void IrcUser::partChannel(const QString& channelname) void IrcUser::quit() { - QList channels = _channels.toList(); + QList channels = _channels.values(); _channels.clear(); foreach (IrcChannel* channel, channels) { disconnect(channel, nullptr, this, nullptr); diff --git a/src/common/util.h b/src/common/util.h index 19aeb4fe..f638dfed 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -23,6 +23,7 @@ #include "common-export.h" #include +#include #include #include @@ -50,6 +51,16 @@ COMMON_EXPORT QString decodeString(const QByteArray& input, QTextCodec* codec = COMMON_EXPORT uint editingDistance(const QString& s1, const QString& s2); +template +QSet toQSet(const QList& list) +{ +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + return list.toSet(); +#else + return {list.begin(), list.end()}; +#endif +} + template QVariantList toVariantList(const QList& list) { diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index 266f344b..d7b3b5c4 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -28,6 +28,7 @@ #include "corenetwork.h" #include "coresession.h" #include "ircchannel.h" +#include "util.h" class PurgeEvent : public QEvent { @@ -193,7 +194,7 @@ void CoreBufferSyncer::purgeBufferIds() std::transform(bufferInfos.cbegin(), bufferInfos.cend(), std::inserter(actualBuffers, actualBuffers.end()), [](auto&& bufferInfo) { return bufferInfo.bufferId(); }); - QSet storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet(); + QSet storedIds = toQSet(lastSeenBufferIds()) + toQSet(markerLineBufferIds()); foreach (BufferId bufferId, storedIds) { if (actualBuffers.find(bufferId) == actualBuffers.end()) { BufferSyncer::removeBuffer(bufferId); diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index da331b68..132565e7 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -35,6 +35,7 @@ #include "messagefilter.h" #include "qtui.h" #include "qtuistyle.h" +#include "util.h" ChatView::ChatView(BufferId bufferId, QWidget* parent) : QGraphicsView(parent) @@ -293,7 +294,7 @@ QSet ChatView::visibleChatLines(Qt::ItemSelectionMode mode) const QList ChatView::visibleChatLinesSorted(Qt::ItemSelectionMode mode) const { - QList result = visibleChatLines(mode).toList(); + QList result = visibleChatLines(mode).values(); std::sort(result.begin(), result.end(), chatLinePtrLessThan); return result; } diff --git a/src/qtui/chatviewsearchcontroller.cpp b/src/qtui/chatviewsearchcontroller.cpp index 57ca2c0d..dd1ca08a 100644 --- a/src/qtui/chatviewsearchcontroller.cpp +++ b/src/qtui/chatviewsearchcontroller.cpp @@ -118,7 +118,7 @@ void ChatViewSearchController::updateHighlights(bool reuse) if (line) chatLines << line; } - foreach (ChatLine* line, QList(chatLines.toList())) { + foreach (ChatLine* line, chatLines) { updateHighlights(line); } } @@ -302,8 +302,7 @@ void ChatViewSearchController::repositionHighlights() if (line) chatLines << line; } - QList chatLineList(chatLines.toList()); - foreach (ChatLine* line, chatLineList) { + foreach (ChatLine* line, chatLines) { repositionHighlights(line); } } diff --git a/src/qtui/settingspages/chatmonitorsettingspage.cpp b/src/qtui/settingspages/chatmonitorsettingspage.cpp index 73d962b4..8a8faf7c 100644 --- a/src/qtui/settingspages/chatmonitorsettingspage.cpp +++ b/src/qtui/settingspages/chatmonitorsettingspage.cpp @@ -30,6 +30,7 @@ #include "client.h" #include "icon.h" #include "networkmodel.h" +#include "util.h" ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget* parent) : SettingsPage(tr("Interface"), tr("Chat Monitor"), parent) @@ -189,7 +190,7 @@ bool ChatMonitorSettingsPage::testHasChanged() if (_configActive->bufferList().count() != settings["Buffers"].toList().count()) return true; - QSet uiBufs = _configActive->bufferList().toSet(); + QSet uiBufs = toQSet(_configActive->bufferList()); QSet settingsBufs; foreach (QVariant v, settings["Buffers"].toList()) settingsBufs << v.value(); diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 9a531e28..780d0bf6 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -32,6 +32,7 @@ #include "graphicalui.h" #include "networkmodel.h" #include "uistyle.h" +#include "util.h" /***************************************** * The Filter for the Tree View @@ -141,7 +142,7 @@ void BufferViewFilter::enableEditMode(bool enable) return; if (enable == false) { - addBuffers(QList::fromSet(_toAdd)); + addBuffers(_toAdd.values()); QSet::const_iterator iter; for (iter = _toTempRemove.constBegin(); iter != _toTempRemove.constEnd(); ++iter) { if (config()->temporarilyRemovedBuffers().contains(*iter))