emailservices/emailcommon/src/CFSMailBox.cpp
changeset 66 084b5b1f02a7
parent 62 a8c646b56683
child 68 83cc6bae1de8
equal deleted inserted replaced
62:a8c646b56683 66:084b5b1f02a7
     1 /*
     1 /*
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    38 // CFSMailBox::NewLC
    38 // CFSMailBox::NewLC
    39 // -----------------------------------------------------------------------------
    39 // -----------------------------------------------------------------------------
    40 EXPORT_C CFSMailBox* CFSMailBox::NewLC(TFSMailMsgId aMailBoxId)
    40 EXPORT_C CFSMailBox* CFSMailBox::NewLC(TFSMailMsgId aMailBoxId)
    41 {
    41 {
    42     NM_FUNCTION;
    42     NM_FUNCTION;
    43     
    43 
    44     CFSMailBox* api = new (ELeave) CFSMailBox();
    44     CFSMailBox* api = new (ELeave) CFSMailBox();
    45     CleanupStack:: PushL(api);
    45     CleanupStack:: PushL(api);
    46     api->ConstructL(aMailBoxId);
    46     api->ConstructL(aMailBoxId);
    47     return api;
    47     return api;
    48 } 
    48 }
    49 
    49 
    50 // -----------------------------------------------------------------------------
    50 // -----------------------------------------------------------------------------
    51 // CFSMailBox::NewL
    51 // CFSMailBox::NewL
    52 // -----------------------------------------------------------------------------
    52 // -----------------------------------------------------------------------------
    53 EXPORT_C CFSMailBox* CFSMailBox::NewL(TFSMailMsgId aMailBoxId)
    53 EXPORT_C CFSMailBox* CFSMailBox::NewL(TFSMailMsgId aMailBoxId)
    54 {
    54 {
    55     NM_FUNCTION;
    55     NM_FUNCTION;
    56     
    56 
    57     CFSMailBox* api =  CFSMailBox::NewLC(aMailBoxId);
    57     CFSMailBox* api =  CFSMailBox::NewLC(aMailBoxId);
    58     CleanupStack:: Pop(api);
    58     CleanupStack:: Pop(api);
    59     return api;
    59     return api;
    60 }
    60 }
    61 
    61 
    63 // CFSMailBox::CFSMailBox
    63 // CFSMailBox::CFSMailBox
    64 // -----------------------------------------------------------------------------
    64 // -----------------------------------------------------------------------------
    65 CFSMailBox::CFSMailBox()
    65 CFSMailBox::CFSMailBox()
    66 {
    66 {
    67     NM_FUNCTION;
    67     NM_FUNCTION;
    68     
    68 
    69     // get requesthandler pointer
    69     // get requesthandler pointer
    70     iRequestHandler = static_cast<CFSMailRequestHandler*>(Dll::Tls());
    70     iRequestHandler = static_cast<CFSMailRequestHandler*>(Dll::Tls());
    71 }
    71 }
    72 
    72 
    73 // -----------------------------------------------------------------------------
    73 // -----------------------------------------------------------------------------
    84 // CFSMailBox::ConstructL
    84 // CFSMailBox::ConstructL
    85 // -----------------------------------------------------------------------------
    85 // -----------------------------------------------------------------------------
    86 void CFSMailBox::ConstructL(TFSMailMsgId aMailBoxId)
    86 void CFSMailBox::ConstructL(TFSMailMsgId aMailBoxId)
    87 {
    87 {
    88     NM_FUNCTION;
    88     NM_FUNCTION;
    89     
    89 
    90 // <qmail>
    90 // <qmail>
    91     CFSMailBoxBase::ConstructL(aMailBoxId);
    91     CFSMailBoxBase::ConstructL(aMailBoxId);
    92 // </qmail>
    92 // </qmail>
    93 }
    93 }
    94 
    94 
    96 // CFSMailBox::GoOnlineL
    96 // CFSMailBox::GoOnlineL
    97 // -----------------------------------------------------------------------------
    97 // -----------------------------------------------------------------------------
    98 EXPORT_C void CFSMailBox::GoOnlineL()
    98 EXPORT_C void CFSMailBox::GoOnlineL()
    99     {
    99     {
   100     NM_FUNCTION;
   100     NM_FUNCTION;
   101     
   101 
   102     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   102     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   103         {
   103         {
   104         plugin->GoOnlineL( GetId() );
   104         plugin->GoOnlineL( GetId() );
   105         }
   105         }
   106     }
   106     }
   109 // CFSMailBox::GoOfflineL
   109 // CFSMailBox::GoOfflineL
   110 // -----------------------------------------------------------------------------
   110 // -----------------------------------------------------------------------------
   111 EXPORT_C void CFSMailBox::GoOfflineL()
   111 EXPORT_C void CFSMailBox::GoOfflineL()
   112     {
   112     {
   113     NM_FUNCTION;
   113     NM_FUNCTION;
   114     
   114 
   115     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   115     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   116         {
   116         {
   117         plugin->GoOfflineL( GetId() );
   117         plugin->GoOfflineL( GetId() );
   118         }
   118         }
   119         
   119     }
   120     }
       
   121 
       
   122 // -----------------------------------------------------------------------------
       
   123 // CFSMailBox::CancelSyncL
       
   124 // -----------------------------------------------------------------------------
       
   125 EXPORT_C void CFSMailBox::CancelSyncL()
       
   126     {
       
   127     NM_FUNCTION;
       
   128     
       
   129     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
       
   130         {
       
   131         plugin->CancelSyncL( GetId() );
       
   132         }
       
   133     }
       
   134 
       
   135 // -----------------------------------------------------------------------------
       
   136 // CFSMailBox::GetLastSyncStatusL
       
   137 // -----------------------------------------------------------------------------
       
   138 EXPORT_C TFSProgress CFSMailBox::GetLastSyncStatusL()
       
   139     {
       
   140     NM_FUNCTION;
       
   141     
       
   142     TFSProgress progress;
       
   143     progress.iError = EFalse;
       
   144     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
       
   145         {
       
   146         progress = plugin->GetLastSyncStatusL( GetId() );       
       
   147         }
       
   148     return progress;
       
   149     }
       
   150 
       
   151 // -----------------------------------------------------------------------------
   120 // -----------------------------------------------------------------------------
   152 // CFSMailBox::RefreshNowL
   121 // CFSMailBox::RefreshNowL
   153 // -----------------------------------------------------------------------------
   122 // -----------------------------------------------------------------------------
   154 EXPORT_C TInt CFSMailBox::RefreshNowL(
   123 EXPORT_C TInt CFSMailBox::RefreshNowL(
   155     MFSMailRequestObserver& aOperationObserver )
   124     MFSMailRequestObserver& aOperationObserver )
   156     {
   125     {
   157     NM_FUNCTION;
   126     NM_FUNCTION;
   158     
   127 
   159     TFSPendingRequest request;
   128     TFSPendingRequest request;
   160     request.iRequestId = 0;
   129     request.iRequestId = 0;
   161     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   130     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   162         {
   131         {
   163         // init asynchronous request
   132         // init asynchronous request
   178 // CFSMailBox::RefreshNowL
   147 // CFSMailBox::RefreshNowL
   179 // -----------------------------------------------------------------------------
   148 // -----------------------------------------------------------------------------
   180 EXPORT_C TInt CFSMailBox::RefreshNowL( )
   149 EXPORT_C TInt CFSMailBox::RefreshNowL( )
   181     {
   150     {
   182     NM_FUNCTION;
   151     NM_FUNCTION;
   183     
   152 
   184     TFSPendingRequest request;
   153     TFSPendingRequest request;
   185     request.iRequestId = 0;
   154     request.iRequestId = 0;
   186     MFSMailRequestObserver* observer = NULL;
   155     MFSMailRequestObserver* observer = NULL;
   187     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   156     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   188         {
   157         {
   189         // init asynchronous request
   158         // init asynchronous request
   190         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(), *observer );
   159         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(), *observer );
   191         
   160 
   192         observer = request.iObserver;
   161         observer = request.iObserver;
   193         TRAPD(err,plugin->RefreshNowL( GetId(), *observer, request.iRequestId));
   162         TRAPD(err,plugin->RefreshNowL( GetId(), *observer, request.iRequestId));
   194         if(err != KErrNone)
   163         if(err != KErrNone)
   195             {
   164             {
   196             iRequestHandler->CompleteRequest(request.iRequestId);
   165             iRequestHandler->CompleteRequest(request.iRequestId);
   204 // CFSMailBox::CreateMessageToSend
   173 // CFSMailBox::CreateMessageToSend
   205 // -----------------------------------------------------------------------------
   174 // -----------------------------------------------------------------------------
   206 EXPORT_C CFSMailMessage* CFSMailBox::CreateMessageToSend( )
   175 EXPORT_C CFSMailMessage* CFSMailBox::CreateMessageToSend( )
   207 {
   176 {
   208     NM_FUNCTION;
   177     NM_FUNCTION;
   209     
   178 
   210     CFSMailMessage* message(NULL);
   179     CFSMailMessage* message(NULL);
   211     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   180     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   212         {
   181         {
   213         TRAPD(err,message = plugin->CreateMessageToSendL( GetId() ));
   182         TRAPD(err,message = plugin->CreateMessageToSendL( GetId() ));
   214         if(err != KErrNone)
   183         if(err != KErrNone)
   225 // -----------------------------------------------------------------------------
   194 // -----------------------------------------------------------------------------
   226 EXPORT_C TInt CFSMailBox::CreateMessageToSendL(
   195 EXPORT_C TInt CFSMailBox::CreateMessageToSendL(
   227         MFSMailRequestObserver& aOperationObserver )
   196         MFSMailRequestObserver& aOperationObserver )
   228     {
   197     {
   229     NM_FUNCTION;
   198     NM_FUNCTION;
   230     
   199 
   231     TFSPendingRequest request;
   200     TFSPendingRequest request;
   232     
   201 
   233     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   202     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   234     
   203 
   235     if ( plugin )
   204     if ( plugin )
   236         {
   205         {
   237         // init asynchronous request
   206         // init asynchronous request
   238         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   207         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   239                                                       aOperationObserver );
   208                                                       aOperationObserver );
   240 
   209 
   241         MFSMailRequestObserver* observer = request.iObserver;
   210         MFSMailRequestObserver* observer = request.iObserver;
   242 
   211 
   243         TRAPD( err, plugin->CreateMessageToSendL( 
   212         TRAPD( err, plugin->CreateMessageToSendL(
   244             GetId(), *observer, request.iRequestId ) );
   213             GetId(), *observer, request.iRequestId ) );
   245 
   214 
   246         if( err != KErrNone )
   215         if( err != KErrNone )
   247             {
   216             {
   248             iRequestHandler->CompleteRequest( request.iRequestId );
   217             iRequestHandler->CompleteRequest( request.iRequestId );
   249             User::Leave( err );
   218             User::Leave( err );
   250             }
   219             }
   251         }    
   220         }
   252     else
   221     else
   253         {
   222         {
   254         User::Leave( KErrNotFound );
   223         User::Leave( KErrNotFound );
   255         }
   224         }
   256     
   225 
   257     return request.iRequestId;
   226     return request.iRequestId;
   258     }
   227     }
   259 // </qmail>
   228 // </qmail>
   260 
   229 
   261 //<qmail>
   230 //<qmail>
   262 EXPORT_C int CFSMailBox::UpdateMessageFlagsL( 
   231 EXPORT_C int CFSMailBox::UpdateMessageFlagsL(
   263     const TFSMailMsgId aMailboxId,
   232     const TFSMailMsgId aMailboxId,
   264     RPointerArray<CFSMailMessage> &messages,
   233     RPointerArray<CFSMailMessage> &messages,
   265     MFSMailRequestObserver& aOperationObserver)
   234     MFSMailRequestObserver& aOperationObserver)
   266 {
   235 {
   267     NM_FUNCTION;
   236     NM_FUNCTION;
   268     
   237 
   269     Q_UNUSED(aMailboxId);
   238     Q_UNUSED(aMailboxId);
   270     TFSPendingRequest request;
   239     TFSPendingRequest request;
   271         
   240 
   272     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   241     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   273     
   242 
   274     if ( plugin )
   243     if ( plugin )
   275         {
   244         {
   276         // init asynchronous request
   245         // init asynchronous request
   277         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   246         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   278                                                       aOperationObserver );
   247                                                       aOperationObserver );
   279 
   248 
   280         MFSMailRequestObserver* observer = request.iObserver;
   249         MFSMailRequestObserver* observer = request.iObserver;
   281 
   250 
   282         TRAPD( err, plugin->StoreMessagesL( 
   251         TRAPD( err, plugin->StoreMessagesL(
   283                 GetId(), 
   252                 GetId(),
   284                 messages,
   253                 messages,
   285                 *observer, request.iRequestId ) );
   254                 *observer, request.iRequestId ) );
   286 
   255 
   287         if( err != KErrNone )
   256         if( err != KErrNone )
   288             {
   257             {
   292         }
   261         }
   293     else
   262     else
   294         {
   263         {
   295         User::Leave( KErrNotFound );
   264         User::Leave( KErrNotFound );
   296         }
   265         }
   297     
   266 
   298     return request.iRequestId;
   267     return request.iRequestId;
   299     
   268 
   300 }
   269 }
   301 //</qmail>
   270 //</qmail>
   302 
   271 
   303 // -----------------------------------------------------------------------------
   272 // -----------------------------------------------------------------------------
   304 // CFSMailBox::CreateForwardMessage
   273 // CFSMailBox::CreateForwardMessage
   305 // -----------------------------------------------------------------------------
   274 // -----------------------------------------------------------------------------
   306 EXPORT_C CFSMailMessage* CFSMailBox::CreateForwardMessage(  TFSMailMsgId aOriginalMessageId,
   275 EXPORT_C CFSMailMessage* CFSMailBox::CreateForwardMessage(  TFSMailMsgId aOriginalMessageId,
   307                                                             const TDesC& aHeaderDescriptor )
   276                                                             const TDesC& aHeaderDescriptor )
   308 {
   277 {
   309     NM_FUNCTION;
   278     NM_FUNCTION;
   310     
   279 
   311     CFSMailMessage* message(NULL);
   280     CFSMailMessage* message(NULL);
   312     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   281     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   313         {
   282         {
   314         TRAPD(err,message = plugin->CreateForwardMessageL( GetId(), 
   283         TRAPD(err,message = plugin->CreateForwardMessageL( GetId(),
   315                                                                 aOriginalMessageId,
   284                                                                 aOriginalMessageId,
   316                                                                 aHeaderDescriptor ));
   285                                                                 aHeaderDescriptor ));
   317         if(err != KErrNone)
   286         if(err != KErrNone)
   318             {
   287             {
   319             message = NULL;
   288             message = NULL;
   329 EXPORT_C TInt CFSMailBox::CreateForwardMessageL( const TFSMailMsgId aOriginalMessageId,
   298 EXPORT_C TInt CFSMailBox::CreateForwardMessageL( const TFSMailMsgId aOriginalMessageId,
   330                         MFSMailRequestObserver& aOperationObserver,
   299                         MFSMailRequestObserver& aOperationObserver,
   331                         const TDesC& aHeaderDescriptor )
   300                         const TDesC& aHeaderDescriptor )
   332     {
   301     {
   333     NM_FUNCTION;
   302     NM_FUNCTION;
   334     
   303 
   335     TFSPendingRequest request;
   304     TFSPendingRequest request;
   336     
   305 
   337     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   306     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   338     
   307 
   339     if ( plugin )
   308     if ( plugin )
   340         {
   309         {
   341         // init asynchronous request
   310         // init asynchronous request
   342         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   311         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   343                                                       aOperationObserver );
   312                                                       aOperationObserver );
   344 
   313 
   345         MFSMailRequestObserver* observer = request.iObserver;
   314         MFSMailRequestObserver* observer = request.iObserver;
   346 
   315 
   347         TRAPD( err, plugin->CreateForwardMessageL( 
   316         TRAPD( err, plugin->CreateForwardMessageL(
   348             GetId(), aOriginalMessageId, *observer, request.iRequestId, aHeaderDescriptor ) );
   317             GetId(), aOriginalMessageId, *observer, request.iRequestId, aHeaderDescriptor ) );
   349 
   318 
   350         if( err != KErrNone )
   319         if( err != KErrNone )
   351             {
   320             {
   352             iRequestHandler->CompleteRequest( request.iRequestId );
   321             iRequestHandler->CompleteRequest( request.iRequestId );
   353             User::Leave( err );
   322             User::Leave( err );
   354             }
   323             }
   355         }    
   324         }
   356     else
   325     else
   357         {
   326         {
   358         User::Leave( KErrNotFound );
   327         User::Leave( KErrNotFound );
   359         }
   328         }
   360     
   329 
   361     return request.iRequestId;
   330     return request.iRequestId;
   362     }
   331     }
   363 // </qmail>
   332 // </qmail>
   364 
   333 
   365 // -----------------------------------------------------------------------------
   334 // -----------------------------------------------------------------------------
   368 EXPORT_C CFSMailMessage* CFSMailBox::CreateReplyMessage( TFSMailMsgId aOriginalMessageId,
   337 EXPORT_C CFSMailMessage* CFSMailBox::CreateReplyMessage( TFSMailMsgId aOriginalMessageId,
   369                                                          TBool aReplyToAll,
   338                                                          TBool aReplyToAll,
   370                                                          const TDesC& aHeaderDescriptor )
   339                                                          const TDesC& aHeaderDescriptor )
   371 {
   340 {
   372     NM_FUNCTION;
   341     NM_FUNCTION;
   373     
   342 
   374     CFSMailMessage* message = NULL;
   343     CFSMailMessage* message = NULL;
   375     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   344     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   376         {
   345         {
   377         TRAPD(err,message = plugin->CreateReplyMessageL( GetId(),
   346         TRAPD(err,message = plugin->CreateReplyMessageL( GetId(),
   378                                                             aOriginalMessageId,
   347                                                             aOriginalMessageId,
   394                                       const TBool aReplyToAll,
   363                                       const TBool aReplyToAll,
   395                                       MFSMailRequestObserver& aOperationObserver,
   364                                       MFSMailRequestObserver& aOperationObserver,
   396                                       const TDesC& aHeaderDescriptor )
   365                                       const TDesC& aHeaderDescriptor )
   397 {
   366 {
   398     NM_FUNCTION;
   367     NM_FUNCTION;
   399     
   368 
   400     TFSPendingRequest request;
   369     TFSPendingRequest request;
   401     
   370 
   402     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   371     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
   403     
   372 
   404     if ( plugin )
   373     if ( plugin )
   405         {
   374         {
   406         // init asynchronous request
   375         // init asynchronous request
   407         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   376         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   408                                                       aOperationObserver );
   377                                                       aOperationObserver );
   409 
   378 
   410         MFSMailRequestObserver* observer = request.iObserver;
   379         MFSMailRequestObserver* observer = request.iObserver;
   411 
   380 
   412         TRAPD( err, plugin->CreateReplyMessageL( 
   381         TRAPD( err, plugin->CreateReplyMessageL(
   413             GetId(), aOriginalMessageId, aReplyToAll, *observer, request.iRequestId, aHeaderDescriptor ) );
   382             GetId(), aOriginalMessageId, aReplyToAll, *observer, request.iRequestId, aHeaderDescriptor ) );
   414 
   383 
   415         if( err != KErrNone )
   384         if( err != KErrNone )
   416             {
   385             {
   417             iRequestHandler->CompleteRequest( request.iRequestId );
   386             iRequestHandler->CompleteRequest( request.iRequestId );
   418             User::Leave( err );
   387             User::Leave( err );
   419             }
   388             }
   420         }    
   389         }
   421     else
   390     else
   422         {
   391         {
   423         User::Leave( KErrNotFound );
   392         User::Leave( KErrNotFound );
   424         }
   393         }
   425     
   394 
   426     return request.iRequestId;
   395     return request.iRequestId;
   427 }
   396 }
   428 // </qmail>
   397 // </qmail>
   429 
   398 
   430 // -----------------------------------------------------------------------------
   399 // -----------------------------------------------------------------------------
   431 // CFSMailBox::GetStandardFolderId
   400 // CFSMailBox::GetStandardFolderId
   432 // -----------------------------------------------------------------------------
   401 // -----------------------------------------------------------------------------
   433 EXPORT_C TFSMailMsgId CFSMailBox::GetStandardFolderId(TFSFolderType aFolderType)
   402 EXPORT_C TFSMailMsgId CFSMailBox::GetStandardFolderId(TFSFolderType aFolderType)
   434 {
   403 {
   435     NM_FUNCTION;
   404     NM_FUNCTION;
   436     
   405 
   437     TFSMailMsgId folderId;
   406     TFSMailMsgId folderId;
   438     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   407     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   439         {
   408         {
   440         TRAPD(err, folderId = plugin->GetStandardFolderIdL(GetId(), aFolderType ));
   409         TRAPD(err, folderId = plugin->GetStandardFolderIdL(GetId(), aFolderType ));
   441         if(err != KErrNone)
   410         if(err != KErrNone)
   450 // CFSMailBox::SendMessageL
   419 // CFSMailBox::SendMessageL
   451 // -----------------------------------------------------------------------------
   420 // -----------------------------------------------------------------------------
   452 EXPORT_C void CFSMailBox::SendMessageL( CFSMailMessage& aMessage )
   421 EXPORT_C void CFSMailBox::SendMessageL( CFSMailMessage& aMessage )
   453     {
   422     {
   454     NM_FUNCTION;
   423     NM_FUNCTION;
   455     
   424 
   456     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   425     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   457         {
   426         {
   458         // <qmail> Removed UpdateMrusL. </qmail>
   427         // <qmail> Removed UpdateMrusL. </qmail>
   459         plugin->SendMessageL( aMessage );
   428         plugin->SendMessageL( aMessage );
   460         }
   429         }
   507 // -----------------------------------------------------------------------------
   476 // -----------------------------------------------------------------------------
   508 EXPORT_C void CFSMailBox::ListFolders(  TFSMailMsgId aFolder,
   477 EXPORT_C void CFSMailBox::ListFolders(  TFSMailMsgId aFolder,
   509                                         RPointerArray<CFSMailFolder>& aFolderList)
   478                                         RPointerArray<CFSMailFolder>& aFolderList)
   510 {
   479 {
   511     NM_FUNCTION;
   480     NM_FUNCTION;
   512     
   481 
   513     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   482     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   514     {
   483     {
   515         TRAPD(err, plugin->ListFoldersL(GetId(),aFolder,aFolderList));
   484         TRAPD(err, plugin->ListFoldersL(GetId(),aFolder,aFolderList));
   516         if(err != KErrNone)
   485         if(err != KErrNone)
   517             {
   486             {
   522 
   491 
   523 // -----------------------------------------------------------------------------
   492 // -----------------------------------------------------------------------------
   524 // CFSMailBox::ListFolders
   493 // CFSMailBox::ListFolders
   525 // -----------------------------------------------------------------------------
   494 // -----------------------------------------------------------------------------
   526 EXPORT_C RPointerArray<CFSMailFolder>& CFSMailBox::ListFolders( )
   495 EXPORT_C RPointerArray<CFSMailFolder>& CFSMailBox::ListFolders( )
   527 {   
   496 {
   528     NM_FUNCTION;
   497     NM_FUNCTION;
   529     
   498 
   530     iFolders.ResetAndDestroy();
   499     iFolders.ResetAndDestroy();
   531     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   500     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   532     {
   501     {
   533         TRAPD(err,plugin->ListFoldersL(GetId(),iFolders));
   502         TRAPD(err,plugin->ListFoldersL(GetId(),iFolders));
   534         if(err != KErrNone)
   503         if(err != KErrNone)
   539 
   508 
   540     return iFolders;
   509     return iFolders;
   541 }
   510 }
   542 
   511 
   543 // -----------------------------------------------------------------------------
   512 // -----------------------------------------------------------------------------
   544 // CFSMailBox::GetBrandingIdL
       
   545 // -----------------------------------------------------------------------------
       
   546 EXPORT_C TDesC& CFSMailBox::GetBrandingIdL( )
       
   547 {
       
   548     NM_FUNCTION;
       
   549 	if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
       
   550         {
       
   551         TDesC& result = plugin->GetBrandingIdL( GetId() );
       
   552         return result;
       
   553         }
       
   554     
       
   555     return BrandingId();
       
   556 }
       
   557 
       
   558 // -----------------------------------------------------------------------------
       
   559 // CFSMailBox::MoveMessagesL
   513 // CFSMailBox::MoveMessagesL
   560 // -----------------------------------------------------------------------------
   514 // -----------------------------------------------------------------------------
   561 EXPORT_C void CFSMailBox::MoveMessagesL( const RArray<TFSMailMsgId>& aMessageIds, 
   515 EXPORT_C void CFSMailBox::MoveMessagesL( const RArray<TFSMailMsgId>& aMessageIds,
   562                                          const TFSMailMsgId aSourceFolderId, 
   516                                          const TFSMailMsgId aSourceFolderId,
   563                                          const TFSMailMsgId aDestinationFolderId )
   517                                          const TFSMailMsgId aDestinationFolderId )
   564 {
   518 {
   565     NM_FUNCTION;
   519     NM_FUNCTION;
   566     
   520 
   567     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   521     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   568         {
   522         {
   569         plugin->MoveMessagesL(GetId(), aMessageIds, aSourceFolderId, aDestinationFolderId);
   523         plugin->MoveMessagesL(GetId(), aMessageIds, aSourceFolderId, aDestinationFolderId);
   570         }
   524         }
   571 }
   525 }
   572 
   526 
   573 // -----------------------------------------------------------------------------
   527 // -----------------------------------------------------------------------------
   574 // CFSMailBox::MoveMessagesL
   528 // CFSMailBox::MoveMessagesL
   575 // -----------------------------------------------------------------------------
   529 // -----------------------------------------------------------------------------
   576 EXPORT_C TInt CFSMailBox::MoveMessagesL( MFSMailRequestObserver& aOperationObserver,
   530 EXPORT_C TInt CFSMailBox::MoveMessagesL( MFSMailRequestObserver& aOperationObserver,
   577                                          const RArray<TFSMailMsgId>& aMessageIds, 
   531                                          const RArray<TFSMailMsgId>& aMessageIds,
   578                                          const TFSMailMsgId aSourceFolderId, 
   532                                          const TFSMailMsgId aSourceFolderId,
   579                                          const TFSMailMsgId aDestinationFolderId )
   533                                          const TFSMailMsgId aDestinationFolderId )
   580 {
   534 {
   581     NM_FUNCTION;
   535     NM_FUNCTION;
   582     
   536 
   583     TFSPendingRequest request;
   537     TFSPendingRequest request;
   584     request.iRequestId = 0;
   538     request.iRequestId = 0;
   585     if( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
   539     if( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
   586         {
   540         {
   587         // init asynchronous request
   541         // init asynchronous request
   588         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   542         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
   589                                                         aOperationObserver );
   543                                                         aOperationObserver );
   590         plugin->MoveMessagesL(
   544         plugin->MoveMessagesL(
   591             GetId(), 
   545             GetId(),
   592             aMessageIds, 
   546             aMessageIds,
   593             aSourceFolderId, 
   547             aSourceFolderId,
   594             aDestinationFolderId, 
   548             aDestinationFolderId,
   595             aOperationObserver, 
   549             aOperationObserver,
   596             request.iRequestId );
   550             request.iRequestId );
   597         }
   551         }
   598     return request.iRequestId;
   552     return request.iRequestId;
   599 }
   553 }
   600 
   554 
   601 // -----------------------------------------------------------------------------
   555 // -----------------------------------------------------------------------------
   602 // CFSMailBox::CopyMessagesL
   556 // CFSMailBox::CopyMessagesL
   603 // -----------------------------------------------------------------------------
   557 // -----------------------------------------------------------------------------
   604 EXPORT_C void CFSMailBox::CopyMessagesL( const RArray<TFSMailMsgId>& aMessageIds, 
   558 EXPORT_C void CFSMailBox::CopyMessagesL( const RArray<TFSMailMsgId>& aMessageIds,
   605                                          RArray<TFSMailMsgId>& aNewMessages, 
   559                                          RArray<TFSMailMsgId>& aNewMessages,
   606                                          const TFSMailMsgId aSourceFolderId, 
   560                                          const TFSMailMsgId aSourceFolderId,
   607                                          const TFSMailMsgId aDestinationFolderId )
   561                                          const TFSMailMsgId aDestinationFolderId )
   608 {
   562 {
   609     NM_FUNCTION;
   563     NM_FUNCTION;
   610     
   564 
   611     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   565     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   612         {
   566         {
   613         plugin->CopyMessagesL(GetId(), aMessageIds, aNewMessages,
   567         plugin->CopyMessagesL(GetId(), aMessageIds, aNewMessages,
   614                                 aSourceFolderId, aDestinationFolderId );    
   568                                 aSourceFolderId, aDestinationFolderId );
   615         }
   569         }
   616 }
   570 }
   617     
   571 
   618 // -----------------------------------------------------------------------------
   572 // -----------------------------------------------------------------------------
   619 // CFSMailBox::SearchL
   573 // CFSMailBox::SearchL
   620 // -----------------------------------------------------------------------------
   574 // -----------------------------------------------------------------------------
   621 EXPORT_C void CFSMailBox::SearchL( const RPointerArray<TDesC>& aSearchStrings,
   575 EXPORT_C void CFSMailBox::SearchL( const RPointerArray<TDesC>& aSearchStrings,
   622                                    const TFSMailSortCriteria& aSortCriteria,
   576                                    const TFSMailSortCriteria& aSortCriteria,
   623                                    MFSMailBoxSearchObserver& aSearchObserver )
   577                                    MFSMailBoxSearchObserver& aSearchObserver )
   624     {
   578     {
   625     NM_FUNCTION;
   579     NM_FUNCTION;
   626     
   580 
   627     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   581     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   628         {
   582         {
   629 
   583 
   630         // get mailbox folder list
   584         // get mailbox folder list
   631         iFolders.ResetAndDestroy();
   585         iFolders.ResetAndDestroy();
   632         plugin->ListFoldersL(GetId(),iFolders);
   586         plugin->ListFoldersL(GetId(),iFolders);
   633 
   587 
   634         TFSMailMsgId draftsFolderId = GetStandardFolderId( EFSDraftsFolder );
   588         TFSMailMsgId draftsFolderId = GetStandardFolderId( EFSDraftsFolder );
   635         TFSMailMsgId outboxId = GetStandardFolderId( EFSOutbox );
   589         TFSMailMsgId outboxId = GetStandardFolderId( EFSOutbox );
   636         
   590 
   637         // remove outbox, drafts folder from folder list
   591         // remove outbox, drafts folder from folder list
   638         RArray<TFSMailMsgId> folderIds;
   592         RArray<TFSMailMsgId> folderIds;
   639         CleanupClosePushL( folderIds );  
   593         CleanupClosePushL( folderIds );
   640         for(TInt i=0;i<iFolders.Count();i++)
   594         for(TInt i=0;i<iFolders.Count();i++)
   641         {
   595         {
   642             TFSMailMsgId id = iFolders[i]->GetFolderId();
   596             TFSMailMsgId id = iFolders[i]->GetFolderId();
   643             if( id != draftsFolderId && id != outboxId )
   597             if( id != draftsFolderId && id != outboxId )
   644             {
   598             {
   645                 folderIds.AppendL(id);
   599                 folderIds.AppendL(id);
   646             }
   600             }
   647         }
   601         }
   648         
   602 
   649         // start search
   603         // start search
   650         plugin->SearchL( GetId(), folderIds, aSearchStrings, aSortCriteria, aSearchObserver );
   604         plugin->SearchL( GetId(), folderIds, aSearchStrings, aSortCriteria, aSearchObserver );
   651         CleanupStack::PopAndDestroy( &folderIds );
   605         CleanupStack::PopAndDestroy( &folderIds );
   652         }
   606         }
   653     }
   607     }
   656 // CFSMailBox::CancelSearch
   610 // CFSMailBox::CancelSearch
   657 // -----------------------------------------------------------------------------
   611 // -----------------------------------------------------------------------------
   658 EXPORT_C void CFSMailBox::CancelSearch()
   612 EXPORT_C void CFSMailBox::CancelSearch()
   659     {
   613     {
   660     NM_FUNCTION;
   614     NM_FUNCTION;
   661     
   615 
   662     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   616     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   663         {
   617         {
   664         plugin->CancelSearch( GetId() );
   618         plugin->CancelSearch( GetId() );
   665         }
   619         }
   666     }
   620     }
   669 // CFSMailBox::ClearSearchResultCache
   623 // CFSMailBox::ClearSearchResultCache
   670 // -----------------------------------------------------------------------------
   624 // -----------------------------------------------------------------------------
   671 EXPORT_C void CFSMailBox::ClearSearchResultCache()
   625 EXPORT_C void CFSMailBox::ClearSearchResultCache()
   672     {
   626     {
   673     NM_FUNCTION;
   627     NM_FUNCTION;
   674     
   628 
   675     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   629     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
   676         {
   630         {
   677         plugin->ClearSearchResultCache( GetId() );
   631         plugin->ClearSearchResultCache( GetId() );
   678         }
   632         }
   679     }
   633     }
   682 // CFSMailBox::CurrentSyncState
   636 // CFSMailBox::CurrentSyncState
   683 // -----------------------------------------------------------------------------
   637 // -----------------------------------------------------------------------------
   684 EXPORT_C TSSMailSyncState CFSMailBox::CurrentSyncState() const
   638 EXPORT_C TSSMailSyncState CFSMailBox::CurrentSyncState() const
   685     {
   639     {
   686     NM_FUNCTION;
   640     NM_FUNCTION;
   687     
   641 
   688     TSSMailSyncState syncState(Idle);
   642     TSSMailSyncState syncState(Idle);
   689     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
   643     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
   690         {
   644         {
   691         syncState = plugin->CurrentSyncState( GetId() );
   645         syncState = plugin->CurrentSyncState( GetId() );
   692         }
   646         }
   693     return syncState;
   647     return syncState;
   694     }
   648     }
   695 
   649 
   696 
       
   697 // -----------------------------------------------------------------------------
   650 // -----------------------------------------------------------------------------
   698 // CFSMailBox::GetMailBoxStatus
   651 // CFSMailBox::GetMailBoxStatus
   699 // -----------------------------------------------------------------------------
   652 // -----------------------------------------------------------------------------
   700 EXPORT_C TFSMailBoxStatus CFSMailBox::GetMailBoxStatus()
   653 EXPORT_C TFSMailBoxStatus CFSMailBox::GetMailBoxStatus()
   701 {
   654 {
   702     NM_FUNCTION;
   655     NM_FUNCTION;
   703     
   656 
   704     TFSMailBoxStatus status(EFSMailBoxOffline);
   657     TFSMailBoxStatus status(EFSMailBoxOffline);
   705     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId() ) )
   658     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId() ) )
   706     {
   659     {
   707         status = plugin->GetMailBoxStatus( GetId() );
   660         status = plugin->GetMailBoxStatus( GetId() );
   708     }
   661     }
   709     return status;
   662     return status;
   710 }
   663 }
   711 
   664 
   712 
       
   713 
       
   714 // -----------------------------------------------------------------------------
   665 // -----------------------------------------------------------------------------
   715 // CFSMailBox::ReleaseExtension
   666 // CFSMailBox::ReleaseExtension
   716 // -----------------------------------------------------------------------------
   667 // -----------------------------------------------------------------------------
   717 EXPORT_C void CFSMailBox::ReleaseExtension( CEmailExtension* aExtension )
   668 EXPORT_C void CFSMailBox::ReleaseExtension( CEmailExtension* aExtension )
   718     {
   669     {
   719     NM_FUNCTION;
   670     NM_FUNCTION;
   720 	// <qmail> Not using KMailboxExtMrCalInfo
   671 	// <qmail> Not using KMailboxExtMrCalInfo
   721     
   672 
   722     // no specialized behaviour, call base class
   673     // no specialized behaviour, call base class
   723     CExtendableEmail::ReleaseExtension( aExtension );
   674     CExtendableEmail::ReleaseExtension( aExtension );
   724 	// </qmail>
   675 	// </qmail>
   725     }
   676     }
   726     
   677 
   727 // -----------------------------------------------------------------------------
   678 // -----------------------------------------------------------------------------
   728 // CFSMailBox::ExtensionL
   679 // CFSMailBox::ExtensionL
   729 // -----------------------------------------------------------------------------
   680 // -----------------------------------------------------------------------------
   730 EXPORT_C CEmailExtension* CFSMailBox::ExtensionL( const TUid& aInterfaceUid )
   681 EXPORT_C CEmailExtension* CFSMailBox::ExtensionL( const TUid& aInterfaceUid )
   731     {
   682     {
   732     NM_FUNCTION;
   683     NM_FUNCTION;
   733     
   684 
   734     CEmailExtension* extension = NULL;
   685     CEmailExtension* extension = NULL;
   735 // <qmail>
   686 // <qmail>
   736     extension = CExtendableEmail::ExtensionL( aInterfaceUid );    
   687     extension = CExtendableEmail::ExtensionL( aInterfaceUid );
   737     if ( aInterfaceUid == KMailboxExtMrCalInfo )
   688     if ( aInterfaceUid == KMailboxExtMrCalInfo )
   738         {
   689         {
   739 // </qmail>        
   690 // </qmail>
   740         if ( !extension )
   691         if ( !extension )
   741             {
   692             {
   742             extension = new ( ELeave ) CMRCalendarInfoImpl();
   693             extension = new ( ELeave ) CMRCalendarInfoImpl();
   743             CleanupStack::PushL( extension );
   694             CleanupStack::PushL( extension );
   744             iExtensions.AddL( extension );
   695             iExtensions.AddL( extension );
   745             CleanupStack::Pop(); // calInfo
   696             CleanupStack::Pop(); // calInfo
   746             }
   697             }
   747         }    
   698         }
   748     else if ( aInterfaceUid == KEmailMailboxStateExtensionUid )
   699     else if ( aInterfaceUid == KEmailMailboxStateExtensionUid )
   749 		// <qmail> Not using KEmailSettingExtensionUid or KEmailConnectionStatusQueryExtensionUid </qmail>
   700 		// <qmail> Not using KEmailSettingExtensionUid or KEmailConnectionStatusQueryExtensionUid </qmail>
   750         {
   701         {
   751         if ( !extension )
   702         if ( !extension )
   752             {
   703             {
   754             if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
   705             if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
   755                 {
   706                 {
   756                 // request extension from plugin, leaves if not supported
   707                 // request extension from plugin, leaves if not supported
   757                 extension = plugin->ExtensionL( aInterfaceUid );
   708                 extension = plugin->ExtensionL( aInterfaceUid );
   758                 }
   709                 }
   759     
   710 
   760             }
   711             }
   761         }
   712         }
   762     else
   713     else
   763         {
   714         {
   764         User::Leave( KErrNotSupported );
   715         User::Leave( KErrNotSupported );