emailservices/emailframework/commonlib/src/CFSMailBox.cpp
branchRCL_3
changeset 17 67369d1b217f
parent 16 b5fbb9b25d57
child 18 6b8f3b30d0ec
--- a/emailservices/emailframework/commonlib/src/CFSMailBox.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailframework/commonlib/src/CFSMailBox.cpp	Tue May 25 12:23:16 2010 +0300
@@ -21,6 +21,7 @@
 
 #include "cfsmailplugin.h"
 #include "cmrcalendarinfoimpl.h"
+#include "emailextensionuids.hrh"
 
 #include "cfsmailbox.h"
 #include "cfsmailrequestobserver.h"
@@ -844,8 +845,20 @@
     // exists. It is released in desctrucor
     if( aExtension->Uid() != KMailboxExtMrCalInfo )
         {
-        // no specialized behaviour, call base class
-        CExtendableEmail::ReleaseExtension( aExtension );
+        if( aExtension->Uid() == KEmailSettingExtensionUid )
+            {
+            // check that plugin supports requested extension.
+            if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
+                {
+                // remove extension from plugin
+                 plugin->ReleaseExtension(aExtension);            
+                }
+            }
+        else
+            {
+            // no specialized behaviour, call base class
+            CExtendableEmail::ReleaseExtension( aExtension );
+            }
         }
     else
         {
@@ -874,7 +887,8 @@
             CleanupStack::Pop(); // calInfo
             }
         }    
-    else if ( aInterfaceUid == KEmailMailboxStateExtensionUid )
+    else if ( aInterfaceUid == KEmailMailboxStateExtensionUid ||
+              aInterfaceUid == KEmailSettingExtensionUid )
         {
         if ( !extension )
             {