change and add some comments, remove some warning
[mdictionary] / src / plugins / xdxf / HttpDownloader.cpp
index 652425f..753124f 100644 (file)
     Copyright 2010 Comarch S.A.
 
 *******************************************************************************/
-
 /*!
-  \file HttpDownloader.h
-  \author Bartosz Szatkowski <bulislaw@linux.com>
+    \file HttpDownloader.h
+    \author Bartosz Szatkowski <bulislaw@linux.com>
  */
 
-
 #include "HttpDownloader.h"
 
-HttpDownloader::HttpDownloader(QObject *parent) {
+HttpDownloader::HttpDownloader(QObject *parent): QObject(parent) {
     http = new QHttp();
     //connect(http, SIGNAL(requestFinished(int, bool)), this,
      //       SLOT(getPageFinished()));
@@ -35,6 +33,8 @@ HttpDownloader::HttpDownloader(QObject *parent) {
     manager = new QNetworkAccessManager;
     connect(manager, SIGNAL(finished(QNetworkReply*)),
             SLOT(downloadFinished(QNetworkReply*)));
+
+    //connect(http, SIGNAL())
 }
 
 
@@ -44,11 +44,20 @@ void HttpDownloader::download(QUrl url, QString file) {
     // Following line is crucial becouse sourceforge wont redirect correctly
     //    if no user-agent is supplied
     request.setRawHeader("User-Agent", "Wget/1.12 (linux-gnu)");
-    manager->get(request);
-
+    currentReply = manager->get(request);
+    connect(currentReply, SIGNAL(downloadProgress(qint64,qint64)),
+            this, SIGNAL(progress(qint64,qint64)));
 }
 
+
 void HttpDownloader::downloadFinished(QNetworkReply *reply) {
+    disconnect(reply, SIGNAL(downloadProgress(qint64,qint64)),
+               this, SIGNAL(progress(qint64,qint64)));
+    if(reply->error() != QNetworkReply::NoError) {
+        Q_EMIT error(reply->errorString());
+        return;
+    }
+
     QUrl r = reply->attribute(QNetworkRequest::RedirectionTargetAttribute)
             .toUrl();
 
@@ -57,7 +66,9 @@ void HttpDownloader::downloadFinished(QNetworkReply *reply) {
        QNetworkRequest req;
        req.setRawHeader("User-Agent", "Wget/1.12 (linux-gnu)");
        req.setUrl(r);
-       manager->get(req);
+       currentReply = manager->get(req);
+       connect(currentReply, SIGNAL(downloadProgress(qint64,qint64)),
+               this, SIGNAL(progress(qint64,qint64)));
     }
     else {
         QFile resultFile(destFile);
@@ -67,3 +78,8 @@ void HttpDownloader::downloadFinished(QNetworkReply *reply) {
         Q_EMIT finished();
     }
 }
+
+
+void HttpDownloader::kill() {
+    http->abort();
+}