author | hgs |
Fri, 17 Sep 2010 12:11:40 -0400 | |
changeset 12 | afcd8e6d025b |
parent 3 | 0954f5dd2cd0 |
permissions | -rw-r--r-- |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
1 |
/* |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
4 |
* |
3 | 5 |
* This program is free software: you can redistribute it and/or modify |
6 |
* it under the terms of the GNU Lesser General Public License as published by |
|
7 |
* the Free Software Foundation, version 2.1 of the License. |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU Lesser General Public License for more details. |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
13 |
* |
3 | 14 |
* You should have received a copy of the GNU Lesser General Public License |
15 |
* along with this program. If not, |
|
16 |
* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/". |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
17 |
* |
3 | 18 |
* Description: |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
19 |
* |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
20 |
*/ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
21 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
22 |
#include "downloadcontroller.h" |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
23 |
#include "downloadcontroller_p.h" |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
24 |
|
3 | 25 |
#include "downloadproxy_p.h" |
26 |
||
27 |
#include <QFileInfo> |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
28 |
#include <QNetworkProxy> |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
29 |
#include <QNetworkReply> |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
30 |
#include <QNetworkRequest> |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
31 |
#include <QString> |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
32 |
#include <QUrl> |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
33 |
#include <QWebPage> |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
34 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
35 |
#ifdef USE_DOWNLOAD_MANAGER |
12 | 36 |
using namespace WRT; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
37 |
|
12 | 38 |
static const char * downloadErrorToString(WRT::Error error) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
39 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
40 |
switch (error) { |
12 | 41 |
case WRT::NoError: |
42 |
return "WRT::NoError"; |
|
43 |
case WRT::ConnectionRefusedError: |
|
44 |
return "WRT::ConnectionRefusedError"; |
|
45 |
case WRT::RemoteHostClosedError: |
|
46 |
return "WRT::RemoteHostClosedError"; |
|
47 |
case WRT::HostNotFoundError: |
|
48 |
return "WRT::HostNotFoundError"; |
|
49 |
case WRT::TimeoutError: |
|
50 |
return "WRT::TimeoutError"; |
|
51 |
case WRT::OperationCanceledError: |
|
52 |
return "WRT::OperationCanceledError"; |
|
53 |
case WRT::SslHandshakeFailedError: |
|
54 |
return "WRT::SslHandshakeFailedError"; |
|
55 |
case WRT::TemporaryNetworkFailureError: |
|
56 |
return "WRT::TemporaryNetworkFailureError"; |
|
57 |
case WRT::UnknownNetworkError: |
|
58 |
return "WRT::UnknownNetworkError"; |
|
59 |
case WRT::ProxyConnectionRefusedError: |
|
60 |
return "WRT::ProxyConnectionRefusedError"; |
|
61 |
case WRT::ProxyConnectionClosedError: |
|
62 |
return "WRT::ProxyConnectionClosedError"; |
|
63 |
case WRT::ProxyNotFoundError: |
|
64 |
return "WRT::ProxyNotFoundError"; |
|
65 |
case WRT::ProxyTimeoutError: |
|
66 |
return "WRT::ProxyTimeoutError"; |
|
67 |
case WRT::ProxyAuthenticationRequiredError: |
|
68 |
return "WRT::ProxyAuthenticationRequiredError"; |
|
69 |
case WRT::UnknownProxyError: |
|
70 |
return "WRT::UnknownProxyError"; |
|
71 |
case WRT::ContentAccessDenied: |
|
72 |
return "WRT::ContentAccessDenied"; |
|
73 |
case WRT::ContentOperationNotPermittedError: |
|
74 |
return "WRT::ContentOperationNotPermittedError"; |
|
75 |
case WRT::ContentNotFoundError: |
|
76 |
return "WRT::ContentNotFoundError"; |
|
77 |
case WRT::AuthenticationRequiredError: |
|
78 |
return "WRT::AuthenticationRequiredError"; |
|
79 |
case WRT::ContentReSendError: |
|
80 |
return "WRT::ContentReSendError"; |
|
81 |
case WRT::UnknownContentError: |
|
82 |
return "WRT::UnknownContentError"; |
|
83 |
case WRT::ProtocolUnknownError: |
|
84 |
return "WRT::ProtocolUnknownError"; |
|
85 |
case WRT::ProtocolInvalidOperationError: |
|
86 |
return "WRT::ProtocolInvalidOperationError"; |
|
87 |
case WRT::ProtocolFailure: |
|
88 |
return "WRT::ProtocolFailure"; |
|
89 |
case WRT::ConnectionFailed: |
|
90 |
return "WRT::ConnectionFailed"; |
|
91 |
case WRT::HttpRestartFailed: |
|
92 |
return "WRT::HttpRestartFailed"; |
|
93 |
case WRT::ContentExpired: |
|
94 |
return "WRT::ContentExpired"; |
|
95 |
case WRT::PartialContentModified: |
|
96 |
return "WRT::PartialContentModified"; |
|
97 |
case WRT::ObjectNotFound: |
|
98 |
return "WRT::ObjectNotFound"; |
|
99 |
case WRT::HttpUnhandled: |
|
100 |
return "WRT::HttpUnhandled"; |
|
101 |
case WRT::DestinationFileInUse: |
|
102 |
return "WRT::DestinationFileInUse"; |
|
103 |
case WRT::WrongDestinationFilename: |
|
104 |
return "WRT::WrongDestinationFilename"; |
|
105 |
case WRT::BadUrl: |
|
106 |
return "WRT::BadUrl"; |
|
107 |
case WRT::MediaRemoved: |
|
108 |
return "WRT::MediaRemoved"; |
|
109 |
case WRT::FileWriteFailed: |
|
110 |
return "WRT::FileWriteFailed"; |
|
111 |
case WRT::FileNotFound: |
|
112 |
return "WRT::FileNotFound"; |
|
113 |
case WRT::InvalidDrive: |
|
114 |
return "WRT::InvalidDrive"; |
|
115 |
case WRT::MoveFailed: |
|
116 |
return "WRT::MoveFailed"; |
|
117 |
case WRT::DiskFull: |
|
118 |
return "WRT::DiskFull"; |
|
119 |
case WRT::DiskError: |
|
120 |
return "WRT::DiskError"; |
|
121 |
case WRT::TransactionFailed: |
|
122 |
return "WRT::TransactionFailed"; |
|
123 |
case WRT::Internal: |
|
124 |
return "WRT::Internal"; |
|
125 |
case WRT::General: |
|
126 |
return "WRT::General"; |
|
127 |
case WRT::MaxRedirectionsReached: |
|
128 |
return "WRT::MaxRedirectionsReached"; |
|
129 |
case WRT::InvalidDownloadDescriptor: |
|
130 |
return "WRT::InvalidDownloadDescriptor"; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
131 |
default: |
3 | 132 |
return "???"; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
133 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
134 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
135 |
|
12 | 136 |
static const char * downloadEventToString(WRT::DownloadEvent::Event type) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
137 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
138 |
switch (type) { |
12 | 139 |
case WRT::DownloadEvent::Created: |
140 |
return "DownloadEvent:Created"; |
|
141 |
case WRT::DownloadEvent::Started: |
|
142 |
return "DownloadEvent::Started"; |
|
143 |
case WRT::DownloadEvent::HeadersReceived: |
|
144 |
return "DownloadEvent::HeadersReceived"; |
|
145 |
case WRT::DownloadEvent::InProgress: |
|
146 |
return "DownloadEvent::InProgress"; |
|
147 |
case WRT::DownloadEvent::Paused: |
|
148 |
return "DownloadEvent::Paused"; |
|
149 |
case WRT::DownloadEvent::Completed: |
|
150 |
return "DownloadEvent::Completed"; |
|
151 |
case WRT::DownloadEvent::Failed: |
|
152 |
return "DownloadEvent::Failed"; |
|
153 |
case WRT::DownloadEvent::Cancelled: |
|
154 |
return "DownloadEvent::Cancelled"; |
|
155 |
case WRT::DownloadEvent::DescriptorUpdated: |
|
156 |
return "DownloadEvent::DescriptorUpdated"; |
|
157 |
case WRT::DownloadEvent::NetworkLoss: |
|
158 |
return "DownloadEvent::NetworkLoss"; |
|
159 |
case WRT::DownloadEvent::Error: |
|
160 |
return "DownloadEvent::Error"; |
|
161 |
case WRT::DownloadEvent::DescriptorReady: |
|
162 |
return "DownloadEvent::DescriptorReady"; |
|
163 |
case WRT::DownloadEvent::LicenseAcquiring: |
|
164 |
return "DownloadEvent::LicenseAcquiring"; |
|
165 |
case WRT::DownloadEvent::MediaRemoved: |
|
166 |
return "DownloadEvent::MediaRemoved"; |
|
167 |
case WRT::DownloadEvent::MediaInserted: |
|
168 |
return "DownloadEvent::MediaInserted"; |
|
169 |
case WRT::DownloadEvent::RedirectedPermanently: |
|
170 |
return "DownloadEvent::RedirectedPermanently"; |
|
171 |
case WRT::DownloadEvent::RedirectedTemporarily: |
|
172 |
return "DownloadEvent::RedirectedTemporarily"; |
|
173 |
case WRT::DownloadEvent::NameChanged: |
|
174 |
return "DownloadEvent::NameChanged"; |
|
175 |
case WRT::DownloadEvent::ContentTypeChanged: |
|
176 |
return "DownloadEvent::ContentTypeChanged"; |
|
177 |
case WRT::DownloadEvent::CreatingConnection: |
|
178 |
return "DownloadEvent::CreatingConnection"; |
|
179 |
case WRT::DownloadEvent::ConnectionNeeded: |
|
180 |
return "DownloadEvent::ConnectionNeeded"; |
|
181 |
case WRT::DownloadEvent::ConnectionDisconnected: |
|
182 |
return "DownloadEvent::ConnectionDisconnected"; |
|
183 |
case WRT::DownloadEvent::RightObjectsAcquired: |
|
184 |
return "DownloadEvent::RightObjectsAcquired"; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
185 |
default: |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
186 |
return 0; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
187 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
188 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
189 |
|
12 | 190 |
static void debugDownloadEvent(WRT::DownloadEvent::Event type) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
191 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
192 |
const char * name = downloadEventToString(type); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
193 |
if (name == 0) { |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
194 |
return; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
195 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
196 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
197 |
qDebug() << "Received event" << name; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
198 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
199 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
200 |
// DownloadControllerPrivate implementation |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
201 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
202 |
DownloadControllerPrivate::DownloadControllerPrivate( |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
203 |
DownloadController * downloadController, |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
204 |
const QString & client, |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
205 |
const QNetworkProxy & proxy) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
206 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
207 |
m_downloadController = downloadController; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
208 |
|
12 | 209 |
m_downloadManager = new WRT::DownloadManager(client); |
210 |
||
211 |
if (m_downloadManager->initialize() != 0) { |
|
212 |
return; |
|
213 |
} |
|
214 |
||
215 |
if (!connect( |
|
216 |
m_downloadManager, |
|
217 |
SIGNAL(downloadManagerEvent(DownloadManagerEvent *)), |
|
218 |
this, |
|
219 |
SLOT(handleDownloadManagerEvent(DownloadManagerEvent *)))) { |
|
220 |
//;;; how to handle error? |
|
221 |
} |
|
222 |
||
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
223 |
if (proxy.type() != QNetworkProxy::NoProxy) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
224 |
m_downloadManager->setProxy(proxy.hostName(), proxy.port()); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
225 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
226 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
227 |
DownloadControllerPrivate::~DownloadControllerPrivate() |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
228 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
229 |
delete m_downloadManager; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
230 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
231 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
232 |
static QString downloadFileName(QUrl url) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
233 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
234 |
QString scheme = url.scheme(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
235 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
236 |
// For http and https, let the download manager determine the filename. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
237 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
238 |
if (scheme == "http" || scheme == "https") |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
239 |
return QString(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
240 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
241 |
// For data scheme (see http://en.wikipedia.org/wiki/Data_URI_scheme) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
242 |
// we don't have a file name per-se, so construct one from the content |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
243 |
// type. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
244 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
245 |
if (scheme == "data") { |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
246 |
// Typical example: data:image/png;base64,... |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
247 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
248 |
QString path = url.path(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
249 |
QString type = path.section('/', 0, 0); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
250 |
QString subtype = path.section('/', 1, 1).section(';', 0, 0); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
251 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
252 |
// For now we just use type as base name and subtype |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
253 |
// as extension. For the common case of image/jpg |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
254 |
// and stuff like that this works fine. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
255 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
256 |
return type + "." + subtype; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
257 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
258 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
259 |
// For all other schemes, let the download manager determine the filename. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
260 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
261 |
return QString(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
262 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
263 |
|
3 | 264 |
void DownloadControllerPrivate::startDownload(const QUrl & url, const QFileInfo & info) |
265 |
{ |
|
12 | 266 |
WRT::Download * download = m_downloadManager->createDownload(url.toString()); |
3 | 267 |
|
12 | 268 |
download->setAttribute(WRT::DestinationPath, info.absolutePath()); |
269 |
download->setAttribute(WRT::FileName, info.fileName()); |
|
3 | 270 |
|
271 |
startDownload(download, url); |
|
272 |
} |
|
273 |
||
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
274 |
void DownloadControllerPrivate::startDownload(QNetworkReply * reply) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
275 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
276 |
QUrl url = reply->url(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
277 |
|
12 | 278 |
WRT::Download * download = m_downloadManager->createDownload(reply); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
279 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
280 |
startDownload(download, url); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
281 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
282 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
283 |
void DownloadControllerPrivate::startDownload(const QNetworkRequest & request) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
284 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
285 |
QUrl url = request.url(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
286 |
|
12 | 287 |
WRT::Download * download = m_downloadManager->createDownload(url.toString()); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
288 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
289 |
startDownload(download, url); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
290 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
291 |
|
12 | 292 |
void DownloadControllerPrivate::startDownload(WRT::Download * download, const QUrl & url) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
293 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
294 |
// If necessary suggest an alternate file name. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
295 |
// The download manager will adjust the file name for us to handle |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
296 |
// duplicates in the destination directory. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
297 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
298 |
QString file = downloadFileName(url); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
299 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
300 |
if (file.length() > 0) { |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
301 |
QVariant value(file); |
12 | 302 |
download->setAttribute(WRT::FileName, value); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
303 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
304 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
305 |
// Start download. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
306 |
|
3 | 307 |
DownloadProxy downloadProxy(new DownloadProxyData(download)); |
308 |
||
309 |
emit m_downloadController->downloadCreated(downloadProxy); |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
310 |
|
12 | 311 |
if (!connect( |
312 |
download, |
|
313 |
SIGNAL(downloadEvent(DownloadEvent *)), |
|
314 |
this, |
|
315 |
SLOT(handleDownloadEvent(DownloadEvent *)))) { |
|
316 |
//;;; how to handle error? |
|
317 |
} |
|
318 |
||
319 |
if (!connect( |
|
320 |
download, |
|
321 |
SIGNAL(downloadError(Error)), |
|
322 |
this, |
|
323 |
SLOT(handleDownloadError(Error)))) { |
|
324 |
//;;; how to handle error? |
|
325 |
} |
|
3 | 326 |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
327 |
download->start(); |
12 | 328 |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
329 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
330 |
|
12 | 331 |
void DownloadControllerPrivate::handleDownloadManagerEvent( |
332 |
DownloadManagerEvent * event) |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
333 |
{ |
12 | 334 |
int type = event->type(); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
335 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
336 |
switch (type) { |
12 | 337 |
case WRT::DownloadManagerEvent::Created: |
338 |
// Instead of waiting for the DownloadManager Created event |
|
339 |
// we emit downloadCreated in startDownload above so that we |
|
340 |
// can add a pointer to the download created as a parameter. |
|
341 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
342 |
|
12 | 343 |
case WRT::DownloadManagerEvent::Removed: |
344 |
if (m_downloadManager->currentDownloads().empty()) { |
|
345 |
emit m_downloadController->downloadsCleared(); |
|
346 |
} |
|
347 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
348 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
349 |
default: |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
350 |
qDebug() << "Unexpected download manager event:" << type; |
12 | 351 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
352 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
353 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
354 |
|
12 | 355 |
void DownloadControllerPrivate::handleDownloadEvent( |
356 |
DownloadEvent * event) |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
357 |
{ |
12 | 358 |
int id = event->id(); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
359 |
|
12 | 360 |
WRT::Download * download = m_downloadManager->findDownload(id); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
361 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
362 |
if (!download) { |
12 | 363 |
qDebug() << "Cannot find download with id" << id << " for error " << event; |
364 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
365 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
366 |
|
12 | 367 |
int errorNum = download->attribute(WRT::LastError).toInt(); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
368 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
369 |
const char * errorStr = downloadErrorToString( |
12 | 370 |
static_cast<WRT::Error>(errorNum)); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
371 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
372 |
QString error; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
373 |
if (errorStr != 0) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
374 |
error = errorStr; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
375 |
|
3 | 376 |
DownloadProxy downloadProxy(new DownloadProxyData(download)); |
377 |
||
12 | 378 |
switch (event->type()) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
379 |
{ |
12 | 380 |
|
381 |
case WRT::DownloadEvent::Created: |
|
382 |
// Nothing to do, we already emitted a signal to report |
|
383 |
// creation of a new Download object from startDownload(). |
|
384 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
385 |
|
12 | 386 |
case WRT::DownloadEvent::Started: |
387 |
emit m_downloadController->downloadStarted(downloadProxy); |
|
388 |
return; |
|
389 |
||
390 |
case WRT::DownloadEvent::HeadersReceived: |
|
3 | 391 |
emit m_downloadController->downloadHeaderReceived(downloadProxy); |
12 | 392 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
393 |
|
12 | 394 |
case WRT::DownloadEvent::InProgress: |
3 | 395 |
emit m_downloadController->downloadProgress(downloadProxy); |
12 | 396 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
397 |
|
12 | 398 |
case WRT::DownloadEvent::Completed: |
3 | 399 |
emit m_downloadController->downloadFinished(downloadProxy); |
12 | 400 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
401 |
|
12 | 402 |
case WRT::DownloadEvent::Paused: |
3 | 403 |
emit m_downloadController->downloadPaused(downloadProxy, error); |
12 | 404 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
405 |
|
12 | 406 |
case WRT::DownloadEvent::Cancelled: |
3 | 407 |
emit m_downloadController->downloadCancelled(downloadProxy, error); |
12 | 408 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
409 |
|
12 | 410 |
case WRT::DownloadEvent::Failed: |
3 | 411 |
emit m_downloadController->downloadFailed(downloadProxy, error); |
12 | 412 |
return; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
413 |
|
12 | 414 |
case WRT::DownloadEvent::DescriptorUpdated: |
415 |
// FIXME - Update to support OMA and DRM. |
|
416 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
417 |
|
12 | 418 |
case WRT::DownloadEvent::NetworkLoss: |
3 | 419 |
emit m_downloadController->downloadNetworkLoss(downloadProxy, error); |
12 | 420 |
return; |
421 |
||
422 |
case WRT::DownloadEvent::Error: |
|
423 |
emit m_downloadController->downloadError(downloadProxy, error); |
|
424 |
return; |
|
425 |
||
426 |
case WRT::DownloadEvent::DescriptorReady: |
|
427 |
// FIXME - Update to support OMA and DRM. |
|
428 |
return; |
|
429 |
||
430 |
case WRT::DownloadEvent::LicenseAcquiring: |
|
431 |
// FIXME - Update to support OMA and DRM. |
|
432 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
433 |
|
12 | 434 |
case WRT::DownloadEvent::MediaRemoved: |
435 |
// FIXME ;;; what to do? |
|
436 |
emit m_downloadController->downloadMessage( |
|
437 |
downloadProxy, |
|
438 |
"Media Removed"); |
|
439 |
return; |
|
440 |
||
441 |
case WRT::DownloadEvent::MediaInserted: |
|
442 |
// FIXME ;;; what to do? |
|
443 |
emit m_downloadController->downloadMessage( |
|
444 |
downloadProxy, |
|
445 |
"Media Inserted"); |
|
446 |
return; |
|
447 |
||
448 |
case WRT::DownloadEvent::RedirectedPermanently: |
|
449 |
// FIXME ;;; what to do? |
|
450 |
emit m_downloadController->downloadMessage( |
|
451 |
downloadProxy, |
|
452 |
"Redirected Permanently"); |
|
453 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
454 |
|
12 | 455 |
case WRT::DownloadEvent::RedirectedTemporarily: |
456 |
// FIXME ;;; what to do? |
|
457 |
emit m_downloadController->downloadMessage( |
|
458 |
downloadProxy, |
|
459 |
"Redirected Temporarily"); |
|
460 |
return; |
|
461 |
||
462 |
case WRT::DownloadEvent::NameChanged: |
|
463 |
// FIXME ;;; what to do? |
|
464 |
emit m_downloadController->downloadMessage( |
|
465 |
downloadProxy, |
|
466 |
"Name Changed"); |
|
467 |
return; |
|
468 |
||
469 |
case WRT::DownloadEvent::ContentTypeChanged: |
|
470 |
// FIXME ;;; what to do? |
|
471 |
emit m_downloadController->downloadMessage( |
|
472 |
downloadProxy, |
|
473 |
"Type Changed"); |
|
474 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
475 |
|
12 | 476 |
case WRT::DownloadEvent::CreatingConnection: |
477 |
// FIXME ;;; what to do? |
|
478 |
emit m_downloadController->downloadMessage( |
|
479 |
downloadProxy, |
|
480 |
"Creating Connection"); |
|
481 |
return; |
|
482 |
||
483 |
case WRT::DownloadEvent::ConnectionNeeded: |
|
484 |
// FIXME ;;; what to do? |
|
485 |
emit m_downloadController->downloadMessage( |
|
486 |
downloadProxy, |
|
487 |
"Connection Needed"); |
|
488 |
return; |
|
489 |
||
490 |
case WRT::DownloadEvent::ConnectionDisconnected: |
|
491 |
// FIXME ;;; what to do? |
|
492 |
emit m_downloadController->downloadMessage( |
|
493 |
downloadProxy, |
|
494 |
"Connection Disconnected"); |
|
495 |
return; |
|
496 |
||
497 |
case WRT::DownloadEvent::RightObjectsAcquired: |
|
498 |
// FIXME - Update to support OMA and DRM. |
|
499 |
return; |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
500 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
501 |
default: |
12 | 502 |
qDebug() << "Unexpected download event:" << event->type(); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
503 |
break; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
504 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
505 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
506 |
|
12 | 507 |
void DownloadControllerPrivate::handleDownloadError(Error error) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
508 |
{ |
12 | 509 |
// Expect the WRT::DownloadEvent::Error case in handleDownloadEvent() |
510 |
// above should handle anything likely to go through here. |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
511 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
512 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
513 |
// DownloadController implementation |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
514 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
515 |
DownloadController::DownloadController( |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
516 |
const QString & client, |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
517 |
const QNetworkProxy & proxy) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
518 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
519 |
d = new DownloadControllerPrivate(this, client, proxy); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
520 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
521 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
522 |
DownloadController::~DownloadController() |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
523 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
524 |
delete d; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
525 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
526 |
|
3 | 527 |
void DownloadController::startDownload(const QUrl & url, const QFileInfo & info) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
528 |
{ |
3 | 529 |
qDebug() << "Download URL" << url; |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
530 |
|
3 | 531 |
d->startDownload(url, info); |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
532 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
533 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
534 |
void DownloadController::startDownload(QNetworkReply * reply) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
535 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
536 |
QUrl url = reply->url(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
537 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
538 |
qDebug() << "Download unsupported content" << url; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
539 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
540 |
d->startDownload(reply); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
541 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
542 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
543 |
void DownloadController::startDownload(const QNetworkRequest & request) |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
544 |
{ |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
545 |
QUrl url = request.url(); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
546 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
547 |
qDebug() << "Save link or image" << url; |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
548 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
549 |
d->startDownload(request); |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
550 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
551 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
552 |
#else // USE_DOWNLOAD_MANAGER |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
553 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
554 |
// Empty implementation for when DownloadManager is unsupported. |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
555 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
556 |
DownloadController::DownloadController( |
12 | 557 |
const QString & /*client*/, |
558 |
const QNetworkProxy & /*proxy*/) |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
559 |
{} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
560 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
561 |
DownloadController::~DownloadController() |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
562 |
{} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
563 |
|
3 | 564 |
void DownloadController::startDownload(const QUrl & url, const QFileInfo & info) |
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
565 |
{ |
3 | 566 |
Q_UNUSED(info) |
567 |
||
568 |
emit unsupportedDownload(url); |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
569 |
} |
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
570 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
571 |
void DownloadController::startDownload(QNetworkReply * reply) |
3 | 572 |
{ |
573 |
QUrl url = reply->url(); |
|
574 |
||
575 |
emit unsupportedDownload(url); |
|
576 |
} |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
577 |
|
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
578 |
void DownloadController::startDownload(const QNetworkRequest & request) |
3 | 579 |
{ |
580 |
QUrl url = request.url(); |
|
581 |
||
582 |
emit unsupportedDownload(url); |
|
583 |
} |
|
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
584 |
|
12 | 585 |
void DownloadControllerPrivate::handleDownloadManagerEvent( |
586 |
DownloadManagerEvent * event) |
|
587 |
{ |
|
588 |
} |
|
589 |
||
590 |
void DownloadControllerPrivate::handleDownloadEvent( |
|
591 |
DownloadEvent * event) |
|
592 |
{ |
|
593 |
} |
|
594 |
||
595 |
DownloadControllerPrivate::~DownloadControllerPrivate() |
|
596 |
{} |
|
597 |
||
0
1450b09d0cfd
Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
598 |
#endif // USE_DOWNLOAD_MANAGER |
3 | 599 |
|
600 |
bool DownloadController::handlePage(QWebPage * page) |
|
601 |
{ |
|
602 |
bool succeeded = true; |
|
603 |
||
604 |
// Handle click on link when the link type is not supported. |
|
605 |
page->setForwardUnsupportedContent(true); |
|
606 |
if (!connect(page, SIGNAL(unsupportedContent(QNetworkReply *)), |
|
607 |
this, SLOT(startDownload(QNetworkReply *)))) { |
|
608 |
succeeded = false; |
|
609 |
}; |
|
610 |
||
611 |
// Handle Save Link and Save Image requests from the context menu. |
|
612 |
if (!connect(page, SIGNAL(downloadRequested(const QNetworkRequest &)), |
|
613 |
this, SLOT(startDownload(const QNetworkRequest &)))) { |
|
614 |
succeeded = false; |
|
615 |
} |
|
616 |
||
617 |
return succeeded; |
|
618 |
} |