Statistics
| Branch: | Revision:

root / nativeQtClient / zipnetworkreply.cpp @ 013f9124

History | View | Annotate | Download (1.9 kB)

1
//TODO gpl?
2
3
#include "zipnetworkreply.h"
4
5
#include "odfcontainer.h"
6
7
#include <QtCore/QDebug>
8
9
ZipNetworkReply::ZipNetworkReply(QObject* parent, OdfContainer *odf, const QNetworkRequest &req, const QNetworkAccessManager::Operation op)
10
    :QNetworkReply(parent)
11
{
12
    setRequest(req);
13
    setUrl(req.url());
14
    setOperation(op);
15
    QNetworkReply::open(QIODevice::ReadOnly);
16
17
    //the name of the file within the zip
18
    QString fileName = req.url().toString(QUrl::RemoveScheme);
19
    qDebug() << fileName;
20
21
    m_file = odf->getFile(fileName, this);
22
    m_file->open(QIODevice::ReadOnly);
23
    qint64 fileSize = m_file->size();
24
    qDebug() << fileSize;
25
    m_remaining = fileSize;
26
    
27
    //setHeader(QNetworkRequest::LastModifiedHeader, fi.lastModified());
28
    setHeader(QNetworkRequest::ContentLengthHeader, fileSize);
29
30
    QMetaObject::invokeMethod(this, "metaDataChanged", Qt::QueuedConnection);
31
    QMetaObject::invokeMethod(this, "downloadProgress", Qt::QueuedConnection,
32
            Q_ARG(qint64, fileSize), Q_ARG(qint64, fileSize));
33
    QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
34
    QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
35
36
}
37
38
void ZipNetworkReply::close()
39
{
40
    QNetworkReply::close();
41
    m_file->close();
42
}
43
44
void ZipNetworkReply::abort()
45
{
46
    QNetworkReply::close();
47
    m_file->close();
48
}
49
50
qint64 ZipNetworkReply::readData(char *data, qint64 maxSize)
51
{
52
    qDebug() << "reading " << maxSize;
53
    qint64 read = m_file->read(data, maxSize);
54
    qDebug() << "read " << read;
55
    if (read > 0) {
56
        m_remaining -= read;
57
    }
58
    return read;
59
}
60
61
qint64 ZipNetworkReply::bytesAvailable() const
62
{
63
    qDebug() << "avail " << m_remaining << " + " << QNetworkReply::bytesAvailable();
64
    return m_remaining + QNetworkReply::bytesAvailable();
65
}
66
67
qint64 ZipNetworkReply::size() const
68
{
69
    qDebug() << "size " << m_file->size();
70
    return m_file->size();
71
}
72
73