Use Closure in Amazon cover provider.

This commit is contained in:
John Maguire 2011-12-12 17:36:51 +01:00
parent 5a9bd3e8cf
commit 7585236e20
2 changed files with 6 additions and 11 deletions

View File

@ -16,6 +16,7 @@
*/
#include "amazoncoverprovider.h"
#include "core/closure.h"
#include "core/logging.h"
#include "core/network.h"
#include "core/utilities.h"
@ -77,20 +78,15 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu
encoded_args << EncodedArg("Signature", QUrl::toPercentEncoding(signature.toBase64()));
url.setEncodedQueryItems(encoded_args);
// Make the request
QNetworkReply* reply = network_->get(QNetworkRequest(url));
connect(reply, SIGNAL(finished()), SLOT(QueryFinished()));
pending_queries_[reply] = id;
NewClosure(reply, SIGNAL(finished()),
this, SLOT(QueryFinished(QNetworkReply*, int)),
reply, id);
return true;
}
void AmazonCoverProvider::QueryFinished() {
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
if (!reply || !pending_queries_.contains(reply))
return;
int id = pending_queries_.take(reply);
void AmazonCoverProvider::QueryFinished(QNetworkReply* reply, int id) {
reply->deleteLater();
CoverSearchResults results;

View File

@ -39,7 +39,7 @@ public:
bool StartSearch(const QString& artist, const QString& album, int id);
private slots:
void QueryFinished();
void QueryFinished(QNetworkReply* reply, int id);
private:
void ReadItem(QXmlStreamReader* reader, CoverSearchResults* results);
@ -47,7 +47,6 @@ private:
private:
QNetworkAccessManager* network_;
QMap<QNetworkReply*, int> pending_queries_;
};
#endif // AMAZONCOVERPROVIDER_H