ginebra2/Downloads.cpp
changeset 6 1c3b8676e58c
parent 5 0f2326c2a325
equal deleted inserted replaced
5:0f2326c2a325 6:1c3b8676e58c
    31 #include <QNetworkProxy>
    31 #include <QNetworkProxy>
    32 #include <QWebPage>
    32 #include <QWebPage>
    33 
    33 
    34 #include "bedrockprovisioning.h"
    34 #include "bedrockprovisioning.h"
    35 #include "downloadcontroller.h"
    35 #include "downloadcontroller.h"
    36 
    36 #include "downloadproxy.h"
    37 #ifdef USE_DOWNLOAD_MANAGER
       
    38 #include "download.h"
       
    39 #include "downloadmanager.h"
       
    40 #endif
       
    41 
    37 
    42 namespace GVA {
    38 namespace GVA {
    43 
    39 
    44 Downloads::Downloads()
    40 Downloads::Downloads()
    45 : m_downloadController(0)
    41 : m_downloadController(0)
    60         QNetworkAccessManager * accessManager = page->networkAccessManager();
    56         QNetworkAccessManager * accessManager = page->networkAccessManager();
    61         QNetworkProxy proxy = accessManager->proxy();
    57         QNetworkProxy proxy = accessManager->proxy();
    62 
    58 
    63         m_downloadController = new DownloadController(client, proxy);
    59         m_downloadController = new DownloadController(client, proxy);
    64 
    60 
    65 #ifdef USE_DOWNLOAD_MANAGER
    61         safe_connect(m_downloadController, SIGNAL(downloadCreated(DownloadProxy)),
    66         safe_connect(m_downloadController, SIGNAL(downloadCreated(Download *)),
    62                 this, SLOT(reportDownloadCreated(DownloadProxy)));
    67                 this, SLOT(reportDownloadCreated(Download *)));
    63 
    68 
    64         safe_connect(m_downloadController, SIGNAL(downloadStarted(DownloadProxy)),
    69         safe_connect(m_downloadController, SIGNAL(downloadStarted(Download *)),
    65                 this, SLOT(reportDownloadStarted(DownloadProxy)));
    70                 this, SLOT(reportDownloadStarted(Download *)));
    66 
    71 
    67         safe_connect(m_downloadController, SIGNAL(downloadFinished(DownloadProxy)),
    72         safe_connect(m_downloadController, SIGNAL(downloadFinished(Download *)),
    68                 this, SLOT(reportDownloadSuccess(DownloadProxy)));
    73                 this, SLOT(reportDownloadSuccess(Download *)));
    69 
    74 
    70         safe_connect(m_downloadController, SIGNAL(downloadFailed(DownloadProxy, const QString &)),
    75         safe_connect(m_downloadController, SIGNAL(downloadFailed(Download *, const QString &)),
    71                 this, SLOT(reportDownloadFailure(DownloadProxy, const QString &)));
    76                 this, SLOT(reportDownloadFailure(Download *, const QString &)));
    72 
    77 
    73         safe_connect(m_downloadController, SIGNAL(downloadPaused(DownloadProxy, const QString &)),
    78         safe_connect(m_downloadController, SIGNAL(downloadPaused(Download *, const QString &)),
    74                 this, SLOT(reportDownloadFailure(DownloadProxy, const QString &)));
    79                 this, SLOT(reportDownloadFailure(Download *, const QString &)));
    75 
    80 
    76         safe_connect(m_downloadController, SIGNAL(downloadCancelled(DownloadProxy, const QString &)),
    81         safe_connect(m_downloadController, SIGNAL(downloadCancelled(Download *, const QString &)),
    77                 this, SLOT(reportDownloadFailure(DownloadProxy, const QString &)));
    82                 this, SLOT(reportDownloadFailure(Download *, const QString &)));
    78 
    83 
    79         safe_connect(m_downloadController, SIGNAL(downloadNetworkLoss(DownloadProxy, const QString &)),
    84         safe_connect(m_downloadController, SIGNAL(downloadNetworkLoss(Download *, const QString &)),
    80                 this, SLOT(reportDownloadFailure(DownloadProxy, const QString &)));
    85                 this, SLOT(reportDownloadFailure(Download *, const QString &)));
    81 
    86 
    82         // There is no argument to extract data from so we may as well
    87         // There is no Download* argument to extract data from so we may as well
       
    88         // just connect signal to signal without going through another slot.
    83         // just connect signal to signal without going through another slot.
    89         safe_connect(m_downloadController, SIGNAL(downloadsCleared()),
    84         safe_connect(m_downloadController, SIGNAL(downloadsCleared()),
    90                 this, SIGNAL(downloadsCleared()));
    85                 this, SIGNAL(downloadsCleared()));
    91 #endif
       
    92 
    86 
    93         safe_connect(m_downloadController, SIGNAL(unsupportedDownload(const QUrl &)),
    87         safe_connect(m_downloadController, SIGNAL(unsupportedDownload(const QUrl &)),
    94                 this, SLOT(reportUnsupportedDownload(const QUrl &)));
    88                 this, SLOT(reportUnsupportedDownload(const QUrl &)));
    95     }
    89     }
    96 
    90 
   126 
   120 
   127     if (saveFile.isEmpty()) {
   121     if (saveFile.isEmpty()) {
   128         return false;
   122         return false;
   129     }
   123     }
   130 
   124 
   131     qDebug() << "Download to:" << saveFile;
       
   132     saveInfo.setFile(saveFile);
   125     saveInfo.setFile(saveFile);
   133     return true;
   126     return true;
   134 }
   127 }
   135 
   128 
   136 void Downloads::downloadImage(const QString & imageUrl)
   129 void Downloads::downloadImage(const QString & imageUrl)
   144     }
   137     }
   145 
   138 
   146     m_downloadController->startDownload(url, saveInfo);
   139     m_downloadController->startDownload(url, saveInfo);
   147 }
   140 }
   148 
   141 
   149 #ifdef USE_DOWNLOAD_MANAGER
   142 void Downloads::reportDownloadCreated(DownloadProxy downloadProxy)
   150 
       
   151 void Downloads::reportDownloadCreated(Download * download)
       
   152 {
   143 {
   153     // Localize dialog message.
   144     // Localize dialog message.
   154 
   145 
   155     QString fmt = qtTrId("txt_browser_downloading_file");
   146     QString fmt = qtTrId("txt_browser_downloading_file");
   156     QString msg = fmt.arg(download->getAttribute(DlFileName).toString());
   147     QString msg = fmt.arg(downloadProxy.fileName());
   157 
   148 
   158     emit downloadCreated(msg);
   149     emit downloadCreated(msg);
   159 }
   150 }
   160 
   151 
   161 void Downloads::reportDownloadStarted(Download * download)
   152 void Downloads::reportDownloadStarted(DownloadProxy downloadProxy)
   162 {
   153 {
   163     // Localize dialog message.
   154     // Localize dialog message.
   164 
   155 
   165     QString fmt = qtTrId("txt_browser_downloading_file");
   156     QString fmt = qtTrId("txt_browser_downloading_file");
   166     QString msg = fmt.arg(download->getAttribute(DlFileName).toString());
   157     QString msg = fmt.arg(downloadProxy.fileName());
   167 
   158 
   168     emit downloadCreated(msg);
   159     emit downloadCreated(msg);
   169 }
   160 }
   170 
   161 
   171 void Downloads::reportDownloadSuccess(Download * download)
   162 void Downloads::reportDownloadSuccess(DownloadProxy downloadProxy)
   172 {
   163 {
   173     // Localize dialog message.
   164     // Localize dialog message.
   174 
   165 
   175     QString fmt = qtTrId("txt_browser_file_has_finished_downloading");
   166     QString fmt = qtTrId("txt_browser_file_has_finished_downloading");
   176     QString msg = fmt.arg(download->getAttribute(DlFileName).toString());
   167     QString msg = fmt.arg(downloadProxy.fileName());
   177 
   168 
   178     emit downloadSuccess(msg);
   169     emit downloadSuccess(msg);
   179 
   170 
   180     // Don't forget to remove the download; otherwise the download
   171     // Don't forget to remove the download; otherwise the download
   181     // controller won't know to emit the DownloadsCleared signal.
   172     // controller won't know to emit the DownloadsCleared signal.
   182 
   173 
   183     DownloadManager * manager = download->downloadManager();
   174     downloadProxy.remove();
   184 
   175 }
   185     manager->removeOne(download);
   176 
   186 }
   177 void Downloads::reportDownloadFailure(DownloadProxy downloadProxy, const QString & error)
   187 
       
   188 void Downloads::reportDownloadFailure(Download * download, const QString & error)
       
   189 {
   178 {
   190     // What went wrong?
   179     // What went wrong?
   191 
   180 
   192     DownloadController::debugDownload(download);
   181     downloadProxy.debug();
   193 
   182 
   194     // Localize dialog message.
   183     // Localize dialog message.
   195 
   184 
   196     QString fmt = qtTrId("txt_browser_tag_error_tag_file_could_not_be_downloaded");
   185     QString fmt = qtTrId("txt_browser_tag_error_tag_file_could_not_be_downloaded");
   197     QString msg = fmt.arg(
   186     QString msg = fmt.arg(
   198             "<span style=\"color:red\">",
   187             "<span style=\"color:red\">",
   199             "</span>",
   188             "</span>",
   200             download->getAttribute(DlFileName).toString());
   189             downloadProxy.fileName());
   201 
   190 
   202     emit downloadFailure(msg);
   191     emit downloadFailure(msg);
   203 
   192 
   204     // Don't forget to remove the download; otherwise the download
   193     // Don't forget to remove the download; otherwise the download
   205     // controller won't know to emit the DownloadsCleared signal.
   194     // controller won't know to emit the DownloadsCleared signal.
   206 
   195 
   207     DownloadManager * manager = download->downloadManager();
   196     downloadProxy.remove();
   208 
   197 }
   209     manager->removeOne(download);
       
   210 }
       
   211 
       
   212 #endif // USE_DOWNLOAD_MANAGER
       
   213 
   198 
   214 void Downloads::reportUnsupportedDownload(const QUrl & url)
   199 void Downloads::reportUnsupportedDownload(const QUrl & url)
   215 {
   200 {
   216     qDebug() << "Unsupported download:" << url;
       
   217 
       
   218     emit unsupportedDownload("Unsupported content"); // ;;; localize? or not b/c this is temporary?
   201     emit unsupportedDownload("Unsupported content"); // ;;; localize? or not b/c this is temporary?
   219 }
   202 }
   220 
   203 
   221 } // namespace GVA
   204 } // namespace GVA