Exemplo n.º 1
0
void DownloadManager::downloadFinish(QNetworkReply *reply)
{
    QByteArray data = reply->readAll();
    reply->deleteLater();
    if (downloadsMap.contains(reply->request().url().toString()))
    {
        Download *download = downloadsMap.value(reply->request().url().toString());
        int downloadType = download->getType();

        if (downloadType == Download::pageType)
        {
            QString dataString(data);
            emit downloadPageFinish(download->getUrlString(), dataString, download->getPage());
        }
        else if (downloadType == Download::fileInfoType)
        {
            QString location = reply->rawHeader(QByteArray("Location"));
            QString fileName = location.split("/").last();
            addFileDownload(location,fileName);
        }
        else if (downloadType == Download::fileType)
        {
            emit downloadFileFinish(download->getUrlString(),
                                    data,
                                    download->getFileName());
        }

        downloadsManagerMap.remove(download->getUrlString());
        downloadsMap.remove(reply->request().url().toString());
        updateDownloads();
    }
}