diff -r 011f79704660 -r cdd802add233 emailuis/nmailui/src/nmviewerviewnetmanager.cpp --- 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); }