browsercore/appfw/Api/Managers/downloadcontroller.cpp
author hgs
Fri, 17 Sep 2010 12:11:40 -0400
changeset 12 afcd8e6d025b
parent 3 0954f5dd2cd0
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
hgs
parents: 0
diff changeset
     5
* This program is free software: you can redistribute it and/or modify
hgs
parents: 0
diff changeset
     6
* it under the terms of the GNU Lesser General Public License as published by
hgs
parents: 0
diff changeset
     7
* the Free Software Foundation, version 2.1 of the License.
hgs
parents: 0
diff changeset
     8
* 
hgs
parents: 0
diff changeset
     9
* This program is distributed in the hope that it will be useful,
hgs
parents: 0
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents: 0
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
hgs
parents: 0
diff changeset
    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
hgs
parents: 0
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public License
hgs
parents: 0
diff changeset
    15
* along with this program.  If not, 
hgs
parents: 0
diff changeset
    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
hgs
parents: 0
diff changeset
    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
hgs
parents: 0
diff changeset
    25
#include "downloadproxy_p.h"
hgs
parents: 0
diff changeset
    26
hgs
parents: 0
diff changeset
    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
hgs
parents: 3
diff changeset
    36
using namespace WRT;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
12
hgs
parents: 3
diff changeset
    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
hgs
parents: 3
diff changeset
    41
    case WRT::NoError:
hgs
parents: 3
diff changeset
    42
        return "WRT::NoError";
hgs
parents: 3
diff changeset
    43
    case WRT::ConnectionRefusedError:
hgs
parents: 3
diff changeset
    44
        return "WRT::ConnectionRefusedError";
hgs
parents: 3
diff changeset
    45
    case WRT::RemoteHostClosedError:
hgs
parents: 3
diff changeset
    46
        return "WRT::RemoteHostClosedError";
hgs
parents: 3
diff changeset
    47
    case WRT::HostNotFoundError:
hgs
parents: 3
diff changeset
    48
        return "WRT::HostNotFoundError";
hgs
parents: 3
diff changeset
    49
    case WRT::TimeoutError:
hgs
parents: 3
diff changeset
    50
        return "WRT::TimeoutError";
hgs
parents: 3
diff changeset
    51
    case WRT::OperationCanceledError:
hgs
parents: 3
diff changeset
    52
        return "WRT::OperationCanceledError";
hgs
parents: 3
diff changeset
    53
    case WRT::SslHandshakeFailedError:
hgs
parents: 3
diff changeset
    54
        return "WRT::SslHandshakeFailedError";
hgs
parents: 3
diff changeset
    55
    case WRT::TemporaryNetworkFailureError:
hgs
parents: 3
diff changeset
    56
        return "WRT::TemporaryNetworkFailureError";
hgs
parents: 3
diff changeset
    57
    case WRT::UnknownNetworkError:
hgs
parents: 3
diff changeset
    58
        return "WRT::UnknownNetworkError";
hgs
parents: 3
diff changeset
    59
    case WRT::ProxyConnectionRefusedError:
hgs
parents: 3
diff changeset
    60
        return "WRT::ProxyConnectionRefusedError";
hgs
parents: 3
diff changeset
    61
    case WRT::ProxyConnectionClosedError:
hgs
parents: 3
diff changeset
    62
        return "WRT::ProxyConnectionClosedError";
hgs
parents: 3
diff changeset
    63
    case WRT::ProxyNotFoundError:
hgs
parents: 3
diff changeset
    64
        return "WRT::ProxyNotFoundError";
hgs
parents: 3
diff changeset
    65
    case WRT::ProxyTimeoutError:
hgs
parents: 3
diff changeset
    66
        return "WRT::ProxyTimeoutError";
hgs
parents: 3
diff changeset
    67
    case WRT::ProxyAuthenticationRequiredError:
hgs
parents: 3
diff changeset
    68
        return "WRT::ProxyAuthenticationRequiredError";
hgs
parents: 3
diff changeset
    69
    case WRT::UnknownProxyError:
hgs
parents: 3
diff changeset
    70
        return "WRT::UnknownProxyError";
hgs
parents: 3
diff changeset
    71
    case WRT::ContentAccessDenied:
hgs
parents: 3
diff changeset
    72
        return "WRT::ContentAccessDenied";
