browsercore/appfw/Api/Managers/downloadcontroller.cpp
changeset 6 1c3b8676e58c
parent 5 0f2326c2a325
child 15 73c48011b8c7
--- a/browsercore/appfw/Api/Managers/downloadcontroller.cpp	Wed Jun 23 17:59:43 2010 +0300
+++ b/browsercore/appfw/Api/Managers/downloadcontroller.cpp	Tue Jul 06 14:03:49 2010 +0300
@@ -22,6 +22,8 @@
 #include "downloadcontroller.h"
 #include "downloadcontroller_p.h"
 
+#include "downloadproxy_p.h"
+
 #include <QFileInfo>
 #include <QNetworkProxy>
 #include <QNetworkReply>
@@ -84,7 +86,7 @@
     case QNetworkReply::ProtocolFailure:
         return "QNetworkReply::ProtocolFailure";
     default:
-        return 0;
+        return "???";
     }
 }
 
@@ -130,293 +132,6 @@
     }
 }
 
-static const char * downloadPriorityToString(DownloadPriority priority)
-{
-    switch (priority) {
-    case High:
-        return "High";
-    case Low:
-        return "Low";
-    default:
-        return 0;
-    }
-}
-
-static const char * downloadScopeToString(DownloadScope scope)
-{
-    switch (scope) {
-    case Normal:
-        return "Normal";
-    case Background:
-        return "Background";
-    default:
-        return 0;
-    }
-}
-
-static const char * downloadStateToString(DownloadState state)
-{
-    switch (state) {
-    case DlNone:
-	return "DlNone";
-    case DlCreated:
-	return "DlCreated";
-    case DlStarted:
-	return "DlStarted";
-    case DlInprogress:
-	return "DlInprogress";
-    case DlPaused:
-	return "DlPaused";
-    case DlCompleted:
-	return "DlCompleted";
-    case DlFailed:
-	return "DlFailed";
-    case DlCancelled:
-	return "DlCancelled";
-    case DlDescriptorUpdated:
-	return "DlDescriptorUpdated";
-    default:
-        return 0;
-    }
-}
-
-static const char * downloadTypeToString(DownloadType type)
-{
-    switch (type) {
-    case Parallel:
-        return "Parallel";
-    case Sequential:
-        return "Sequential";
-    default:
-        return 0;
-    }
-}
-
-static void debugDownloadStr(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    QString value = download->getAttribute(attribute).toString();
-    if (value.length() == 0) {
-        return;
-    }
-
-    qDebug() << "DL" << download->id() << name << value;
-}
-
-static void debugDownloadInt(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    int value = download->getAttribute(attribute).toInt();
-    if (value == 0) {
-        return;
-    }
-
-    qDebug() << "DL" << download->id() << name << value;
-}
-
-static void debugDownloadUInt(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    uint value = download->getAttribute(attribute).toUInt();
-    if (value == 0) {
-        return;
-    }
-
-    qDebug() << "DL" << download->id() << name << value;
-}
-
-static void debugDownloadError(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    int num = download->getAttribute(attribute).toInt();
-
-    const char * str = downloadErrorToString(static_cast<QNetworkReply::NetworkError>(num));
-    if (str == 0) {
-        str = "???";
-    }
-
-    qDebug() << "DL" << download->id() << name << num << str;
-}
-
-static void debugDownloadPriority(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    int num = download->getAttribute(attribute).toInt();
-
-    const char * str = downloadPriorityToString(static_cast<DownloadPriority>(num));
-    if (str == 0) {
-        str = "???";
-    }
-
-    qDebug() << "DL" << download->id() << name << num << str;
-}
-
-static void debugDownloadScope(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    int num = download->getAttribute(attribute).toInt();
-
-    const char * str = downloadScopeToString(static_cast<DownloadScope>(num));
-    if (str == 0) {
-        str = "???";
-    }
-
-    qDebug() << "DL" << download->id() << name << num << str;
-}
-
-static void debugDownloadState(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    int num = download->getAttribute(attribute).toInt();
-
-    const char * str = downloadStateToString(static_cast<DownloadState>(num));
-    if (str == 0) {
-        str = "???";
-    }
-
-    qDebug() << "DL" << download->id() << name << num << str;
-}
-
-static void debugDownloadType(
-    Download * download,
-    DownloadAttribute attribute,
-    const char * name)
-{
-    int num = download->getAttribute(attribute).toInt();
-
-    const char * str = downloadTypeToString(static_cast<DownloadType>(num));
-    if (str == 0) {
-        str = "???";
-    }
-
-    qDebug() << "DL" << download->id() << name << num << str;
-}
-
-void DownloadController::debugDownload(Download * download)
-{
-    debugDownloadState(download,
-            DlDownloadState,
-            "DlDownloadState");
-
-    debugDownloadError(download,
-            DlLastError,
-            "DlLastError");
-
-    debugDownloadStr(download,
-            DlLastErrorString,
-            "DlLastErrorString");
-
-    debugDownloadStr(download,
-            DlSourceUrl,
-            "DlSourceUrl");
-
-    debugDownloadStr(download,
-            DlContentType,
-            "DlContentType");
-
-    debugDownloadStr(download,
-            DlDestPath,
-            "DlDestPath");
-
-    debugDownloadStr(download,
-            DlFileName,
-            "DlFileName");
-
-    debugDownloadInt(download,
-            DlDownloadedSize,
-            "DlDownloadedSize");
-
-    debugDownloadInt(download,
-            DlTotalSize,
-            "DlTotalSize");
-
-    debugDownloadInt(download,
-            DlLastPausedSize,
-            "DlLastPausedSize");
-
-    debugDownloadInt(download,
-            DlPercentage,
-            "DlPercentage");
-
-    debugDownloadStr(download,
-            DlStartTime,
-            "DlStartTime");
-
-    debugDownloadStr(download,
-            DlEndTime,
-            "DlEndTime");
-
-    debugDownloadUInt(download,
-            DlElapsedTime,
-            "DlElapsedTime");
-
-    debugDownloadStr(download,
-            DlRemainingTime,
-            "DlRemainingTime");
-
-    debugDownloadStr(download,
-            DlSpeed,
-            "DlSpeed");
-
-    debugDownloadScope(download,
-            DlDownloadScope,
-            "DlDownloadScope");
-
-    debugDownloadType(download,
-            DlDownloadType,
-            "DlDownloadType");
-
-    debugDownloadPriority(download,
-            DlPriority,
-            "DlPriority");
-
-    debugDownloadInt(download,
-            DlProgressInterval,
-            "DlProgressInterval");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorName,
-            "OMADownloadDescriptorName");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorVersion,
-            "OMADownloadDescriptorVersion");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorType,
-            "OMADownloadDescriptorType");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorSize,
-            "OMADownloadDescriptorSize");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorVendor,
-            "OMADownloadDescriptorVendor");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorDescription,
-            "OMADownloadDescriptorDescription");
-
-    debugDownloadStr(download,
-            OMADownloadDescriptorNextURL,
-            "OMADownloadDescriptorNextURL");
-}
-
 static void debugDownloadEvent(DEventType type)
 {
     const char * name = downloadEventToString(type);
@@ -522,9 +237,12 @@
 
     // Start download.
 
-    emit m_downloadController->downloadCreated(download);
+    DownloadProxy downloadProxy(new DownloadProxyData(download));
+
+    emit m_downloadController->downloadCreated(downloadProxy);
 
     download->registerEventReceiver(this);
+
     download->start();
 }
 
