ProcessedReply
::ProcessedReply(QNetworkAccessManager
::Operation op,
const QNetworkRequest
&req,
const QByteArray &data,
QObject *parent
) : QNetworkReply(parent), m_data(data), m_pos(0)
{
setOperation(op);
setRequest(req);
emit readyRead();
emit downloadProgress(0, m_data.size());
emit downloadProgress(m_data.size(), m_data.size());
emit finished();
}
qint64 ProcessedReply::bytesAvailable() const
{
return m_data.size();
}
void ProcessedReply::close()
{
m_pos = 0;
}
qint64 ProcessedReply::readData(char *data, qint64 maxlen)
{
qint64 result = 0;
result = portion.size();
strcpy(data, portion.data());
emit readyRead();
return result;
}
void ProcessedReply::abort()
{
m_pos = 0;
}
QNetworkReply
*NetworkAccessManager
::createRequest(Operation op,
const QNetworkRequest
&req,
QIODevice *outgoingData
){
QNetworkReply *reply = QNetworkAccessManager::createRequest(op,req,outgoingData);
QString contentType
= reply
->header
(QNetworkRequest
::ContentTypeHeader).
toString();
QString fileName
= url.
toLocalFile();
bool localLpml = url.scheme()=="file" && fileName.endsWith(".lpml");
if (contentType.contains("lpml") || localLpml) {
QByteArray data
= LPMLProcessor
::instance()->handleXMLData
(reply
);
QNetworkReply *newReply = new ProcessedReply(op, req, data, this);
return newReply;
}
return reply;
}
ProcessedReply::ProcessedReply(QNetworkAccessManager::Operation op, const QNetworkRequest &req, const QByteArray &data, QObject *parent)
: QNetworkReply(parent), m_data(data), m_pos(0)
{
setOperation(op);
setRequest(req);
emit readyRead();
emit downloadProgress(0, m_data.size());
emit downloadProgress(m_data.size(), m_data.size());
emit finished();
}
qint64 ProcessedReply::bytesAvailable() const
{
return m_data.size();
}
void ProcessedReply::close()
{
QIODevice::close();
m_pos = 0;
}
qint64 ProcessedReply::readData(char *data, qint64 maxlen)
{
qint64 result = 0;
QByteArray portion = m_data.mid(m_pos,maxlen);
result = portion.size();
strcpy(data, portion.data());
emit readyRead();
return result;
}
void ProcessedReply::abort()
{
m_pos = 0;
}
QNetworkReply *NetworkAccessManager::createRequest(Operation op,const QNetworkRequest &req,QIODevice *outgoingData)
{
QNetworkReply *reply = QNetworkAccessManager::createRequest(op,req,outgoingData);
QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
QUrl url = reply->url();
QString scheme = url.scheme();
QString fileName = url.toLocalFile();
bool localLpml = url.scheme()=="file" && fileName.endsWith(".lpml");
if (contentType.contains("lpml") || localLpml) {
QByteArray data = LPMLProcessor::instance()->handleXMLData(reply);
QNetworkReply *newReply = new ProcessedReply(op, req, data, this);
return newReply;
}
return reply;
}
To copy to clipboard, switch view to plain text mode
Bookmarks