hgs
parents: 3
diff changeset
    73
    case WRT::ContentOperationNotPermittedError:
hgs
parents: 3
diff changeset
    74
        return "WRT::ContentOperationNotPermittedError";
hgs
parents: 3
diff changeset
    75
    case WRT::ContentNotFoundError:
hgs
parents: 3
diff changeset
    76
        return "WRT::ContentNotFoundError";
hgs
parents: 3
diff changeset
    77
    case WRT::AuthenticationRequiredError:
hgs
parents: 3
diff changeset
    78
        return "WRT::AuthenticationRequiredError";
hgs
parents: 3
diff changeset
    79
    case WRT::ContentReSendError:
hgs
parents: 3
diff changeset
    80
        return "WRT::ContentReSendError";
hgs
parents: 3
diff changeset
    81
    case WRT::UnknownContentError:
hgs
parents: 3
diff changeset
    82
        return "WRT::UnknownContentError";
hgs
parents: 3
diff changeset
    83
    case WRT::ProtocolUnknownError:
hgs
parents: 3
diff changeset
    84
        return "WRT::ProtocolUnknownError";
hgs
parents: 3
diff changeset
    85
    case WRT::ProtocolInvalidOperationError:
hgs
parents: 3
diff changeset
    86
        return "WRT::ProtocolInvalidOperationError";
hgs
parents: 3
diff changeset
    87
    case WRT::ProtocolFailure:
hgs
parents: 3
diff changeset
    88
        return "WRT::ProtocolFailure";
hgs
parents: 3
diff changeset
    89
    case WRT::ConnectionFailed:
hgs
parents: 3
diff changeset
    90
        return "WRT::ConnectionFailed";
hgs
parents: 3
diff changeset
    91
    case WRT::HttpRestartFailed:
hgs
parents: 3
diff changeset
    92
        return "WRT::HttpRestartFailed";
hgs
parents: 3
diff changeset
    93
    case WRT::ContentExpired:
hgs
parents: 3
diff changeset
    94
        return "WRT::ContentExpired";
hgs
parents: 3
diff changeset
    95
    case WRT::PartialContentModified:
hgs
parents: 3
diff changeset
    96
        return "WRT::PartialContentModified";
hgs
parents: 3
diff changeset
    97
    case WRT::ObjectNotFound:
hgs
parents: 3
diff changeset
    98
        return "WRT::ObjectNotFound";
hgs
parents: 3
diff changeset
    99
    case WRT::HttpUnhandled:
hgs
parents: 3
diff changeset
   100
        return "WRT::HttpUnhandled";
hgs
parents: 3
diff changeset
   101
    case WRT::DestinationFileInUse:
hgs
parents: 3
diff changeset
   102
        return "WRT::DestinationFileInUse";
hgs
parents: 3
diff changeset
   103
    case WRT::WrongDestinationFilename:
hgs
parents: 3
diff changeset
   104
        return "WRT::WrongDestinationFilename";
hgs
parents: 3
diff changeset
   105
    case WRT::BadUrl:
hgs
parents: 3
diff changeset
   106
        return "WRT::BadUrl";
hgs
parents: 3
diff changeset
   107
    case WRT::MediaRemoved:
hgs
parents: 3
diff changeset
   108
        return "WRT::MediaRemoved";
hgs
parents: 3
diff changeset
   109
    case WRT::FileWriteFailed:
hgs
parents: 3
diff changeset
   110
        return "WRT::FileWriteFailed";
hgs
parents: 3
diff changeset
   111
    case WRT::FileNotFound:
hgs
parents: 3
diff changeset
   112
        return "WRT::FileNotFound";
hgs
parents: 3
diff changeset
   113
    case WRT::InvalidDrive:
hgs
parents: 3
diff changeset
   114
        return "WRT::InvalidDrive";
hgs
parents: 3
diff changeset
   115
    case WRT::MoveFailed:
hgs
parents: 3
diff changeset
   116
        return "WRT::MoveFailed";
hgs
parents: 3
diff changeset
   117
    case WRT::DiskFull:
hgs
parents: 3
diff changeset
   118
        return "WRT::DiskFull";
hgs
parents: 3
diff changeset
   119
    case WRT::DiskError:
hgs
parents: 3
diff changeset
   120
        return "WRT::DiskError";
hgs
parents: 3
diff changeset
   121
    case WRT::TransactionFailed:
hgs
parents: 3
diff changeset
   122
        return "WRT::TransactionFailed";
hgs
parents: 3
diff changeset
   123
    case WRT::Internal:
hgs
parents: 3
diff changeset
   124
        return "WRT::Internal";
hgs
parents: 3
diff changeset
   125
    case WRT::General:
hgs
parents: 3
diff changeset
   126
        return "WRT::General";
hgs
parents: 3
diff changeset
   127
    case WRT::MaxRedirectionsReached:
hgs
parents: 3
diff changeset
   128
        return "WRT::MaxRedirectionsReached";
hgs
parents: 3
diff changeset
   129
    case WRT::InvalidDownloadDescriptor:
hgs
parents: 3
diff changeset
   130
        return "WRT::InvalidDownloadDescriptor";
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
    default:
3
hgs
parents: 0
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   139
    case WRT::DownloadEvent::Created:
hgs
parents: 3
diff changeset
   140
        return "DownloadEvent:Created";
hgs
parents: 3
diff changeset
   141
    case WRT::DownloadEvent::Started:
hgs
parents: 3
diff changeset
   142
        return "DownloadEvent::Started";
hgs
parents: 3
diff changeset
   143
    case WRT::DownloadEvent::HeadersReceived:
hgs
parents: 3
diff changeset
   144
        return "DownloadEvent::HeadersReceived";
hgs
parents: 3
diff changeset
   145
    case WRT::DownloadEvent::InProgress:
hgs
parents: 3
diff changeset
   146
        return "DownloadEvent::InProgress";
hgs
parents: 3
diff changeset
   147
    case WRT::DownloadEvent::Paused:
hgs
parents: 3
diff changeset
   148
        return "DownloadEvent::Paused";
hgs
parents: 3
diff changeset
   149
    case WRT::DownloadEvent::Completed:
hgs
parents: 3
diff changeset
   150
        return "DownloadEvent::Completed";
hgs
parents: 3
diff changeset
   151
    case WRT::DownloadEvent::Failed:
hgs
parents: 3
diff changeset
   152
        return "DownloadEvent::Failed";
hgs
parents: 3
diff changeset
   153
    case WRT::DownloadEvent::Cancelled:
hgs
parents: 3
diff changeset
   154
        return "DownloadEvent::Cancelled";
hgs
parents: 3
diff changeset
   155
    case WRT::DownloadEvent::DescriptorUpdated:
hgs
parents: 3
diff changeset
   156
        return "DownloadEvent::DescriptorUpdated";
hgs
parents: 3
diff changeset
   157
    case WRT::DownloadEvent::NetworkLoss:
hgs
parents: 3
diff changeset
   158
        return "DownloadEvent::NetworkLoss";
hgs
parents: 3
diff changeset
   159
    case WRT::DownloadEvent::Error:
hgs
parents: 3
diff changeset
   160
        return "DownloadEvent::Error";
hgs
parents: 3
diff changeset
   161
    case WRT::DownloadEvent::DescriptorReady:
hgs
parents: 3
diff changeset
   162
        return "DownloadEvent::DescriptorReady";
hgs
parents: 3
diff changeset
   163
    case WRT::DownloadEvent::LicenseAcquiring:
hgs
parents: 3
diff changeset
   164
        return "DownloadEvent::LicenseAcquiring";
hgs
parents: 3
diff changeset
   165
    case WRT::DownloadEvent::MediaRemoved:
hgs
parents: 3
diff changeset
   166
        return "DownloadEvent::MediaRemoved";
hgs
parents: 3
diff changeset
   167
    case WRT::DownloadEvent::MediaInserted:
hgs
parents: 3
diff changeset
   168
        return "DownloadEvent::MediaInserted";
hgs
parents: 3
diff changeset
   169
    case WRT::DownloadEvent::RedirectedPermanently:
hgs
parents: 3
diff changeset
   170
        return "DownloadEvent::RedirectedPermanently";
hgs
parents: 3
diff changeset
   171
    case WRT::DownloadEvent::RedirectedTemporarily:
hgs
parents: 3
diff changeset
   172
        return "DownloadEvent::RedirectedTemporarily";
hgs
parents: 3
diff changeset
   173
    case WRT::DownloadEvent::NameChanged:
hgs
parents: 3
diff changeset
   174
        return "DownloadEvent::NameChanged";