@@ -540,6 +258,9 @@
         return true;
 
     case DownloadsCleared:
+        // ;;; In new DL mgr will have DownloadManager 'Removed' event instead.
+        // ;;; Looks like this will only be generated when all downloads are removed.
+        // ;;; In that case we can emit the same signal.
         emit m_downloadController->downloadsCleared();
         return true;
 
@@ -578,34 +299,36 @@
     if (errorStr != 0)
         error = errorStr;
 
+    DownloadProxy downloadProxy(new DownloadProxyData(download));
+
     switch (type)
     {
     case Started:
-        emit m_downloadController->downloadStarted(download);
+        emit m_downloadController->downloadStarted(downloadProxy);
         return true;
 
     case HeaderReceived:
-        emit m_downloadController->downloadHeaderReceived(download);
+        emit m_downloadController->downloadHeaderReceived(downloadProxy);
         return true;
 
     case Progress:
-        emit m_downloadController->downloadProgress(download);
+        emit m_downloadController->downloadProgress(downloadProxy);
         return true;
 
     case Completed:
-        emit m_downloadController->downloadFinished(download);
+        emit m_downloadController->downloadFinished(downloadProxy);
         return true;
 
     case Paused:
-        emit m_downloadController->downloadPaused(download, error);
+        emit m_downloadController->downloadPaused(downloadProxy, error);
         return true;
 
     case Cancelled:
-        emit m_downloadController->downloadCancelled(download, error);
+        emit m_downloadController->downloadCancelled(downloadProxy, error);
         return true;
 
     case Failed:
-        emit m_downloadController->downloadFailed(download, error);
+        emit m_downloadController->downloadFailed(downloadProxy, error);
         return true;
 
     case DescriptorUpdated:
@@ -613,11 +336,11 @@
         return true;
 
     case NetworkLoss:
-        emit m_downloadController->downloadNetworkLoss(download, error);
+        emit m_downloadController->downloadNetworkLoss(downloadProxy, error);
         return true;
 
     case Error:
-        emit m_downloadController->downloadError(download, error);
+        emit m_downloadController->downloadError(downloadProxy, error);
         return true;
 
     case OMADownloadDescriptorReady: