emailuis/nmailui/src/nmviewerviewnetmanager.cpp
branchGCC_SURGE
changeset 55 cdd802add233
parent 54 997a02608b3a
--- 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);
 }