hgs
parents: 3
diff changeset
   175
    case WRT::DownloadEvent::ContentTypeChanged:
hgs
parents: 3
diff changeset
   176
        return "DownloadEvent::ContentTypeChanged";
hgs
parents: 3
diff changeset
   177
    case WRT::DownloadEvent::CreatingConnection:
hgs
parents: 3
diff changeset
   178
        return "DownloadEvent::CreatingConnection";
hgs
parents: 3
diff changeset
   179
    case WRT::DownloadEvent::ConnectionNeeded:
hgs
parents: 3
diff changeset
   180
        return "DownloadEvent::ConnectionNeeded";
hgs
parents: 3
diff changeset
   181
    case WRT::DownloadEvent::ConnectionDisconnected:
hgs
parents: 3
diff changeset
   182
        return "DownloadEvent::ConnectionDisconnected";
hgs
parents: 3
diff changeset
   183
    case WRT::DownloadEvent::RightObjectsAcquired:
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   209
    m_downloadManager = new WRT::DownloadManager(client);
hgs
parents: 3
diff changeset
   210
hgs
parents: 3
diff changeset
   211
    if (m_downloadManager->initialize() != 0) {
hgs
parents: 3
diff changeset
   212
        return;
hgs
parents: 3
diff changeset
   213
    }
hgs
parents: 3
diff changeset
   214
hgs
parents: 3
diff changeset
   215
    if (!connect(
hgs
parents: 3
diff changeset
   216
                m_downloadManager,
hgs
parents: 3
diff changeset
   217
                SIGNAL(downloadManagerEvent(DownloadManagerEvent *)),
hgs
parents: 3
diff changeset
   218
                this,
hgs
parents: 3
diff changeset
   219
                SLOT(handleDownloadManagerEvent(DownloadManagerEvent *)))) {
hgs
parents: 3
diff changeset
   220
        //;;; how to handle error?
hgs
parents: 3
diff changeset
   221
    }
hgs
parents: 3
diff changeset
   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
hgs
parents: 0
diff changeset
   264
void DownloadControllerPrivate::startDownload(const QUrl & url, const QFileInfo & info)
hgs
parents: 0
diff changeset
   265
{
12
hgs
parents: 3
diff changeset
   266
    WRT::Download * download = m_downloadManager->createDownload(url.toString());
3
hgs
parents: 0
diff changeset
   267
12
hgs
parents: 3
diff changeset
   268
    download->setAttribute(WRT::DestinationPath, info.absolutePath());
hgs
parents: 3
diff changeset
   269
    download->setAttribute(WRT::FileName, info.fileName());
3
hgs
parents: 0
diff changeset
   270
hgs
parents: 0
diff changeset
   271
    startDownload(download, url);
hgs
parents: 0
diff changeset
   272
}
hgs
parents: 0
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 0
diff changeset
   307
    DownloadProxy downloadProxy(new DownloadProxyData(download));
hgs
parents: 0
diff changeset
   308
hgs
parents: 0
diff changeset
   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
hgs
parents: 3
diff changeset
   311
    if (!connect(
hgs
parents: 3
diff changeset
   312
                download,
hgs
parents: 3
diff changeset
   313
                SIGNAL(downloadEvent(DownloadEvent *)),
hgs
parents: 3
diff changeset
   314
                this,
hgs
parents: 3
diff changeset
   315
                SLOT(handleDownloadEvent(DownloadEvent *)))) {
hgs
parents: 3
diff changeset
   316
        //;;; how to handle error?
hgs
parents: 3
diff changeset
   317
    }
hgs
parents: 3
diff changeset
   318
hgs
parents: 3
diff changeset
   319
    if (!connect(
hgs
parents: 3
diff changeset
   320
                download,
hgs
parents: 3
diff changeset
   321
                SIGNAL(downloadError(Error)),
hgs
parents: 3
diff changeset
   322
                this,
hgs
parents: 3
diff changeset
   323
                SLOT(handleDownloadError(Error)))) {
hgs
parents: 3
diff changeset
   324
        //;;; how to handle error?
hgs
parents: 3
diff changeset
   325
    }
3
hgs
parents: 0
diff changeset
   326
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   327
    download->start();
