--- a/emailuis/nmailui/src/nmviewerviewnetmanager.cpp Fri Jun 11 16:23:29 2010 +0100
+++ b/emailuis/nmailui/src/nmviewerviewnetmanager.cpp Thu Jul 22 16:30:28 2010 +0100
@@ -11,8 +11,9 @@
*
* Contributors:
*
-* Description:
-*
+* Description: NMail viewer net manager implementation.
+* This class is needed to separate cid
+* images from url-based images
*/
#include "nmuiheaders.h"
@@ -28,10 +29,12 @@
/*!
Constructor
*/
-NmViewerViewNetManager::NmViewerViewNetManager()
+NmViewerViewNetManager::NmViewerViewNetManager(NmUiEngine &uiEngine)
: QNetworkAccessManager(),
+ mUiEngine(uiEngine),
mMessageView(NULL)
{
+ NM_FUNCTION;
}
/*!
@@ -39,6 +42,7 @@
*/
NmViewerViewNetManager::~NmViewerViewNetManager()
{
+ NM_FUNCTION;
}
/*!
@@ -46,6 +50,8 @@
*/
void NmViewerViewNetManager::setView(NmViewerView *viewerView)
{
+ NM_FUNCTION;
+
mMessageView=viewerView;
}
@@ -55,6 +61,8 @@
QNetworkReply *NmViewerViewNetManager::createRequest(
Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
{
+ NM_FUNCTION;
+
QNetworkRequest myRequest(request);
// Set request attribute to prefer cachevar
const QVariant cacheControl((int)QNetworkRequest::PreferCache);
@@ -64,11 +72,27 @@
// Check whether request is for embedded image
if (mMessageView&&mMessageView->webView()&&op==QNetworkAccessManager::GetOperation
&& requestUrl.scheme()==NmViewerViewNetManagerScheme) {
- NmViewerViewNetReply* reply = new NmViewerViewNetReply(
- mMessageView->webView()->loadResource(QTextDocument::ImageResource, requestUrl));
- reply->setOriginalRequest(myRequest);
- return reply;
+ QString id = requestUrl.path();
+ NmId partId;
+ bool isFetched(false);
+ NmMessage *message = mMessageView->message();
+ if (message) {
+ QVariant data = mMessageView->webView()->loadResource(
+ QTextDocument::ImageResource, requestUrl, partId, isFetched);
+ NmViewerViewNetReply* reply(NULL);
+ if (isFetched) {
+ reply = new NmViewerViewNetReply(data, mUiEngine);
+ }
+ else {
+ const NmMessageEnvelope &env = message->envelope();
+ reply = new NmViewerViewNetReply(data, mUiEngine,
+ env.mailboxId(), env.folderId(),
+ env.messageId(), partId);
+ }
+ reply->setOriginalRequest(myRequest);
+ return reply;
}
+ }
// If request is not for embedded image, forward to base class
return QNetworkAccessManager::createRequest(op, myRequest, outgoingData);
}