emailuis/nmailui/src/nmviewerviewnetmanager.cpp
branchGCC_SURGE
changeset 55 cdd802add233
parent 54 997a02608b3a
equal deleted inserted replaced
28:011f79704660 55:cdd802add233
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:
    14 * Description: NMail viewer net manager implementation.
    15 *
    15 *              This class is needed to separate cid
       
    16 *              images from url-based images
    16 */
    17 */
    17 
    18 
    18 #include "nmuiheaders.h"
    19 #include "nmuiheaders.h"
    19 
    20 
    20 static const QString NmViewerViewNetManagerScheme("cid");
    21 static const QString NmViewerViewNetManagerScheme("cid");
    26 
    27 
    27 
    28 
    28 /*!
    29 /*!
    29     Constructor
    30     Constructor
    30 */
    31 */
    31 NmViewerViewNetManager::NmViewerViewNetManager()
    32 NmViewerViewNetManager::NmViewerViewNetManager(NmUiEngine &uiEngine)
    32     : QNetworkAccessManager(),
    33     : QNetworkAccessManager(),
       
    34       mUiEngine(uiEngine),
    33       mMessageView(NULL)
    35       mMessageView(NULL)
    34 {
    36 {
       
    37     NM_FUNCTION;
    35 }
    38 }
    36 
    39 
    37 /*!
    40 /*!
    38     Destructor
    41     Destructor
    39 */
    42 */
    40 NmViewerViewNetManager::~NmViewerViewNetManager()
    43 NmViewerViewNetManager::~NmViewerViewNetManager()
    41 {
    44 {
       
    45     NM_FUNCTION;
    42 }
    46 }
    43 
    47 
    44 /*!
    48 /*!
    45     Setter for view.
    49     Setter for view.
    46 */
    50 */
    47 void NmViewerViewNetManager::setView(NmViewerView *viewerView)
    51 void NmViewerViewNetManager::setView(NmViewerView *viewerView)
    48 {
    52 {
       
    53     NM_FUNCTION;
       
    54     
    49     mMessageView=viewerView;
    55     mMessageView=viewerView;
    50 }
    56 }
    51 
    57 
    52 /*!
    58 /*!
    53     createRequest
    59     createRequest
    54 */
    60 */
    55 QNetworkReply *NmViewerViewNetManager::createRequest(
    61 QNetworkReply *NmViewerViewNetManager::createRequest(
    56     Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
    62     Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
    57 {
    63 {
       
    64     NM_FUNCTION;
       
    65     
    58     QNetworkRequest myRequest(request);
    66     QNetworkRequest myRequest(request);
    59     // Set request attribute to prefer cachevar  
    67     // Set request attribute to prefer cachevar  
    60     const QVariant cacheControl((int)QNetworkRequest::PreferCache);
    68     const QVariant cacheControl((int)QNetworkRequest::PreferCache);
    61     myRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, 
    69     myRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, 
    62                          cacheControl);
    70                          cacheControl);
    63     const QUrl requestUrl = myRequest.url();
    71     const QUrl requestUrl = myRequest.url();
    64     // Check whether request is for embedded image
    72     // Check whether request is for embedded image
    65     if (mMessageView&&mMessageView->webView()&&op==QNetworkAccessManager::GetOperation
    73     if (mMessageView&&mMessageView->webView()&&op==QNetworkAccessManager::GetOperation
    66         && requestUrl.scheme()==NmViewerViewNetManagerScheme) {
    74         && requestUrl.scheme()==NmViewerViewNetManagerScheme) {
    67         NmViewerViewNetReply* reply = new NmViewerViewNetReply(
    75         QString id = requestUrl.path();
    68             mMessageView->webView()->loadResource(QTextDocument::ImageResource, requestUrl));
    76         NmId partId;
    69         reply->setOriginalRequest(myRequest);
    77         bool isFetched(false);
    70         return reply;
    78         NmMessage *message = mMessageView->message();
       
    79         if (message) {
       
    80             QVariant data = mMessageView->webView()->loadResource(
       
    81                     QTextDocument::ImageResource, requestUrl, partId, isFetched);
       
    82             NmViewerViewNetReply* reply(NULL);
       
    83             if (isFetched) {
       
    84                 reply = new NmViewerViewNetReply(data, mUiEngine);
       
    85             }
       
    86             else {
       
    87                 const NmMessageEnvelope &env = message->envelope();
       
    88                 reply = new NmViewerViewNetReply(data, mUiEngine,
       
    89                         env.mailboxId(), env.folderId(),
       
    90                         env.messageId(), partId);
       
    91             }
       
    92             reply->setOriginalRequest(myRequest);
       
    93             return reply;
    71         }
    94         }
       
    95     }
    72     // If request is not for embedded image, forward to base class
    96     // If request is not for embedded image, forward to base class
    73     return QNetworkAccessManager::createRequest(op, myRequest, outgoingData);
    97     return QNetworkAccessManager::createRequest(op, myRequest, outgoingData);
    74 }
    98 }