12
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   331
void DownloadControllerPrivate::handleDownloadManagerEvent(
hgs
parents: 3
diff changeset
   332
        DownloadManagerEvent * event)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
{
12
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   337
    case WRT::DownloadManagerEvent::Created:
hgs
parents: 3
diff changeset
   338
        // Instead of waiting for the DownloadManager Created event
hgs
parents: 3
diff changeset
   339
        // we emit downloadCreated in startDownload above so that we
hgs
parents: 3
diff changeset
   340
        // can add a pointer to the download created as a parameter.
hgs
parents: 3
diff changeset
   341
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
12
hgs
parents: 3
diff changeset
   343
    case WRT::DownloadManagerEvent::Removed:
hgs
parents: 3
diff changeset
   344
        if (m_downloadManager->currentDownloads().empty()) {
hgs
parents: 3
diff changeset
   345
            emit m_downloadController->downloadsCleared();
hgs
parents: 3
diff changeset
   346
        }
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   355
void DownloadControllerPrivate::handleDownloadEvent(
hgs
parents: 3
diff changeset
   356
        DownloadEvent * event)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
{
12
hgs
parents: 3
diff changeset
   358
    int id = event->id();
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
12
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   363
        qDebug() << "Cannot find download with id" << id << " for error " << event;
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 0
diff changeset
   376
    DownloadProxy downloadProxy(new DownloadProxyData(download));
hgs
parents: 0
diff changeset
   377
12
hgs
parents: 3
diff changeset
   378
    switch (event->type())
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
    {
12
hgs
parents: 3
diff changeset
   380
hgs
parents: 3
diff changeset
   381
    case WRT::DownloadEvent::Created:
hgs
parents: 3
diff changeset
   382
        // Nothing to do, we already emitted a signal to report
hgs
parents: 3
diff changeset
   383
        // creation of a new Download object from startDownload().
hgs
parents: 3
diff changeset
   384
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
12
hgs
parents: 3
diff changeset
   386
    case WRT::DownloadEvent::Started:
hgs
parents: 3
diff changeset
   387
        emit m_downloadController->downloadStarted(downloadProxy);
hgs
parents: 3
diff changeset
   388
        return;
hgs
parents: 3
diff changeset
   389
hgs
parents: 3
diff changeset
   390
    case WRT::DownloadEvent::HeadersReceived:
3
hgs
parents: 0
diff changeset
   391
        emit m_downloadController->downloadHeaderReceived(downloadProxy);
12
hgs
parents: 3
diff changeset
   392
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
12
hgs
parents: 3
diff changeset
   394
    case WRT::DownloadEvent::InProgress:
3
hgs
parents: 0
diff changeset
   395
        emit m_downloadController->downloadProgress(downloadProxy);
12
hgs
parents: 3
diff changeset
   396
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
12
hgs
parents: 3
diff changeset
   398
    case WRT::DownloadEvent::Completed:
3
hgs
parents: 0
diff changeset
   399
        emit m_downloadController->downloadFinished(downloadProxy);
12
hgs
parents: 3
diff changeset
   400
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
12
hgs
parents: 3
diff changeset
   402
    case WRT::DownloadEvent::Paused:
3
hgs
parents: 0
diff changeset
   403
        emit m_downloadController->downloadPaused(downloadProxy, error);
12
hgs
parents: 3
diff changeset
   404
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
12
hgs
parents: 3
diff changeset
   406
    case WRT::DownloadEvent::Cancelled:
3
hgs
parents: 0
diff changeset
   407
        emit m_downloadController->downloadCancelled(downloadProxy, error);
12
hgs
parents: 3
diff changeset
   408
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
12
hgs
parents: 3
diff changeset
   410
    case WRT::DownloadEvent::Failed:
3
hgs
parents: 0
diff changeset
   411
        emit m_downloadController->downloadFailed(downloadProxy, error);
12
hgs
parents: 3
diff changeset
   412
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
12
hgs
parents: 3
diff changeset
   414
    case WRT::DownloadEvent::DescriptorUpdated:
hgs
parents: 3
diff changeset
   415
        // FIXME - Update to support OMA and DRM.
hgs
parents: 3
diff changeset
   416
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
12
hgs
parents: 3
diff changeset
   418
    case WRT::DownloadEvent::NetworkLoss:
3
hgs
parents: 0
diff changeset
   419
        emit m_downloadController->downloadNetworkLoss(downloadProxy, error);
12
hgs
parents: 3
diff changeset
   420
        return;
hgs
parents: 3
diff changeset
   421
hgs
parents: 3
diff changeset
   422
    case WRT::DownloadEvent::Error:
hgs
parents: 3
diff changeset
   423
        emit m_downloadController->downloadError(downloadProxy, error);
hgs
parents: 3
diff changeset
   424
        return;
hgs
parents: 3
diff changeset
   425
hgs
parents: 3
diff changeset
   426
    case WRT::DownloadEvent::DescriptorReady:
hgs
parents: 3
diff changeset
   427
        // FIXME - Update to support OMA and DRM.
hgs
parents: 3
diff changeset
   428
        return;
hgs
parents: 3
diff changeset
   429
hgs
parents: 3
diff changeset
   430
    case WRT::DownloadEvent::LicenseAcquiring:
hgs
parents: 3
diff changeset
   431
        // FIXME - Update to support OMA and DRM.
hgs
parents: 3
diff changeset
   432
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
12
hgs
parents: 3
diff changeset
   434
    case WRT::DownloadEvent::MediaRemoved:
hgs
parents: 3
diff changeset
   435
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   436
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   437
                downloadProxy,
hgs
parents: 3
diff changeset
   438
                "Media Removed");
hgs
parents: 3
diff changeset
   439
        return;
hgs
parents: 3
diff changeset
   440
hgs
parents: 3
diff changeset
   441
    case WRT::DownloadEvent::MediaInserted:
hgs
parents: 3
diff changeset
   442
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   443
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   444
                downloadProxy,
hgs
parents: 3
diff changeset
   445
                "Media Inserted");
hgs
parents: 3
diff changeset
   446
        return;
hgs
parents: 3
diff changeset
   447
hgs
parents: 3
diff changeset
   448
    case WRT::DownloadEvent::RedirectedPermanently:
hgs
parents: 3
diff changeset
   449
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   450
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   451
                downloadProxy,
hgs
parents: 3
diff changeset
   452
                "Redirected Permanently");
