emailuis/nmailui/src/nmviewerviewnetmanager.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
child 47 f83bd4ae1fe3
child 54 997a02608b3a
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    26 
    26 
    27 
    27 
    28 /*!
    28 /*!
    29     Constructor
    29     Constructor
    30 */
    30 */
    31 NmViewerViewNetManager::NmViewerViewNetManager()
    31 NmViewerViewNetManager::NmViewerViewNetManager(NmUiEngine &uiEngine)
    32     : QNetworkAccessManager(),
    32     : QNetworkAccessManager(),
       
    33       mUiEngine(uiEngine),
    33       mMessageView(NULL)
    34       mMessageView(NULL)
    34 {
    35 {
       
    36     NM_FUNCTION;
    35 }
    37 }
    36 
    38 
    37 /*!
    39 /*!
    38     Destructor
    40     Destructor
    39 */
    41 */
    40 NmViewerViewNetManager::~NmViewerViewNetManager()
    42 NmViewerViewNetManager::~NmViewerViewNetManager()
    41 {
    43 {
       
    44     NM_FUNCTION;
    42 }
    45 }
    43 
    46 
    44 /*!
    47 /*!
    45     Setter for view.
    48     Setter for view.
    46 */
    49 */
    47 void NmViewerViewNetManager::setView(NmViewerView *viewerView)
    50 void NmViewerViewNetManager::setView(NmViewerView *viewerView)
    48 {
    51 {
       
    52     NM_FUNCTION;
       
    53     
    49     mMessageView=viewerView;
    54     mMessageView=viewerView;
    50 }
    55 }
    51 
    56 
    52 /*!
    57 /*!
    53     createRequest
    58     createRequest
    54 */
    59 */
    55 QNetworkReply *NmViewerViewNetManager::createRequest(
    60 QNetworkReply *NmViewerViewNetManager::createRequest(
    56     Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
    61     Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
    57 {
    62 {
       
    63     NM_FUNCTION;
       
    64     
    58     QNetworkRequest myRequest(request);
    65     QNetworkRequest myRequest(request);
    59     // Set request attribute to prefer cachevar  
    66     // Set request attribute to prefer cachevar  
    60     const QVariant cacheControl((int)QNetworkRequest::PreferCache);
    67     const QVariant cacheControl((int)QNetworkRequest::PreferCache);
    61     myRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, 
    68     myRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, 
    62                          cacheControl);
    69                          cacheControl);
    63     const QUrl requestUrl = myRequest.url();
    70     const QUrl requestUrl = myRequest.url();
    64     // Check whether request is for embedded image
    71     // Check whether request is for embedded image
    65     if (mMessageView&&mMessageView->webView()&&op==QNetworkAccessManager::GetOperation
    72     if (mMessageView&&mMessageView->webView()&&op==QNetworkAccessManager::GetOperation
    66         && requestUrl.scheme()==NmViewerViewNetManagerScheme) {
    73         && requestUrl.scheme()==NmViewerViewNetManagerScheme) {
    67         NmViewerViewNetReply* reply = new NmViewerViewNetReply(
    74         QString id = requestUrl.path();
    68             mMessageView->webView()->loadResource(QTextDocument::ImageResource, requestUrl));
    75         NmId partId;
    69         reply->setOriginalRequest(myRequest);
    76         bool isFetched = false;
    70         return reply;
    77         NmMessage *message = mMessageView->message();
       
    78         if (message) {
       
    79             QVariant data = mMessageView->webView()->loadResource(
       
    80                     QTextDocument::ImageResource, requestUrl, partId, isFetched);
       
    81             NmViewerViewNetReply* reply = NULL;
       
    82             if (isFetched) {
       
    83                 reply = new NmViewerViewNetReply(data, mUiEngine);
       
    84             }
       
    85             else  {
       
    86                 reply = new NmViewerViewNetReply(data, mUiEngine,
       
    87                         message->envelope().mailboxId(), message->envelope().folderId(),
       
    88                         message->envelope().messageId(), partId);
       
    89             }
       
    90             reply->setOriginalRequest(myRequest);
       
    91             return reply;
    71         }
    92         }
       
    93     }
    72     // If request is not for embedded image, forward to base class
    94     // If request is not for embedded image, forward to base class
    73     return QNetworkAccessManager::createRequest(op, myRequest, outgoingData);
    95     return QNetworkAccessManager::createRequest(op, myRequest, outgoingData);
    74 }
    96 }