From: Janne Koschinski Date: Mon, 28 Aug 2017 02:47:29 +0000 (+0200) Subject: Implement a fallback for Qt4 X-Git-Tag: travis-deploy-test~220 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=2c4e055125a3e3ab7a2bd0d9c0ea33415f6ce7cc Implement a fallback for Qt4 --- diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index c656e9c0..8499e1ad 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -838,12 +838,12 @@ Peer *SignalProxy::peerById(int peerId) { return _peerMap[peerId]; } -void SignalProxy::restrictTargetPeers(std::initializer_list peers, std::function closure) +void SignalProxy::restrictTargetPeers(QSet peers, std::function closure) { auto previousRestrictMessageTarget = _restrictMessageTarget; auto previousRestrictedTargets = _restrictedTargets; _restrictMessageTarget = true; - _restrictedTargets = QSet(peers); + _restrictedTargets = peers; closure(); diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index a985d0dc..e98f6bfc 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -83,7 +83,21 @@ public: * @param peerIds A list of peers that should receive it * @param closure Code you want to execute within of that restricted environment */ - void restrictTargetPeers(std::initializer_list peerIds, std::function closure); + void restrictTargetPeers(QSet peers, std::function closure); + void restrictTargetPeers(Peer *peer, std::function closure) { + QSet set; + set.insert(peer); + restrictTargetPeers(set, std::move(closure)); + } + + //A better version, but only implemented on Qt5 if Initializer Lists exist +#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) +#ifdef Q_COMPILER_INITIALIZER_LISTS + void restrictTargetPeers(std::initializer_list peers, std::function closure) { + restrictTargetPeers(QSet(peers), std::move(closure)); + } +#endif +#endif inline int peerCount() const { return _peers.size(); } QVariantList peerData(); diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 518246a9..6ae077fc 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -718,7 +718,7 @@ void CoreSession::changePassword(PeerPtr peer, const QString &userName, const QS if (uid.isValid() && uid == user()) success = Core::changeUserPassword(uid, newPassword); - signalProxy()->restrictTargetPeers({signalProxy()->sourcePeer()}, [&]{ + signalProxy()->restrictTargetPeers(signalProxy()->sourcePeer(), [&]{ emit passwordChanged(nullptr, success); }); } @@ -729,7 +729,7 @@ void CoreSession::kickClient(int peerId) { qWarning() << "Invalid peer Id: " << peerId; return; } - signalProxy()->restrictTargetPeers({peer}, [&]{ + signalProxy()->restrictTargetPeers(peer, [&]{ emit disconnectFromCore(); }); }