hgs
parents: 3
diff changeset
   453
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
12
hgs
parents: 3
diff changeset
   455
    case WRT::DownloadEvent::RedirectedTemporarily:
hgs
parents: 3
diff changeset
   456
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   457
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   458
                downloadProxy,
hgs
parents: 3
diff changeset
   459
                "Redirected Temporarily");
hgs
parents: 3
diff changeset
   460
        return;
hgs
parents: 3
diff changeset
   461
hgs
parents: 3
diff changeset
   462
    case WRT::DownloadEvent::NameChanged:
hgs
parents: 3
diff changeset
   463
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   464
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   465
                downloadProxy,
hgs
parents: 3
diff changeset
   466
                "Name Changed");
hgs
parents: 3
diff changeset
   467
        return;
hgs
parents: 3
diff changeset
   468
hgs
parents: 3
diff changeset
   469
    case WRT::DownloadEvent::ContentTypeChanged:
hgs
parents: 3
diff changeset
   470
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   471
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   472
                downloadProxy,
hgs
parents: 3
diff changeset
   473
                "Type Changed");
hgs
parents: 3
diff changeset
   474
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
12
hgs
parents: 3
diff changeset
   476
    case WRT::DownloadEvent::CreatingConnection:
hgs
parents: 3
diff changeset
   477
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   478
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   479
                downloadProxy,
hgs
parents: 3
diff changeset
   480
                "Creating Connection");
hgs
parents: 3
diff changeset
   481
        return;
hgs
parents: 3
diff changeset
   482
hgs
parents: 3
diff changeset
   483
    case WRT::DownloadEvent::ConnectionNeeded:
hgs
parents: 3
diff changeset
   484
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   485
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   486
                downloadProxy,
hgs
parents: 3
diff changeset
   487
                "Connection Needed");
hgs
parents: 3
diff changeset
   488
        return;
hgs
parents: 3
diff changeset
   489
hgs
parents: 3
diff changeset
   490
    case WRT::DownloadEvent::ConnectionDisconnected:
hgs
parents: 3
diff changeset
   491
        // FIXME ;;; what to do?
hgs
parents: 3
diff changeset
   492
        emit m_downloadController->downloadMessage(
hgs
parents: 3
diff changeset
   493
                downloadProxy,
hgs
parents: 3
diff changeset
   494
                "Connection Disconnected");
