ccservices/cmsservices/cmsengine/Server/src/cmsserversession.cpp
branchRCL_3
changeset 6 e8e3147d53eb
parent 5 81f8547efd4f
child 7 b3431bff8c19
--- a/ccservices/cmsservices/cmsengine/Server/src/cmsserversession.cpp	Fri Mar 12 15:41:25 2010 +0200
+++ b/ccservices/cmsservices/cmsengine/Server/src/cmsserversession.cpp	Mon Mar 15 12:39:26 2010 +0200
@@ -38,8 +38,13 @@
 #include <MVPbkContactFieldTextData.h>
 #include <MVPbkContactFieldUriData.h>
 #include <MVPbkContactFieldData.h>
-#include <cemailaccounts.h> // For finding out available email account counts
 #include <e32base.h>
+
+// For finding mailbox accounts
+#include <EmailInterfaceFactory.h>
+#include <MEmailMailbox.h>
+
+
 namespace {
 
 TBool IsFieldTypeVoipCapable( TInt aFieldTypeResId, TInt aVoipFlag )
@@ -482,25 +487,34 @@
                 }
             case VPbkFieldTypeSelectorFactory::EEmailEditorSelector:
             	{
-            	CEmailAccounts* emailAccounts = CEmailAccounts::NewLC();
-            	RArray<TPopAccount> popAccounts;
-            	RArray<TImapAccount> imapAccounts;
-            	RArray<TSmtpAccount> smtpAccounts;
+            	using namespace EmailInterface;
+
+            	CEmailInterfaceFactory* factory = CEmailInterfaceFactory::NewL();
+            	CleanupStack::PushL( factory );
+            	MEmailInterface* ifPtr = factory->InterfaceL( KEmailClientApiInterface );
+            	MEmailClientApi* clientApi = static_cast<MEmailClientApi*>( ifPtr );
+            	CleanupReleasePushL( *clientApi );
             	
-            	emailAccounts->GetPopAccountsL(popAccounts);
-            	emailAccounts->GetImapAccountsL(imapAccounts);
-            	emailAccounts->GetSmtpAccountsL(smtpAccounts);
-            	CleanupStack::PopAndDestroy(emailAccounts);
+            	RMailboxPtrArray mailboxes;
+            	TRAPD( error, clientApi->GetMailboxesL( mailboxes ););
+            	TInt count = mailboxes.Count();
             	
-            	// If no mailbox exists, set availability to false
-            	if( ( popAccounts.Count() + imapAccounts.Count() + smtpAccounts.Count() ) == 0 )
+            	// Release mailboxs before releasing clientapi
+            	for ( TInt i=0; i<count; i++ )
             		{
-            		availability = EFalse;
+            		MEmailMailbox* mailbox = mailboxes[i];
+            		mailbox->Release();
             		}
             	
-            	popAccounts.Reset();
-            	imapAccounts.Reset();
-            	smtpAccounts.Reset();
+            	mailboxes.Close();
+            	
+            	CleanupStack::PopAndDestroy( 2 ); // clientApi and factory
+            	
+            	if( count == 0 )
+            	    {
+            	    availability = EFalse;
+            	    }           					            					
+                
             	break;
             	}
             default:
@@ -810,7 +824,7 @@
             }
 		case ECmsSetVoiceCallDefault:
         	{
-        	iCmsServer->PhonebookProxyHandle().SetVoiceCallDefaultL();
+        	iServerContact->SetVoiceCallDefaultL();
         	aMessage.Complete( KErrNone );
         	break;
         	}