From f292a3bf9845aae068987b4449dedd0c4c9db22f Mon Sep 17 00:00:00 2001 From: John Maguire Date: Fri, 12 Oct 2012 14:36:14 +0200 Subject: [PATCH] Port musicbrainz client to closures. --- src/musicbrainz/musicbrainzclient.cpp | 40 ++++++++++----------------- src/musicbrainz/musicbrainzclient.h | 6 ++-- 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp index 054175d15..ffa7b50ff 100644 --- a/src/musicbrainz/musicbrainzclient.cpp +++ b/src/musicbrainz/musicbrainzclient.cpp @@ -16,15 +16,16 @@ */ #include "musicbrainzclient.h" -#include "core/logging.h" -#include "core/network.h" -#include "core/utilities.h" #include #include #include #include -#include + +#include "core/closure.h" +#include "core/logging.h" +#include "core/network.h" +#include "core/utilities.h" const char* MusicBrainzClient::kTrackUrl = "http://musicbrainz.org/ws/2/recording/"; const char* MusicBrainzClient::kDiscUrl = "http://musicbrainz.org/ws/1/release/"; @@ -49,8 +50,9 @@ void MusicBrainzClient::Start(int id, const QString& mbid) { QNetworkRequest req(url); QNetworkReply* reply = network_->get(req); - connect(reply, SIGNAL(finished()), SLOT(RequestFinished())); - requests_[reply] = id; + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestFinished(QNetworkReply*, int)), reply, id); + requests_[id] = reply; timeouts_->AddReply(reply); } @@ -67,27 +69,22 @@ void MusicBrainzClient::StartDiscIdRequest(const QString& discid) { QNetworkRequest req(url); QNetworkReply* reply = network_->get(req); - connect(reply, SIGNAL(finished()), SLOT(DiscIdRequestFinished())); - //requests_[reply] = id; + NewClosure(reply, SIGNAL(finished()), this, + SLOT(DiscIdRequestFinished(QNetworkReply*)), reply); timeouts_->AddReply(reply); } void MusicBrainzClient::Cancel(int id) { - QNetworkReply* reply = requests_.key(id); - requests_.remove(reply); - delete reply; + delete requests_.take(id); } void MusicBrainzClient::CancelAll() { - qDeleteAll(requests_.keys()); + qDeleteAll(requests_.values()); requests_.clear(); } -void MusicBrainzClient::DiscIdRequestFinished() { - QNetworkReply* reply = qobject_cast(sender()); - if (!reply) - return; +void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { reply->deleteLater(); ResultList ret; @@ -136,16 +133,9 @@ void MusicBrainzClient::DiscIdRequestFinished() { } -void MusicBrainzClient::RequestFinished() { - QNetworkReply* reply = qobject_cast(sender()); - if (!reply) - return; - +void MusicBrainzClient::RequestFinished(QNetworkReply* reply, int id) { reply->deleteLater(); - if (!requests_.contains(reply)) - return; - - int id = requests_.take(reply); + requests_.remove(id); ResultList ret; if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { diff --git a/src/musicbrainz/musicbrainzclient.h b/src/musicbrainz/musicbrainzclient.h index b3ba6ac1b..e7065daf4 100644 --- a/src/musicbrainz/musicbrainzclient.h +++ b/src/musicbrainz/musicbrainzclient.h @@ -97,8 +97,8 @@ signals: const MusicBrainzClient::ResultList& result); private slots: - void RequestFinished(); - void DiscIdRequestFinished(); + void RequestFinished(QNetworkReply* reply, int id); + void DiscIdRequestFinished(QNetworkReply* reply); private: struct Release { @@ -130,7 +130,7 @@ private: QNetworkAccessManager* network_; NetworkTimeouts* timeouts_; - QMap requests_; + QMap requests_; }; inline uint qHash(const MusicBrainzClient::Result& result) {