hgs
parents: 3
diff changeset
   495
        return;
hgs
parents: 3
diff changeset
   496
hgs
parents: 3
diff changeset
   497
    case WRT::DownloadEvent::RightObjectsAcquired:
hgs
parents: 3
diff changeset
   498
        // FIXME - Update to support OMA and DRM.
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   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
hgs
parents: 3
diff changeset
   509
    // Expect the WRT::DownloadEvent::Error case in handleDownloadEvent()
hgs
parents: 3
diff changeset
   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
hgs
parents: 0
diff changeset
   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
hgs
parents: 0
diff changeset
   529
    qDebug() << "Download URL" << url;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
3
hgs
parents: 0
diff changeset
   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
hgs
parents: 3
diff changeset
   557
    const QString & /*client*/,
hgs
parents: 3
diff changeset
   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
hgs
parents: 0
diff changeset
   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
hgs
parents: 0
diff changeset
   566
    Q_UNUSED(info)
hgs
parents: 0
diff changeset
   567
hgs
parents: 0
diff changeset
   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
hgs
parents: 0
diff changeset
   572
{
hgs
parents: 0
diff changeset
   573
    QUrl url = reply->url();
hgs
parents: 0
diff changeset
   574
hgs
parents: 0
diff changeset
   575
    emit unsupportedDownload(url);
hgs
parents: 0
diff changeset
   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
hgs
parents: 0
diff changeset
   579
{
hgs
parents: 0
diff changeset
   580
    QUrl url = request.url();
hgs
parents: 0
diff changeset
   581
hgs
parents: 0
diff changeset
   582
    emit unsupportedDownload(url);
hgs
parents: 0
diff changeset
   583
}
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
12
hgs
parents: 3
diff changeset
   585
void DownloadControllerPrivate::handleDownloadManagerEvent(
hgs
parents: 3
diff changeset
   586
        DownloadManagerEvent * event)
hgs
parents: 3
diff changeset
   587
{
hgs
parents: 3
diff changeset
   588
}
hgs
parents: 3
diff changeset
   589
hgs
parents: 3
diff changeset
   590
void DownloadControllerPrivate::handleDownloadEvent(
hgs
parents: 3
diff changeset
   591
        DownloadEvent * event)
hgs
parents: 3
diff changeset
   592
{
hgs
parents: 3
diff changeset
   593
}
hgs
parents: 3
diff changeset
   594
hgs
parents: 3
diff changeset
   595
DownloadControllerPrivate::~DownloadControllerPrivate()
hgs
parents: 3
diff changeset
   596
{}
hgs
parents: 3
diff changeset
   597
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
#endif // USE_DOWNLOAD_MANAGER
3
hgs
parents: 0
diff changeset
   599
hgs
parents: 0
diff changeset
   600
bool DownloadController::handlePage(QWebPage * page)
hgs
parents: 0
diff changeset
   601
{
hgs
parents: 0
diff changeset
   602
    bool succeeded = true;
hgs
parents: 0
diff changeset
   603
hgs
parents: 0
diff changeset
   604
    // Handle click on link when the link type is not supported.
hgs
parents: 0
diff changeset
   605
    page->setForwardUnsupportedContent(true);
hgs
parents: 0
diff changeset
   606
    if (!connect(page, SIGNAL(unsupportedContent(QNetworkReply *)),
hgs
parents: 0
diff changeset
   607
            this, SLOT(startDownload(QNetworkReply *)))) {
hgs
parents: 0
diff changeset
   608
        succeeded = false;
hgs
parents: 0
diff changeset
   609
    };
hgs
parents: 0
diff changeset
   610
hgs
parents: 0
diff changeset
   611
    // Handle Save Link and Save Image requests from the context menu.
hgs
parents: 0
diff changeset
   612
    if (!connect(page, SIGNAL(downloadRequested(const QNetworkRequest &)),
hgs
parents: 0
diff changeset
   613
            this, SLOT(startDownload(const QNetworkRequest &)))) {
hgs
parents: 0
diff changeset
   614
        succeeded = false;
hgs
parents: 0
diff changeset
   615
    }
hgs
parents: 0
diff changeset
   616
hgs
parents: 0
diff changeset
   617
    return succeeded;
hgs
parents: 0
diff changeset
   618
}