omadm/omadmextensions/adapters/email/src/nsmldmemailadapter.cpp
changeset 18 7d11f9a6646f
parent 4 75a71fdb4c92
child 21 c707676bf59f
--- a/omadm/omadmextensions/adapters/email/src/nsmldmemailadapter.cpp	Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3380 +0,0 @@
-/*
-* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:    DM Email Settings Adapter
- *
-*/
-
-
-
-
-#include <implementationproxy.h> // For TImplementationProxy definition
-#include <utf.h>
-#include <iapprefs.h>
-#include <smtpset.h>
-#include <pop3set.h>
-#include <imapset.h>
-#include <sysutil.h>
-#include <etelmm.h>
-
-#include <cemailaccounts.h>
-
-#include "nsmldmimpluids.h"
-#include "nsmldmemailadapter.h"
-#include "nsmldebug.h"
-#include "nsmlconstants.h"
-#include "nsmldmconst.h"
-#include "nsmldmiapmatcher.h"
-
-#ifndef __WINS__
-// This lowers the unnecessary compiler warning (armv5) to remark.
-// "Warning:  #174-D: expression has no effect..." is caused by 
-// DBG_ARGS8 macro in no-debug builds.
-#pragma diag_remark 174
-#endif
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter* CNSmlDmEmailAdapter::NewL( )
-// -----------------------------------------------------------------------------
-CNSmlDmEmailAdapter* CNSmlDmEmailAdapter::NewL(MSmlDmCallback* aDmCallback )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::NewL(): begin");
-    CNSmlDmEmailAdapter* self = new (ELeave) CNSmlDmEmailAdapter(aDmCallback);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop();
-    _DBG_FILE("CNSmlDmEmailAdapter::NewL(): end");
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::CNSmlDmEmailAdapter()
-// -----------------------------------------------------------------------------
-
-CNSmlDmEmailAdapter::CNSmlDmEmailAdapter( MSmlDmCallback* aDmCallback )
-    : CSmlDmAdapter(aDmCallback)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::CNSmlDmEmailAdapter(): begin");
-    iMsvSession = NULL;
-    _DBG_FILE("CNSmlDmEmailAdapter::CNSmlDmEmailAdapter(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::ConstructL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::ConstructL()
-    {
-    iBuffer = new (ELeave) CArrayFixFlat <TNSmlEmailSettingsElement> 
-        (KNSmlDmEmailGranularity);
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::~CNSmlDmEmailAdapter()
-// -----------------------------------------------------------------------------
-CNSmlDmEmailAdapter::~CNSmlDmEmailAdapter()
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::~CNSmlDmEmailAdapter(): begin");
-    delete iMsvSession;
-    if(iBuffer)
-        {
-        for(TInt i=0;i<iBuffer->Count();i++)
-            {
-            delete iBuffer->At(i).iMappingName;
-            delete iBuffer->At(i).iName;
-            delete iBuffer->At(i).iSmtpSettings;
-            delete iBuffer->At(i).iPop3Settings;
-            delete iBuffer->At(i).iImap4Settings;
-            delete iBuffer->At(i).iIapPref;
-            delete iBuffer->At(i).iSmtpIapPref;
-
-            if(iBuffer->At(i).iNodeBuf)
-                {
-                for(TInt j=0;j<iBuffer->At(i).iNodeBuf->Count();j++)
-                    {
-                    delete iBuffer->At(i).iNodeBuf->At(j).iLastUriSeg;
-                    delete iBuffer->At(i).iNodeBuf->At(j).iData;
-                    }
-                iBuffer->At(i).iNodeBuf->Reset();
-                delete iBuffer->At(i).iNodeBuf;
-                }
-            }
-        iBuffer->Reset();
-        delete iBuffer;
-        }
-
-    _DBG_FILE("CNSmlDmEmailAdapter::~CNSmlDmEmailAdapter(): end");
-    }
-
-// -----------------------------------------------------------------------------
-//  CNSmlDmEmailAdapter::DDFVersionL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::DDFVersionL(CBufBase& aDDFVersion)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::DDFVersionL(TDes& aDDFVersion): begin");
-    aDDFVersion.InsertL(0,KNSmlDMEmailDDFVersion);
-    _DBG_FILE("CNSmlDmEmailAdapter::DDFVersionL(TDes& aDDFVersion): end");
-    }
-
-
-// -----------------------------------------------------------------------------
-//  CNSmlDmEmailAdapter::DDFStructureL()
-//
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::DDFStructureL(MSmlDmDDFObject& aDDF)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::DDFStructureL(): begin");
-
-    TSmlDmAccessTypes accessTypesNode;
-
-    accessTypesNode.SetGet();
-
-    // Email
-    MSmlDmDDFObject& email = aDDF.AddChildObjectL(KNSmlDMEmailNodeName);
-    FillNodeInfoL(email,accessTypesNode,MSmlDmDDFObject::EOne,
-                  MSmlDmDDFObject::EPermanent,
-                  MSmlDmDDFObject::ENode,KNSmlDMEmailDescription);
-
-    accessTypesNode.SetAdd();
-    accessTypesNode.SetDelete();
-    accessTypesNode.SetReplace();
-    MSmlDmDDFObject& rtNode = email.AddChildObjectGroupL();
-
-
-    FillNodeInfoL(rtNode,accessTypesNode,MSmlDmDDFObject::EZeroOrMore,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::ENode,
-                  KNSmlDMDynamicNodeDescription);
-
-    TSmlDmAccessTypes accessTypes;
-    accessTypes.SetGet();
-    accessTypes.SetAdd();
-    accessTypes.SetReplace();
-    //displayable account name
-    MSmlDmDDFObject& name = rtNode.AddChildObjectL(KNSmlDMEmailName);
-    FillNodeInfoL(name,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMNameDescription);
-
-    //user id for email account
-    MSmlDmDDFObject& uid = rtNode.AddChildObjectL(KNSmlDMEmailUID);
-    FillNodeInfoL(uid,accessTypes,MSmlDmDDFObject::EOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMUIDDescription);
-
-    //password for email account
-    TSmlDmAccessTypes accessTypesPw;
-    accessTypesPw.SetAdd();
-    accessTypesPw.SetReplace();
-    MSmlDmDDFObject& pw = rtNode.AddChildObjectL(KNSmlDMEmailPW);
-    FillNodeInfoL(pw,accessTypesPw,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMPWDescription);
-
-    //user's email address
-    MSmlDmDDFObject& uaddr = rtNode.AddChildObjectL(KNSmlDMEmailUAddr);
-    FillNodeInfoL(uaddr,accessTypes,MSmlDmDDFObject::EOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMUAddrDescription);
-
-    //Displayable name for the user
-    MSmlDmDDFObject& uname = rtNode.AddChildObjectL(KNSmlDMEmailUName);
-    FillNodeInfoL(uname,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMUNameDescription);
-
-    //Host name for the receiving server
-    MSmlDmDDFObject& mrcv = rtNode.AddChildObjectL(KNSmlDMEmailMrcv);
-    FillNodeInfoL(mrcv,accessTypes,MSmlDmDDFObject::EOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMMrcvDescription);
-
-    //Host name for the sending server
-    MSmlDmDDFObject& msnd = rtNode.AddChildObjectL(KNSmlDMEmailMsnd);
-    FillNodeInfoL(msnd,accessTypes,MSmlDmDDFObject::EOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMMsndDescription);
-
-    //Remote mailbox protocol
-    MSmlDmDDFObject& mpro = rtNode.AddChildObjectL(KNSmlDMEmailMpro);
-    FillNodeInfoL(mpro,accessTypes,MSmlDmDDFObject::EOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMMproDescription);
-
-    //Use secure connection
-    MSmlDmDDFObject& useSecCon = rtNode.AddChildObjectL(KNSmlDMEmailUseSecCon);
-    FillNodeInfoL(useSecCon,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EBool,
-                  KNSmlDMUseSecConDescription);
-
-    //Use APop
-    MSmlDmDDFObject& useAPOP = rtNode.AddChildObjectL(KNSmlDMEmailUseAPOP);
-    FillNodeInfoL(useAPOP, accessTypes, MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EBool,
-                  KNSmlDMUseAPOPDescription );
-
-    //Use smtp authentication
-    MSmlDmDDFObject& useSauth = rtNode.AddChildObjectL(KNSmlDMEmailUseSauth);
-    FillNodeInfoL(useSauth,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EBool,
-                  KNSmlDMUseSauthDescription);
-
-    //smtp authentication user id
-    MSmlDmDDFObject& sauthUid = rtNode.AddChildObjectL(KNSmlDMEmailSauthUID);
-    FillNodeInfoL(sauthUid,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMSauthUIDDescription);
-
-    //Use smtp authentication
-    MSmlDmDDFObject& sauthPw = rtNode.AddChildObjectL(KNSmlDMEmailSauthPW);
-    FillNodeInfoL(sauthPw,accessTypesPw,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMSauthPWDescription);
-
-    //Use smtp authentication
-    MSmlDmDDFObject& ptxtSAuth = rtNode.AddChildObjectL(KNSmlDMEmailPtxtSAuth);
-    FillNodeInfoL(ptxtSAuth,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EBool,
-                  KNSmlDMPtxtSAuthDescription);
-
-    //Link to IAP
-    MSmlDmDDFObject& toNapId = rtNode.AddChildObjectL(KNSmlDMEmailToNapID);
-    FillNodeInfoL(toNapId,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMToNapIDDescription);
-
-    //Link to IAP for SMTP
-    MSmlDmDDFObject& sToNapId = rtNode.AddChildObjectL(KNSmlDMEmailSToNapID);
-    FillNodeInfoL(sToNapId,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMSToNapIDDescription);
-
-    //SSL/TLS used in SMTP
-    MSmlDmDDFObject& sUseSecCon = rtNode.
-        AddChildObjectL(KNSmlDMEmailSUseSecCon);
-    FillNodeInfoL(sUseSecCon,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EBool,
-                  KNSmlDMSUseSecConDescription);
-
-    //StartTLS used in IMAP/POP
-    MSmlDmDDFObject& useStartTls = rtNode.
-        AddChildObjectL(KNSmlDMEmailUseStartTLS);
-    FillNodeInfoL(useStartTls,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EBool,
-                  KNSmlDMUseStartTLSDescription);
-
-    //StartTLS used in SMTP
-    MSmlDmDDFObject& sUseStartTls = rtNode.
-        AddChildObjectL(KNSmlDMEmailSUseStartTLS);
-    FillNodeInfoL(sUseStartTls,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EBool,
-                  KNSmlDMSUseStartTLSDescription);
-
-    //port of IMAP/POP server
-    MSmlDmDDFObject& mrcvPort = rtNode.AddChildObjectL(KNSmlDMEmailMrcvPort);
-    FillNodeInfoL(mrcvPort,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EInt,
-                  KNSmlDMMrcvPortDescription);
-
-    //port of SMTP server
-    MSmlDmDDFObject& msndPort = rtNode.AddChildObjectL(KNSmlDMEmailMsndPort);
-    FillNodeInfoL(msndPort,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EInt,
-                  KNSmlDMMsndPortDescription);
-
-    //IMAP folder path
-    MSmlDmDDFObject& folderPath = rtNode.
-        AddChildObjectL(KNSmlDMEmailFolderPath);
-    FillNodeInfoL(folderPath,accessTypes,MSmlDmDDFObject::EZeroOrOne,
-                  MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::EChr,
-                  KNSmlDMFolderPathDescription);
-
-    _DBG_FILE("CNSmlDmEmailAdapter::DDFStructureL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-//  CNSmlDmEmailAdapter::UpdateLeafObjectL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::UpdateLeafObjectL( const TDesC8& aURI, 
-                                             const TDesC8& aLUID,
-                                             const TDesC8& aObject,
-                                             const TDesC8& /*aType*/,
-                                             const TInt aStatusRef )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): begin");
-
-    TInt index = -1;
-    TBool firstAdd = EFalse;
-
-    for(TInt i = 0; i<iBuffer->Count(); i++)
-        {
-        TPtrC8 parentUri = RemoveLastURISeg(aURI);
-        //Check Node from buffer if match
-        if(iBuffer->At(i).iMappingName->Compare(parentUri) == 0 )
-            {
-            firstAdd = ETrue;
-            index = i;
-            break;
-            }
-        }
- 	
- 	TInt luid = DesToInt(aLUID);
-			
-    if(aLUID.Length()==0 && index<0)
-        {
-        	luid = ConstructTreeL(aURI);
-        	if(luid == -1)        	
-        	{
-        		Callback().SetStatusL(aStatusRef, CSmlDmAdapter::ENotFound);
-        		_DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): end");
-        		return;
-        	}
-        }
-
-    if( OpenSessionL() != KErrNone )
-        {
-        Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-        _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): end");
-        return;
-        }
-
-    if(!firstAdd)
-        {
-
-        if(LastURISeg(aURI).Compare(KNSmlDMEmailMpro)==0)
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-            _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): end");
-            return;
-            }
-        index = -1;
-        for(TInt i=0;i<iBuffer->Count();i++)
-            {
-            if(iBuffer->At(i).iLuid == luid)
-                {
-                index = i;
-                break;
-                }
-            }
-
-        if(index<0)
-            {
-            TNSmlEmailSettingsElement newNode;
-            newNode.iImap4Settings = NULL;
-            newNode.iPop3Settings = NULL;
-            newNode.iSmtpSettings = NULL;
-            newNode.iIapPref = NULL;
-            newNode.iSmtpIapPref = NULL;
-            newNode.iLuid = luid;
-            newNode.iMappingName = aURI.AllocLC();
-            newNode.iName = HBufC::NewLC(0);
-            newNode.iNodeBuf = new (ELeave) CArrayFixFlat 
-                <TNSmlEmailCommandElement> (KNSmlDmEmailGranularity);
-            newNode.iExecuted = ETrue;
-            GetIdByLuid(newNode.iAccType, newNode.iAccId, luid); 
-            iBuffer->AppendL(newNode);
-            index = iBuffer->Count() - 1;
-            TInt err = DoRestoreSettingsL(index);
-            if(err!=KErrNone)
-                {
-                CleanupStack::PopAndDestroy(2); //newNode.iMappingName,newNode.iName
-                newNode.iMappingName = NULL;
-                newNode.iName = NULL;
-                iBuffer->At(index).iNodeBuf->Reset();
-                delete iBuffer->At(index).iNodeBuf;
-                iBuffer->Delete(index);
-                }
-            if(err==KErrNotFound)
-                {
-                Callback().SetStatusL(aStatusRef, CSmlDmAdapter::ENotFound);
-                _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): end");
-                return;
-                }
-            else if(err!=KErrNone)
-                {
-                Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-                _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): end");
-                return;
-                }
-            CleanupStack::Pop(2); //newNode.iMappingName,newNode.iName
-            }
-        TNSmlEmailCommandElement newCommand;
-        newCommand.iLastUriSeg = LastURISeg(aURI).AllocLC();
-        newCommand.iData = NULL;
-        newCommand.iStatusRef = aStatusRef;
-        newCommand.iLeaf = ETrue;
-        newCommand.iStatus = CSmlDmAdapter::EOk;
-        iBuffer->At(index).iNodeBuf->AppendL(newCommand);
-        CleanupStack::Pop(); //newCommand.iLastUriSeg
-        iBuffer->At(index).iJustFetch=EFalse;
-        DoAddLeafObjectL(newCommand.iLastUriSeg->Des(),aObject,index,
-                         iBuffer->At(index).iNodeBuf->Count()-1);
-        }
-    else
-        {
-        FirstAddLeafL(aURI,aObject,aStatusRef,index);
-        }
-
-    _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::DeleteObjectL( const TDesC8& aURI,
-//                                         const TDesC8& aLUID,
-//                                         const TInt aStatusRef )
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::DeleteObjectL( const TDesC8& aURI,
-                                         const TDesC8& aLUID,
-                                         const TInt aStatusRef )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::DeleteLeafObjectL( ): begin");
-    if(NumOfURISegs(aURI)==2)
-        {
-        if(aLUID.Length()==0)
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::ENotFound);
-            _DBG_FILE("CNSmlDmEmailAdapter::DeleteLeafObjectL( ): ENotFound end");
-            return;
-            }
-
-        TInt luid = DesToInt(aLUID);
-        TInt err = OpenSessionL();
-        if(err!=KErrNone)
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-            _DBG_FILE("CNSmlDmEmailAdapter::DeleteLeafObjectL( ): EError end");
-            return;
-            }
-        CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-        TNSmlEmailAccountType accType;
-        TInt id;
-        GetIdByLuid(accType, id, luid );
-        if( AccountExistsL( emailAccs, accType, id, -1 ) )
-            {
-            switch ( accType )
-                {
-            case EImap:
-                {
-                RArray<TImapAccount> imap4Accs;
-                CleanupClosePushL( imap4Accs );
-                emailAccs->GetImapAccountsL( imap4Accs );
-                
-                for (TInt i(0); i < imap4Accs.Count(); i++)
-                    {
-                    if ( imap4Accs[i].iImapAccountId == id  ) 
-                        {
-                        // Delete also related Smtp account
-                        TSmtpAccount relatedSmtp;
-                        emailAccs->GetSmtpAccountL( imap4Accs[i].iSmtpService, relatedSmtp );
-                        emailAccs->DeleteImapAccountL( imap4Accs[i] );
-                        emailAccs->DeleteSmtpAccountL( relatedSmtp );                       
-                        //The only email a/c in phone gettiong deleted , so delete the default sntp a/c                     
-                        if( imap4Accs.Count() == 1 )
-	                        {
-	                        TInt deferr = KErrNone;
-                        	TRAP(deferr, emailAccs->DeleteDefaultSmtpAccountL());
-                        	DBG_ARGS(_S16("CNSmlDmEmailAdapter::DeleteLeafObjectL( ): Delete default smtp account Error code %d"),deferr);
-    	                    }
-                        break;   
-                        }
-                    }
-                
-                CleanupStack::PopAndDestroy(&imap4Accs); //imap4Accs
-                
-                // If the default account was just deleted,
-                // new one needs to be set.
-                // 
-	            TSmtpAccount defaultSmtp;
-	            TInt retVal = emailAccs->DefaultSmtpAccountL( defaultSmtp );
-	            if (  retVal != KErrNone )
-	                {
-                    RArray<TImapAccount> imapAccs;
-                    CleanupClosePushL( imapAccs );
-                    emailAccs->GetImapAccountsL( imapAccs );
-                    if ( imapAccs.Count() > 0 )
-                        {
-                        TSmtpAccount relatedSmtp;
-                        emailAccs->GetSmtpAccountL( imapAccs[0].iSmtpService, relatedSmtp );
-	                    emailAccs->SetDefaultSmtpAccountL( relatedSmtp );
-                        }
-                    CleanupStack::PopAndDestroy( &imapAccs );
-                    RArray<TPopAccount> popAccounts;
-                    CleanupClosePushL( popAccounts );
-                    emailAccs->GetPopAccountsL( popAccounts );
-                    if ( popAccounts.Count() > 0 )
-                        {
-                        TSmtpAccount relatedSmtp;
-                        emailAccs->GetSmtpAccountL( popAccounts[0].iSmtpService, relatedSmtp );
-	                    emailAccs->SetDefaultSmtpAccountL( relatedSmtp );
-                        }
-                    CleanupStack::PopAndDestroy( &popAccounts );
-	                }	                
-                break;    
-                }
-                
-            case EPop:
-                {
-                RArray<TPopAccount> popAccs;
-                CleanupClosePushL( popAccs );
-                emailAccs->GetPopAccountsL( popAccs );
-                
-                for (TInt i(0); i < popAccs.Count(); i++)
-                    {
-                    if ( popAccs[i].iPopAccountId == id  ) 
-                        {
-                        // Delete also related Smtp account
-                        TSmtpAccount relatedSmtp;
-                        emailAccs->GetSmtpAccountL( popAccs[i].iSmtpService, relatedSmtp );
-                        emailAccs->DeletePopAccountL( popAccs[i] );    
-                        emailAccs->DeleteSmtpAccountL( relatedSmtp );
-                        if( popAccs.Count() == 1 )
-                        	{
-                        	TInt deferr = KErrNone;
-                        	TRAP(deferr, emailAccs->DeleteDefaultSmtpAccountL());
-                        	DBG_ARGS(_S16("CNSmlDmEmailAdapter::DeleteLeafObjectL( ): Delete default smtp account Error code %d "),deferr);
-                        	}
-                        break;                                             
-                        }
-                    }
-                
-                CleanupStack::PopAndDestroy(); //popAccs
-
-                // If the default account was just deleted,
-                // new one needs to be set.
-                // 
-	            TSmtpAccount defSmtp;
-	            TInt retVal = emailAccs->DefaultSmtpAccountL( defSmtp );
-	            if (  retVal != KErrNone )
-	                {
-                    RArray<TPopAccount> popAccounts;
-                    CleanupClosePushL( popAccounts );
-                    emailAccs->GetPopAccountsL( popAccounts );
-                    if ( popAccounts.Count() > 0 )
-                        {
-                        TSmtpAccount relatedSmtp;
-                        emailAccs->GetSmtpAccountL( popAccounts[0].iSmtpService, relatedSmtp );
-	                    emailAccs->SetDefaultSmtpAccountL( relatedSmtp );
-                        }
-                    CleanupStack::PopAndDestroy( &popAccounts );
-                    RArray<TImapAccount> imapAccs;
-                    CleanupClosePushL( imapAccs );
-                    emailAccs->GetImapAccountsL( imapAccs );
-                    if ( imapAccs.Count() > 0 )
-                        {
-                        TSmtpAccount relatedSmtp;
-                        emailAccs->GetSmtpAccountL( imapAccs[0].iSmtpService, relatedSmtp );
-	                    emailAccs->SetDefaultSmtpAccountL( relatedSmtp );
-                        }
-                    CleanupStack::PopAndDestroy( &imapAccs );                    
-	                }	                
-                break;
-                }                
-                
-            default:
-                Callback().SetStatusL(aStatusRef, CSmlDmAdapter::ENotFound);
-                break;
-                }
-
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EOk);
-            }
-        else
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::ENotFound);
-            }
-        CleanupStack::PopAndDestroy(); //emailAccs
-        }
-    else
-        {
-        Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-        }
-
-    _DBG_FILE("CNSmlDmEmailAdapter::DeleteLeafObjectL( ): end");
-    }
-
-// -----------------------------------------------------------------------------
-//  CNSmlDmEmailAdapter::FetchLeafObjectL( const TDesC8& aURI,
-//                                            const TDesC8& aLUID,
-//                                            const TDesC8& aType,
-//                                            const TInt aResultsRef,
-//                                            const TInt aStatusRef )
-//  
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::FetchLeafObjectL( const TDesC8& aURI,
-                                            const TDesC8& aLUID,
-                                            const TDesC8& aType,
-                                            const TInt aResultsRef,
-                                            const TInt aStatusRef )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectL(): begin");
-		
-	TInt luid = DesToInt(aLUID);	
-			
-    if(aLUID.Length()==0)
-        {
-        	luid = ConstructTreeL(aURI);
-        	if(luid == -1)        	
-        	{
-        		Callback().SetStatusL(aStatusRef, CSmlDmAdapter::ENotFound);
-        		_DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectL(): ENotFound end");
-        		return;
-        	}
-        }
-    if( OpenSessionL() != KErrNone )
-        {
-        Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-        _DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectL(): EError end");
-        return;
-        }
-
-    TInt index  = -1;
-    for(TInt i=0;i<iBuffer->Count();i++)
-        {
-        if(iBuffer->At(i).iLuid == luid)
-            {
-            index = i;
-            break;
-            }
-        }
-
-    if(index<0)
-        {
-        TNSmlEmailSettingsElement newNode;
-        newNode.iImap4Settings = NULL;
-        newNode.iPop3Settings = NULL;
-        newNode.iSmtpSettings = NULL;
-        newNode.iIapPref = NULL;
-        newNode.iSmtpIapPref = NULL;
-        newNode.iLuid = luid;
-        newNode.iMappingName = aURI.AllocLC();
-        newNode.iName = HBufC::NewLC(0);
-        newNode.iNodeBuf = new (ELeave)
-            CArrayFixFlat <TNSmlEmailCommandElement> (KNSmlDmEmailGranularity);
-        newNode.iExecuted = ETrue;
-        newNode.iJustFetch = ETrue;
-        GetIdByLuid(newNode.iAccType, newNode.iAccId, luid);
-        iBuffer->AppendL(newNode);
-        index = iBuffer->Count() - 1;
-        if( DoRestoreSettingsL(index) != KErrNone )
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-            CleanupStack::Pop(2); //newNode.iMappingName,newNode.iName
-            _DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectL(): EError end");
-            return;
-            }
-        CleanupStack::Pop(2); //newNode.iMappingName,newNode.iName
-        }
-
-    TPtrC8 lastUriSeg = LastURISeg(aURI);
-    CBufBase* object = CBufFlat::NewL(32);
-    CleanupStack::PushL(object);
-    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
-
-    if(lastUriSeg.Compare(KNSmlDMEmailName)==0)
-        {
-        HBufC8 *data = HBufC8::NewLC(iBuffer->At(index).iName->Length());
-        TPtr8 dataPtr = data->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( 
-            dataPtr,iBuffer->At(index).iName->Des() );
-        object->InsertL(0,dataPtr);
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUID)==0)
-        {
-        HBufC *data = NULL;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iPop3Settings->LoginName().Length());
-            data->Des().Copy(iBuffer->At(index).iPop3Settings->LoginName());
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iImap4Settings->LoginName().Length());
-            data->Des().Copy(iBuffer->At(index).iImap4Settings->LoginName());
-            }
-        if(data)
-            {
-            HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-            CleanupStack::PushL(data8);
-            object->InsertL(0,*data8);
-            CleanupStack::PopAndDestroy(2);//data, data8
-            }
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailPW)==0)
-        {
-        HBufC *data = NULL;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iPop3Settings->Password().Length());
-            data->Des().Copy(iBuffer->At(index).iPop3Settings->Password());
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iImap4Settings->Password().Length());
-            data->Des().Copy(iBuffer->At(index).iImap4Settings->Password());
-            }
-        if(data)
-            {
-            HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-            CleanupStack::PushL(data8);
-            object->InsertL(0,*data8);
-            CleanupStack::PopAndDestroy(2);//data, data8
-            }
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUAddr)==0)
-        {
-        HBufC *data = NULL;
-        data = iBuffer->At(index).iSmtpSettings->EmailAddress().AllocLC();
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        object->InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUName)==0)
-        {
-
-        HBufC *data = NULL;
-        data = iBuffer->At(index).iSmtpSettings->EmailAlias().AllocLC();
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        object->InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-
-    else if(lastUriSeg.Compare( KNSmlDMEmailMrcv)==0)
-        {
-        HBufC *data = NULL;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            data = iBuffer->At(index).iPop3Settings->ServerAddress().AllocLC();
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            data = iBuffer->At(index).iImap4Settings->ServerAddress().AllocLC();
-            }
-        else
-        	{
-          	status = CSmlDmAdapter::ENotFound;
-        	}
-        if(data)
-        	{	    
-        		HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        		TPtr8 dataPtr8 = data8->Des();
-        		CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        		object->InsertL(0,dataPtr8);
-        		CleanupStack::PopAndDestroy(2); //data, data8
-        	}
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailMsnd)==0)
-        {
-        HBufC *data = NULL;
-        data = iBuffer->At(index).iSmtpSettings->ServerAddress().AllocLC();
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        object->InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailMpro)==0)
-        {
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            object->InsertL(0,KNSmlDMEmailMproPOP);
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            object->InsertL(0,KNSmlDMEmailMproIMAP);
-            }
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUseSecCon)==0)
-        {
-        FetchSecurityValueL(*object, &iBuffer->At(index), EUseSecCon );
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUseSauth)==0)
-        {
-        if(iBuffer->At(index).iSmtpSettings->SMTPAuth())
-            {
-            object->InsertL(0,KNSmlDMEmailTrue);
-            }
-        else
-            {
-            object->InsertL(0,KNSmlDMEmailFalse);
-            }
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailSauthUID)==0)
-        {
-        HBufC *data = HBufC::NewLC(iBuffer->At(index).iSmtpSettings->LoginName().Length());
-        data->Des().Copy(iBuffer->At(index).iSmtpSettings->LoginName());
-        HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-        CleanupStack::PushL(data8);
-        object->InsertL(0,*data8);
-        CleanupStack::PopAndDestroy(2);//data, data8
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailSauthPW)==0)
-        {
-        HBufC *data = HBufC::NewLC(iBuffer->At(index).iSmtpSettings->Password().Length());
-        data->Des().Copy(iBuffer->At(index).iSmtpSettings->Password());
-        HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-        CleanupStack::PushL(data8);
-        object->InsertL(0,*data8);
-        CleanupStack::PopAndDestroy(2);//data, data8
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailPtxtSAuth)==0)
-        {
-        if(iBuffer->At(index).iSmtpSettings->InboxLoginDetails())
-            {
-            object->InsertL(0,KNSmlDMEmailTrue);
-            }
-        else
-            {
-            object->InsertL(0,KNSmlDMEmailFalse);
-            }
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailSUseSecCon)==0)
-        {
-        FetchSecurityValueL(*object, &iBuffer->At(index), ESuseSecCon );
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailUseStartTLS)==0)
-        {
-        FetchSecurityValueL(*object, &iBuffer->At(index), EUseStartTls );
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailSUseStartTLS)==0)
-        {
-        FetchSecurityValueL(*object, &iBuffer->At(index), ESuseStartTls );
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailMrcvPort)==0)
-        {
-        TUint port;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            port = iBuffer->At(index).iPop3Settings->Port();
-            }
-        else 
-            {
-            port = iBuffer->At(index).iImap4Settings->Port();
-            }
-        HBufC8 *data = IntToDes8LC(port);
-        object->InsertL(0,data->Des());
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailMsndPort)==0)
-        {
-        TUint port = iBuffer->At(index).iSmtpSettings->Port();
-        HBufC8 *data = IntToDes8LC(port);
-        object->InsertL(0,data->Des());
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUseAPOP)==0)
-        {
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            if(iBuffer->At(index).iPop3Settings->Apop())
-                {
-                object->InsertL(0,KNSmlDMEmailTrue);
-                }
-            else
-                {
-                object->InsertL(0,KNSmlDMEmailFalse);
-                }
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailFolderPath)==0)
-        {
-        if(iBuffer->At(index).iImap4Settings)
-            {
-            object->InsertL(0, iBuffer->At(index).iImap4Settings->FolderPath() );
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailToNapID)==0)
-        {
-
-        CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() );
-        CleanupStack::PushL(iapmatch);
-        HBufC8* uri8 = NULL;
-        TInt iapCount = iBuffer->At(index).iIapPref->NumberOfIAPs();
-        if ( iapCount )
-            {
-            TImIAPChoice localIAP = iBuffer->At(index).iIapPref->IAPPreference(0);
-            uri8 = iapmatch->URIFromIAPIdL( localIAP.iIAP );
-            }
-
-        if( uri8 )
-            {
-            CleanupStack::PushL(uri8);
-            object->InsertL(0,uri8->Des());
-            status = CSmlDmAdapter::EOk;
-            CleanupStack::PopAndDestroy(); // uri8
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-
-        CleanupStack::PopAndDestroy(); // iapMatch
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailSToNapID)==0)
-        {
-
-        // SToNapID exists only for SMTP
-        if (iBuffer->At(index).iSmtpSettings!= NULL)
-            {
-            CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() );
-            CleanupStack::PushL(iapmatch);
-            HBufC8* uri8 = NULL;
-            TInt iapCount = iBuffer->At(index).iIapPref->NumberOfIAPs();
-            if ( iapCount )
-                {
-                TImIAPChoice localIAP = iBuffer->At(index).iSmtpIapPref->IAPPreference(0);
-                uri8 = iapmatch->URIFromIAPIdL( localIAP.iIAP );
-                }
-
-            if( uri8 )
-                {
-                CleanupStack::PushL(uri8);
-                object->InsertL(0,uri8->Des());
-                status = CSmlDmAdapter::EOk;
-                CleanupStack::PopAndDestroy(); // uri8
-                }
-            else
-                {
-                status = CSmlDmAdapter::ENotFound;
-                }
-
-            CleanupStack::PopAndDestroy(); // iapMatch
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-        }
-
-    if(status == CSmlDmAdapter::EOk)
-        {
-        Callback().SetResultsL(aResultsRef,*object,aType);
-        }
-    Callback().SetStatusL(aStatusRef, status);
-    CleanupStack::PopAndDestroy(object); //object
-
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-//  CNSmlDmEmailAdapter::ChildURIListL( const TDesC8& aURI,
-//                                          const TDesC8& aParentLUID,
-//                                          const CArrayFix<TSmlDmMappingInfo>& 
-//                                          aPreviousURISegmentList,
-//                                          const TInt aResultsRef,
-//                                          const TInt aStatusRef  )
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::ChildURIListL( const TDesC8& aURI,
-                                         const TDesC8& aParentLUID,
-                                         const CArrayFix<TSmlDmMappingInfo>& 
-                                         aPreviousURISegmentList,
-                                         const TInt aResultsRef,
-                                         const TInt aStatusRef  )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::ChildURIListL(): begin");
-
-    CSmlDmAdapter::TError ret = CSmlDmAdapter::EError;
-
-    if( OpenSessionL() != KErrNone )
-        {
-        Callback().SetStatusL(aStatusRef, ret);
-        _DBG_FILE("CNSmlDmEmailAdapter::ChildURIListL(): end");
-        return;
-        }
-    CBufBase *currentList = CBufFlat::NewL(128);
-    CleanupStack::PushL(currentList);
-
-    CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-
-    if(aURI.Compare(KNSmlDMEmailNodeName)==0)
-        {
-        RArray<TImapAccount> imap4Accounts;
-        CleanupClosePushL( imap4Accounts );
-        emailAccs->GetImapAccountsL(imap4Accounts);
-
-        // First, IMAP accounts
-        //
-        TInt luid;
-        TPtrC8 name;
-        // cycle through every found account
-        for(TInt count = 0; count < imap4Accounts.Count(); count++)
-            {
-            SetLuidById( EImap, imap4Accounts[count].iImapAccountId, luid );
-
-            TBool found = EFalse;
-            // cycle through every known account
-            for(TInt i = 0; i<aPreviousURISegmentList.Count();i++)
-                {
-                // compare if found is known
-                if( luid == DesToInt(aPreviousURISegmentList.At(i).iURISegLUID))
-                    {
-                    found = ETrue;
-                    name.Set(aPreviousURISegmentList.At(i).iURISeg);
-                    break;
-                    }
-                }
-            // if found != known add mapping to it
-            if(!found)
-                {
-                HBufC8 *uri = HBufC8::NewLC(aURI.Length() + 
-                                            KNSmlDMEmailMproIMAP().Length() + 6);
-                                            
-                TPtr8 uriPtr = uri->Des();
-                uriPtr.Format(aURI);
-                uriPtr.Append(KNSmlDMEmailSeparator8);
-                uriPtr.Append(KNSmlDMEmailMproIMAP);
-                TUint16 crc;
-               	Mem::Crc ( crc, &imap4Accounts[count],sizeof(TImapAccount) );
-                HBufC8 *crcBuf = IntToDes8LC(crc);
-                uriPtr.Append(*crcBuf);
-                HBufC8 *luidBuf = IntToDes8LC(luid);
-                Callback().SetMappingL(uriPtr,luidBuf->Des());
-                currentList->InsertL( currentList->Size(),LastURISeg(uriPtr));
-                CleanupStack::PopAndDestroy(3); //uri,luidBuf, crcBuf
-                }
-            else
-                {
-                currentList->InsertL( currentList->Size(),name );
-                }
-            // in all cases: add it to results.
-            if(count < imap4Accounts.Count()-1 )
-                {
-                currentList->InsertL(currentList->Size(),KNSmlDMEmailSeparator8);
-                }
-            }
-        CleanupStack::PopAndDestroy(); //imap4Accounts
-
-        // Then, POP accounts
-        //
-        RArray<TPopAccount> pop3Accounts;
-        CleanupClosePushL( pop3Accounts );
-        emailAccs->GetPopAccountsL( pop3Accounts );
-        if (pop3Accounts.Count()&&currentList->Size()>0)
-            {
-            // there is at least one account; insert separator
-            currentList->InsertL(currentList->Size(),KNSmlDMEmailSeparator8);
-            }
-        // cycle through every found account
-        for(TInt count = 0; count < pop3Accounts.Count(); count++)
-            {
-            SetLuidById( EPop, pop3Accounts[count].iPopAccountId, luid );
-
-            TBool found = EFalse;
-            // cycle through every known account
-            for(TInt i = 0; i<aPreviousURISegmentList.Count();i++)
-                {
-                // compare if found is known
-                if( luid == DesToInt(aPreviousURISegmentList.At(i).iURISegLUID))
-
-                    {
-                    found = ETrue;
-                    name.Set(aPreviousURISegmentList.At(i).iURISeg);
-                    break;
-                    }
-                }
-            // if found != known add mapping to it
-            if(!found)
-                {
-                                         
-                HBufC8 *uri = HBufC8::NewLC(aURI.Length() + 
-                                            KNSmlDMEmailMproPOP().Length() + 5);
-                TPtr8 uriPtr = uri->Des();
-                uriPtr.Format(aURI);
-                uriPtr.Append(KNSmlDMEmailSeparator8);
-                uriPtr.Append(KNSmlDMEmailMproPOP);
-                TUint16 crc;
-               	Mem::Crc ( crc, &pop3Accounts[count],sizeof(TPopAccount) );
-                HBufC8 *crcBuf = IntToDes8LC(crc);
-                uriPtr.Append(*crcBuf);
-                HBufC8 *luidBuf = IntToDes8LC(luid);
-                Callback().SetMappingL(uriPtr,luidBuf->Des());
-                currentList->InsertL( currentList->Size(),LastURISeg(uriPtr));
-                CleanupStack::PopAndDestroy(3); //uri,luidBuf,crcBuf
-                }
-            else
-                {
-                currentList->InsertL( currentList->Size(),name );
-                }
-            // in all cases: add it to results.
-            if(count < pop3Accounts.Count()-1)
-                {
-                currentList->InsertL(currentList->Size(),KNSmlDMEmailSeparator8);
-                }
-            }
-        CleanupStack::PopAndDestroy(); //pop3Accounts
-        ret = CSmlDmAdapter::EOk;
-        }
-    else
-        {
-        if(aParentLUID.Length() > 0)
-            {
-            TInt err = KErrNotFound;
-            TInt luid = DesToInt(aParentLUID);
-            TNSmlEmailAccountType accType;
-            TInt id;
-            GetIdByLuid( accType, id, luid );
-            switch ( accType )
-                {
-            case EImap:
-                {
-                RArray<TImapAccount> imap4Accounts;
-                CleanupClosePushL( imap4Accounts );
-                emailAccs->GetImapAccountsL( imap4Accounts ); 
-                for ( TInt i=0; i<imap4Accounts.Count(); i++ )
-                    {
-                    if ( imap4Accounts[i].iImapAccountId == id )
-                        {
-                        err = KErrNone;
-                        break;
-                        }
-                    }
-                CleanupStack::PopAndDestroy(); //imap4Accounts    
-                break;                
-                }
-            case EPop:
-                {
-                RArray<TPopAccount> pop3Accounts;
-                CleanupClosePushL( pop3Accounts );
-                emailAccs->GetPopAccountsL(pop3Accounts); 
-                for ( TInt i=0; i<pop3Accounts.Count(); i++ )
-                    {
-                    if ( pop3Accounts[i].iPopAccountId == id )
-                        {
-                        err = KErrNone;
-                        break;
-                        }
-                    }
-                CleanupStack::PopAndDestroy(); //pop3Accounts       
-                break;                
-                }
-            default:
-                ret = CSmlDmAdapter::EError;
-                break;
-                }
-            if( err == KErrNotFound )
-                {
-                ret = CSmlDmAdapter::ENotFound;
-                }
-            
-            if ( err == KErrNone )
-                {
-                ret = CSmlDmAdapter::EOk;
-                currentList->InsertL(0,KNSmlDMEmailListOfLeafs);
-                }
-            }
-        else
-            {
-            ret = CSmlDmAdapter::ENotFound;
-            }
-        }
-    // Common part
-    Callback().SetStatusL(aStatusRef, ret);
-    if( ret == CSmlDmAdapter::EOk )
-        {
-        Callback().SetResultsL(aResultsRef,*currentList,KNullDesC8);
-        }
-
-    CleanupStack::PopAndDestroy(emailAccs); //emailAccs
-    CleanupStack::PopAndDestroy(currentList); //currentList
-    _DBG_FILE("CNSmlDmEmailAdapter::ChildURIListL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::AddNodeObjectL( const TDesC8& aURI, 
-// const TDesC8& aParentLUID, const TInt aStatusRef )
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::AddNodeObjectL( const TDesC8& aURI,
-                                          const TDesC8& aParentLUID,
-                                          const TInt aStatusRef )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): begin");
-
-    if(aParentLUID.Length()>0)
-        {
-        TInt luid = DesToInt(aParentLUID);
-        TInt accId;
-        TNSmlEmailAccountType accType;
-        GetIdByLuid( accType, accId, luid );
-        TInt err = OpenSessionL();
-        if(err!=KErrNone)
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-            _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EError end");
-            return;
-            }
-        CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-        TBool accEx = AccountExistsL( emailAccs, accType, accId, -1 );
-        CleanupStack::PopAndDestroy( emailAccs );
-        if( accEx )
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EAlreadyExists);
-            _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EAlreadyExists end");
-            return;
-            }
-        else
-            {
-            TInt ret = Callback().RemoveMappingL( KNSmlDMEmailAdapterImplUid, 
-						GetDynamicEmailNodeUri(aURI), ETrue );
-			if(ret != KErrNone)
-				{
-            	Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-	            _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EError end");
-            	return;
-				}
-            }
-        Callback().SetMappingL(aURI,KNullDesC8);
-        }
-
-    if( aURI.Find(KNSmlDMEmailNodeName)>=0 && NumOfURISegs(aURI)==2 )
-        {
-        if( OpenSessionL() != KErrNone )
-            {
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-            _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EError end");
-            return;
-            }
-
-        RFs fs;
-        User::LeaveIfError( fs.Connect() );
-        CleanupClosePushL(fs);
-        //2files and 2 folders are needed for settings
-        if (SysUtil::FFSSpaceBelowCriticalLevelL(&fs,
-                                                 KNSmlDmFatMinimumFileSize*4))
-            {
-            CleanupStack::PopAndDestroy(); //fs
-            Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EDiskFull);
-            _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): EDiskFull end");
-            return;
-            // do not write
-            }
-        CleanupStack::PopAndDestroy(); //fs
-
-
-        TNSmlEmailSettingsElement newNode;
-        newNode.iMappingName = aURI.AllocLC();
-        newNode.iName = HBufC::NewLC(0);
-        newNode.iNodeBuf = new (ELeave)
-            CArrayFixFlat <TNSmlEmailCommandElement> (KNSmlDmEmailGranularity);
-        newNode.iExecuted = EFalse;
-        newNode.iImap4Settings = NULL;
-        newNode.iPop3Settings = NULL;
-        newNode.iSmtpSettings = NULL;
-        newNode.iIapPref = NULL;
-        newNode.iSmtpIapPref = NULL;
-        newNode.iLuid = 0;
-        newNode.iJustFetch=EFalse;
-        iBuffer->AppendL(newNode);
-        CleanupStack::Pop(2); //newNode.iMappingName,newNode.iName
-        TNSmlEmailCommandElement newCommand;
-        newCommand.iLastUriSeg = LastURISeg(aURI).AllocLC(); //aURI.AllocLC();
-        newCommand.iData = NULL;
-        newCommand.iStatusRef = aStatusRef;
-        newCommand.iLeaf = EFalse;
-        newCommand.iStatus = CSmlDmAdapter::EOk;
-        TInt index = iBuffer->Count() - 1;
-        iBuffer->At(index).iNodeBuf->AppendL(newCommand);
-        CleanupStack::Pop(); //newCommand.iLastUriSeg
-
-
-        }
-    _DBG_FILE("CNSmlDmEmailAdapter::AddNodeObjectL(): end");
-    }
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::UpdateLeafObjectL( const TDesC8& aURI,
-// const TDesC8& aLUID, RWriteStream*& aStream, const TDesC8& aType,
-// const TInt aStatusRef )
-// This should update a stream object, but in case of Email settings streaming 
-// is not supported.
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::UpdateLeafObjectL( const TDesC8& /*aURI*/,
-                                             const TDesC8& /*aLUID*/,
-                                             RWriteStream*& /*aStream*/,
-                                             const TDesC8& /*aType*/,
-                                             const TInt aStatusRef )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(stream): begin");
-    Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-    _DBG_FILE("CNSmlDmEmailAdapter::UpdateLeafObjectL(stream): end");
-    }
-// -----------------------------------------------------------------------------
-// void CNSmlDmEmailAdapter::FetchLeafObjectSizeL( const TDesC8& aURI,
-// const TDesC8& aLUID, const TDesC8& aType, const TInt aResultsRef,
-// const TInt aStatusRef )
-// Fetches data object and returns its size.
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::FetchLeafObjectSizeL( const TDesC8& aURI,
-                                                const TDesC8& aLUID,
-                                                const TDesC8& aType,
-                                                const TInt aResultsRef,
-                                                const TInt aStatusRef )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectSizeL(): begin");
-
-    CBufBase *result = CBufFlat::NewL(32);
-    CleanupStack::PushL(result);
-    CSmlDmAdapter::TError status = FetchObjectL(aURI, aLUID, *result);
-    if( status == CSmlDmAdapter::EOk )
-        {
-        TInt objSizeInBytes = result->Size();
-        TBuf8<4> stringObjSizeInBytes;
-        stringObjSizeInBytes.Num( objSizeInBytes );
-        result->Reset();
-        result->InsertL( 0, stringObjSizeInBytes );
-        Callback().SetResultsL(aResultsRef, *result, aType);
-        }
-    Callback().SetStatusL(aStatusRef, status);
-    CleanupStack::PopAndDestroy(); //result
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchLeafObjectSizeL(): end");
-    }
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::ExecuteCommandL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::ExecuteCommandL( const TDesC8& /*aURI*/,
-                                           const TDesC8& /*aLUID*/,
-                                           const TDesC8& /*aArgument*/,
-                                           const TDesC8& /*aType*/,
-                                           const TInt aStatusRef )
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::ExecuteCommandL(): begin");
-    Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-    _DBG_FILE("CNSmlDmEmailAdapter::ExecuteCommandL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::ExecuteCommandL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::ExecuteCommandL( const TDesC8& /*aURI*/,
-                                           const TDesC8& /*aLUID*/,
-                                           RWriteStream*& /*aStream*/,
-                                           const TDesC8& /*aType*/,
-                                           const TInt aStatusRef )
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::ExecuteCommandL(): begin");
-    Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-    _DBG_FILE("CNSmlDmEmailAdapter::ExecuteCommandL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::CopyCommandL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/,
-                                        const TDesC8& /*aTargetLUID*/,
-                                        const TDesC8& /*aSourceURI*/,
-                                        const TDesC8& /*aSourceLUID*/,
-                                        const TDesC8& /*aType*/,
-                                        TInt aStatusRef )
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::CopyCommandL(): begin");
-    Callback().SetStatusL(aStatusRef, CSmlDmAdapter::EError);
-    _DBG_FILE("CNSmlDmEmailAdapter::CopyCommandL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::StartAtomicL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::StartAtomicL()
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::StartAtomicL(): begin");
-    _DBG_FILE("CNSmlDmEmailAdapter::StartAtomicL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::CommitAtomicL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::CommitAtomicL()
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::CommitAtomicL(): begin");
-    _DBG_FILE("CNSmlDmEmailAdapter::CommitAtomicL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::RollbackAtomicL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::RollbackAtomicL()
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::RollbackAtomicL(): begin");
-    _DBG_FILE("CNSmlDmEmailAdapter::RollbackAtomicL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::StreamingSupport()
-// -----------------------------------------------------------------------------
-TBool CNSmlDmEmailAdapter::StreamingSupport( TInt& /*aItemSize*/ )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::StreamingSupport(): begin");
-    _DBG_FILE("CNSmlDmEmailAdapter::StreamingSupport(): end");
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::StreamCommittedL()
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::StreamCommittedL()
-    {
-    //Not supported
-    _DBG_FILE("CNSmlDmEmailAdapter::StreamCommittedL(): begin");
-    _DBG_FILE("CNSmlDmEmailAdapter::StreamCommittedL(): end");
-    }
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::CompleteOutstandingCmdsL()
-// Indication of message ending. The buffered commands must be executed
-// before return of this function.
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::CompleteOutstandingCmdsL()
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::CompleteOutstandingCmdsL(): begin");
-
-    for(TInt i=0;i<iBuffer->Count();i++)
-        {
-
-        //Set buffered port values
-        for(TInt cmd=0;cmd<iBuffer->At(i).iNodeBuf->Count();cmd++)
-            {
-            
-            TNSmlEmailSettingsElement& bufElem = iBuffer->At(i);
-            TNSmlEmailCommandElement& elem = bufElem.iNodeBuf->At(cmd);
-
-            if(elem.iLastUriSeg->Compare(KNSmlDMEmailMrcvPort)==0)
-                {
-                TUint port = DesToInt(*elem.iData);
-                
-                if(port>0 && port <= KNSmlDMEmailMaxPortNbr)
-                    {
-                    if(bufElem.iPop3Settings!= NULL)
-                        {
-                        bufElem.iPop3Settings->SetPort(port);
-                        }
-                    else if(bufElem.iImap4Settings!= NULL)
-                        {
-                        bufElem.iImap4Settings->SetPort(port);
-                        }
-                    }
-                else
-                    {
-                    elem.iStatus = CSmlDmAdapter::EInvalidObject;
-                    }
-                }
-            else if(elem.iLastUriSeg->Compare(KNSmlDMEmailMsndPort)==0)
-                {
-                TUint port = DesToInt(*elem.iData);
-                
-                if(port>0 && port <= KNSmlDMEmailMaxPortNbr)
-                    {
-                    bufElem.iSmtpSettings->SetPort(port);
-                    }
-                else
-                    {
-                    elem.iStatus = CSmlDmAdapter::EInvalidObject;
-                    }
-                }
-                if((iBuffer->At(i).iSmtpSettings->LoginName()==KNullDesC8) && elem.iLastUriSeg->Compare(KNSmlDMEmailUID)==0)
-              	{
-                	elem.iStatus = CSmlDmAdapter::EError;
-        	      }
-           }
-        
-
-        CSmlDmAdapter::TError stat = CSmlDmAdapter::EOk;
-        TInt luid=-1;
-        
-        if(iBuffer->At(i).iExecuted)
-            {
-            TRAPD( leaveCode,luid = ValidateAndStoreSettingsL(i) );
-            if(leaveCode!=KErrNone)
-                {
-                stat = CSmlDmAdapter::EError;
-                }
-            }
-        else
-            {
-            stat = CSmlDmAdapter::EError;
-            }
-
-        for(TInt cmd=0;cmd<iBuffer->At(i).iNodeBuf->Count();cmd++)
-            {
-
-            if(iBuffer->At(i).iNodeBuf->At(cmd).iStatus==CSmlDmAdapter::EOk)
-                {
-                Callback().SetStatusL(iBuffer->At(i).iNodeBuf->At(cmd).iStatusRef,
-                                      stat);
-                if(!iBuffer->At(i).iNodeBuf->At(cmd).iLeaf)
-                    {
-                    if(stat==CSmlDmAdapter::EOk)
-                        {
-                        HBufC8* luidDes = IntToDes8LC(luid);
-                        Callback().SetMappingL( iBuffer->At(i).iMappingName->Des(),
-                                                luidDes->Des() );
-                        CleanupStack::PopAndDestroy(); //luidDes
-                        }
-                    }
-                }
-            else
-                {
-                Callback().SetStatusL(iBuffer->At(i).iNodeBuf->At(cmd).iStatusRef,
-                                      iBuffer->At(i).iNodeBuf->At(cmd).iStatus);
-                }
-
-            delete iBuffer->At(i).iNodeBuf->At(cmd).iLastUriSeg;
-            iBuffer->At(i).iNodeBuf->At(cmd).iLastUriSeg= NULL;
-            delete iBuffer->At(i).iNodeBuf->At(cmd).iData;
-            iBuffer->At(i).iNodeBuf->At(cmd).iData= NULL;
-
-            }
-        iBuffer->At(i).iNodeBuf->Reset();
-        delete iBuffer->At(i).iNodeBuf;
-        iBuffer->At(i).iNodeBuf = NULL;
-        delete iBuffer->At(i).iMappingName;
-        iBuffer->At(i).iMappingName= NULL;
-        delete iBuffer->At(i).iName;
-        iBuffer->At(i).iName= NULL;
-        delete iBuffer->At(i).iSmtpSettings;
-        iBuffer->At(i).iSmtpSettings= NULL;
-        delete iBuffer->At(i).iPop3Settings;
-        iBuffer->At(i).iPop3Settings= NULL;
-        delete iBuffer->At(i).iImap4Settings;
-        iBuffer->At(i).iImap4Settings= NULL;
-        delete iBuffer->At(i).iIapPref;
-        iBuffer->At(i).iIapPref= NULL;
-        delete iBuffer->At(i).iSmtpIapPref;
-        iBuffer->At(i).iSmtpIapPref= NULL;
-
-        } // end for
-    iBuffer->Reset();
-
-    _DBG_FILE("CNSmlDmEmailAdapter::CompleteOutstandingCmdsL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-
-#ifndef IMPLEMENTATION_PROXY_ENTRY
-#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr)  {{aUid},(aFuncPtr)}
-#endif
-
-const TImplementationProxy ImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY(KNSmlDMEmailAdapterImplUid, 
-                               CNSmlDmEmailAdapter::NewL)
-    };
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-    {
-    _DBG_FILE("ImplementationGroupProxy() for CNSmlDmEmailAdapter: begin");
-    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-    _DBG_FILE("ImplementationGroupProxy() for CNSmlDmEmailAdapter: end");
-    return ImplementationTable;
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// TPtrC8 CNSmlDmEmailAdapter::LastURISeg(const TDesC8& aURI)
-// Returns only the last uri segemnt
-// -----------------------------------------------------------------------------
-TPtrC8 CNSmlDmEmailAdapter::LastURISeg(const TDesC8& aURI) const
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::LastURISeg() : begin");
-    TInt i;
-    for(i=aURI.Length()-1;i>=0;i--)
-        {
-        if(aURI[i]=='/')
-            {
-            break;
-            }
-        }
-    _DBG_FILE("CNSmlDmEmailAdapter::LastURISeg() : end");
-    if(i==0)
-        {
-        return aURI;
-        }
-    else
-        {
-        return aURI.Mid(i+1);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TPtrC8 CNSmlDmEmailAdapter::RemoveLastURISeg(const TDesC8& aURI)
-// returns parent uri, i.e. removes last uri segment
-// -----------------------------------------------------------------------------
-TPtrC8 CNSmlDmEmailAdapter::RemoveLastURISeg(const TDesC8& aURI) const
-    {
-    TInt i;
-    for(i=aURI.Length()-1;i>=0;i--)
-        {
-        if(aURI[i]=='/')
-            {
-            break;
-            }
-        }
-    return aURI.Left(i);
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// TInt CNSmlDmEmailAdapter::NumOfURISegs(const TDesC8& aURI)
-// Returns the num of uri segs
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::NumOfURISegs(const TDesC8& aURI) const
-    {
-    TInt numOfURISegs = 1;
-    for(TInt i=0;i<aURI.Length();i++)
-        {
-        if(aURI[i]=='/')
-            {
-            numOfURISegs++;
-            }
-        }
-    return numOfURISegs;
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// void CNSmlDmEmailAdapter::HandleSessionEventL( TMsvSessionEvent /*aEvent*/,
-//                                               TAny* /*aArg1*/,
-//                                               TAny* /*aArg2*/,
-//                                               TAny* /*aArg3*/ )
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::HandleSessionEventL( TMsvSessionEvent /*aEvent*/,
-                                               TAny* /*aArg1*/,
-                                               TAny* /*aArg2*/,
-                                               TAny* /*aArg3*/ )
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::HandleSessionEventL(): begin");
-    _DBG_FILE("CNSmlDmEmailAdapter::HandleSessionEventL(): end");
-    }
-
-
-// -----------------------------------------------------------------------------
-// TInt CNSmlDmEmailAdapter::DesToInt(const TDesC& aLuid) const
-// Converts 16bit descriptor to int
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::DesToInt(const TDesC& aLuid) const
-    {
-    TLex16 lex(aLuid);
-    TInt value = 0;
-    lex.Val(value);
-    return value;
-    }
-
-// -----------------------------------------------------------------------------
-// TInt CNSmlDmEmailAdapter::DesToInt(const TDesC8& aLuid) const
-// Converts 8bit descriptor to int
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::DesToInt(const TDesC8& aLuid) const
-    {
-    TLex8 lex(aLuid);
-    TInt value = 0;
-    lex.Val(value);
-    return value;
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::FirstAddLeafL()
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::FirstAddLeafL(const TDesC8& aURI, 
-                                        const TDesC8& aObject,
-                                        TInt aStatusRef,
-                                        TInt aIndex)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::FirstAddLeafL() :: begin");
-
-    TPtrC8 lastSeg = LastURISeg(aURI);
-
-    TNSmlEmailCommandElement newCommand;
-    newCommand.iLastUriSeg = lastSeg.AllocLC();
-    newCommand.iData = aObject.AllocLC();
-    newCommand.iStatusRef = aStatusRef;
-    newCommand.iLeaf = ETrue;
-    newCommand.iStatus = CSmlDmAdapter::EOk;
-    iBuffer->At(aIndex).iNodeBuf->AppendL(newCommand);
-    CleanupStack::Pop(2); //newCommand.iLastUriSeg, newCommand.iData
-    if(!iBuffer->At(aIndex).iExecuted)
-        {
-        if(lastSeg.Compare(KNSmlDMEmailMpro)==0)
-            {
-            TBool ok = EFalse;
-            HBufC8* object = aObject.AllocLC();
-            TPtr8 objectPtr = object->Des();
-            objectPtr.UpperCase();
-
-            if(objectPtr.Find(KNSmlDMEmailMproPOP) >= 0)
-                {
-                iBuffer->At(aIndex).iPop3Settings = new(ELeave) CImPop3Settings;
-                ok=ETrue;
-                }
-
-            else if(objectPtr.Find(KNSmlDMEmailMproIMAP) >= 0)
-                {
-                iBuffer->At(aIndex).iImap4Settings = new(ELeave) CImImap4Settings;
-                ok=ETrue;
-                }
-            if(ok)
-                {
-                iBuffer->At(aIndex).iSmtpSettings = new(ELeave) CImSmtpSettings;
-                iBuffer->At(aIndex).iIapPref = CImIAPPreferences::NewLC();
-                iBuffer->At(aIndex).iSmtpIapPref = CImIAPPreferences::NewLC();
-                CleanupStack::Pop(); //iBuffer->At(index).iIapPref
-                CleanupStack::Pop(); //iBuffer->At(index).iSmtpIapPref
-                SetDefaultSettingsL(aIndex);
-
-                for(TInt i = 0; i<iBuffer->At(aIndex).iNodeBuf->Count();i++)
-                    {
-                    if(iBuffer->At(aIndex).iNodeBuf->At(i).iLeaf)
-                        {
-                        DoAddLeafObjectL(iBuffer->At(aIndex).iNodeBuf->At(i).iLastUriSeg->Des(),
-                                         iBuffer->At(aIndex).iNodeBuf->At(i).iData->Des(),
-                                         aIndex, i);
-                        }
-                    }
-
-                iBuffer->At(aIndex).iExecuted = ETrue;
-                }
-            CleanupStack::PopAndDestroy(); //object
-            }
-        }
-    else
-        {
-        DoAddLeafObjectL(lastSeg,aObject,aIndex,
-                         iBuffer->At(aIndex).iNodeBuf->Count()-1);
-        }
-
-    _DBG_FILE("CNSmlDmEmailAdapter::FirstAddLeafL() :: end");
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::DoAddLeafObjectL
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::DoAddLeafObjectL(const TDesC8& aLastUriSeg,
-                                           const TDesC8& aObject,
-                                           TInt aIndex,
-                                           TInt aCommand)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::DoAddLeafObjectL() :: begin");
-    if(aLastUriSeg.Compare(KNSmlDMEmailName)==0)
-        {
-        if ( aObject.Size() < KEmailAccountNameSize )
-            {
-            delete iBuffer->At(aIndex).iName;
-            iBuffer->At(aIndex).iName = NULL;
-            iBuffer->At(aIndex).iName = HBufC::NewL(aObject.Size());
-            TPtr namePtr = iBuffer->At(aIndex).iName->Des();
-            CnvUtfConverter::ConvertToUnicodeFromUtf8( namePtr, aObject );
-            }
-        else 
-            {
-            iBuffer->At(aIndex).iNodeBuf->At(aCommand).iStatus = 
-                CSmlDmAdapter::ETooLargeObject;
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUID)==0)
-        {
-        if(iBuffer->At(aIndex).iPop3Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iPop3Settings->SetLoginNameL(aObject);
-            }
-        else if(iBuffer->At(aIndex).iImap4Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iImap4Settings->SetLoginNameL(aObject);
-            }
-        if(iBuffer->At(aIndex).iSmtpSettings->LoginName()==KNullDesC8)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetLoginNameL(aObject);
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailPW)==0)
-        {
-        if(iBuffer->At(aIndex).iPop3Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iPop3Settings->SetPasswordL(aObject);
-            }
-        else if(iBuffer->At(aIndex).iImap4Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iImap4Settings->SetPasswordL(aObject);
-            }
-        if(iBuffer->At(aIndex).iSmtpSettings->Password()==KNullDesC8)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetPasswordL(aObject);
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUAddr)==0)
-        {
-        HBufC *object = HBufC::NewLC(aObject.Size());
-        TPtr objectPtr = object->Des();
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( objectPtr, aObject );
-        if(iBuffer->At(aIndex).iSmtpSettings!= NULL)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetEmailAddressL(objectPtr);
-            iBuffer->At(aIndex).iSmtpSettings->SetReplyToAddressL(objectPtr);
-            iBuffer->At(aIndex).iSmtpSettings->SetReceiptAddressL(objectPtr);
-            }
-
-        CleanupStack::PopAndDestroy(); //object
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUName)==0)
-        {
-        HBufC *object = HBufC::NewLC(aObject.Size());
-        TPtr objectPtr = object->Des();
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( objectPtr, aObject );
-        if(iBuffer->At(aIndex).iSmtpSettings!= NULL)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetEmailAliasL(objectPtr);
-            }
-        CleanupStack::PopAndDestroy(); //object
-        }
-
-    else if(aLastUriSeg.Compare( KNSmlDMEmailMrcv)==0)
-        {
-        HBufC *object = HBufC::NewLC(aObject.Size());
-        TPtr objectPtr = object->Des();
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( objectPtr, aObject );
-        if(iBuffer->At(aIndex).iPop3Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iPop3Settings->SetServerAddressL(objectPtr);
-            }
-        else if(iBuffer->At(aIndex).iImap4Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iImap4Settings->SetServerAddressL(objectPtr);
-            }
-        CleanupStack::PopAndDestroy(); //object
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailMsnd)==0)
-        {
-        HBufC *object = HBufC::NewLC(aObject.Size());
-        TPtr objectPtr = object->Des();
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( objectPtr, aObject );
-        if(iBuffer->At(aIndex).iSmtpSettings!= NULL)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetServerAddressL(objectPtr);
-            }
-        CleanupStack::PopAndDestroy(); //object
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailMpro)==0)
-        {
-        iBuffer->At(aIndex).iNodeBuf->At(aCommand).iStatus = CSmlDmAdapter::EOk;
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUseSecCon)==0)
-        {
-        SetDefaultSecurityL(aObject, &iBuffer->At(aIndex), EUseSecCon );
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUseSauth)==0)
-        {
-        HBufC8 *data = aObject.AllocLC();
-        TPtr8 dataPtr = data->Des();
-        dataPtr.Capitalize();
-        TBool object=EFalse;
-        if(dataPtr.Find(KNSmlDMEmailTrue)>=0)
-            {
-            object = ETrue;
-            }
-        if(iBuffer->At(aIndex).iSmtpSettings!= NULL)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetSMTPAuth(object);
-            }
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailSauthUID)==0)
-        {
-        if( iBuffer->At(aIndex).iSmtpSettings )
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetLoginNameL(aObject);
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailSauthPW)==0)
-        {
-        if( iBuffer->At(aIndex).iSmtpSettings )
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetPasswordL( aObject );
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailPtxtSAuth)==0)
-        {
-        HBufC8 *data = aObject.AllocLC();
-        TPtr8 dataPtr = data->Des();
-        dataPtr.Capitalize();
-        TBool object=EFalse;
-        if(dataPtr.Find(KNSmlDMEmailTrue)>=0)
-            {
-            object = ETrue;
-            }
-        if(iBuffer->At(aIndex).iSmtpSettings!= NULL)
-            {
-            iBuffer->At(aIndex).iSmtpSettings->SetInboxLoginDetails(object);
-            }
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailSUseSecCon)==0)
-        {
-        SetDefaultSecurityL(aObject, &iBuffer->At(aIndex), ESuseSecCon );
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUseStartTLS)==0)
-        {
-        SetDefaultSecurityL(aObject, &iBuffer->At(aIndex), EUseStartTls );
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailSUseStartTLS)==0)
-        {
-        SetDefaultSecurityL(aObject, &iBuffer->At(aIndex), ESuseStartTls );
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailMrcvPort)==0)
-        {
-        TNSmlEmailSettingsElement& bufElem = iBuffer->At(aIndex);
-        TNSmlEmailCommandElement& elem = bufElem.iNodeBuf->At(aCommand);
-        elem.iData = aObject.AllocL();
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailMsndPort)==0)
-        {
-        TNSmlEmailSettingsElement& bufElem = iBuffer->At(aIndex);
-        TNSmlEmailCommandElement& elem = bufElem.iNodeBuf->At(aCommand);
-        elem.iData = aObject.AllocL();
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailUseAPOP)==0)
-        {
-        TBool object=EFalse;
-        if(aObject.Find(_L8("True"))>=0 || aObject.Find(_L8("true"))>=0)
-            {
-            object = ETrue;
-            }
-        if(iBuffer->At(aIndex).iPop3Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iPop3Settings->SetApop(object);
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailFolderPath)==0)
-        {
-        if(iBuffer->At(aIndex).iImap4Settings!= NULL)
-            {
-            iBuffer->At(aIndex).iImap4Settings->SetFolderPathL(aObject);
-            }
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailToNapID)==0)
-        {
-        CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() );
-        CleanupStack::PushL(iapmatch);
-
-        TInt iap = iapmatch->IAPIdFromURIL( aObject );
-
-        if ( iap != KErrNotFound )
-            {
-            TImIAPChoice localIAP;
-            localIAP.iIAP = iap;
-            DBG_ARGS(_S("IAP = %d"), localIAP.iIAP);
-            localIAP.iDialogPref = ECommDbDialogPrefDoNotPrompt;
-
-            if ( iBuffer->At(aIndex).iSmtpIapPref->NumberOfIAPs() )
-                {
-                iBuffer->At(aIndex).iIapPref->RemoveIAPL(0);
-                }
-            iBuffer->At(aIndex).iIapPref->AddIAPL(localIAP,0);
-            if (iBuffer->At(aIndex).iSmtpSettings!= NULL)
-                {
-                if ( iBuffer->At(aIndex).iSmtpIapPref->NumberOfIAPs() )
-                    {
-                    iBuffer->At(aIndex).iSmtpIapPref->RemoveIAPL(0);
-                    }
-                iBuffer->At(aIndex).iSmtpIapPref->AddIAPL(localIAP,0);
-                }
-            }
-        else
-            {
-            iBuffer->At(aIndex).iNodeBuf->At(aCommand).iStatus = CSmlDmAdapter::ENotFound;
-            }
-
-        CleanupStack::PopAndDestroy(); // iapmatch
-        }
-
-    else if(aLastUriSeg.Compare(KNSmlDMEmailSToNapID)==0)
-        {
-        CNSmlDMIAPMatcher* iapmatch = CNSmlDMIAPMatcher::NewL( &Callback() );
-        CleanupStack::PushL(iapmatch);
-
-        TInt iap = iapmatch->IAPIdFromURIL( aObject );
-
-        if ( iap != KErrNotFound )
-            {
-            TImIAPChoice localIAP;
-            localIAP.iIAP = iap;
-            DBG_ARGS(_S("SMTP IAP = %d"), localIAP.iIAP);
-            localIAP.iDialogPref = ECommDbDialogPrefDoNotPrompt;
-            if ( iBuffer->At(aIndex).iSmtpSettings!= NULL )
-                {
-                if ( iBuffer->At(aIndex).iSmtpIapPref->NumberOfIAPs() )
-                    {
-                    iBuffer->At(aIndex).iSmtpIapPref->RemoveIAPL(0);
-                    }
-                iBuffer->At(aIndex).iSmtpIapPref->AddIAPL(localIAP,0);
-                }
-            else
-                {
-                iBuffer->At(aIndex).iNodeBuf->At(aCommand).iStatus =
-                    CSmlDmAdapter::ENotFound;
-                }
-            }
-        else
-            {
-            iBuffer->At(aIndex).iNodeBuf->At(aCommand).iStatus =
-                CSmlDmAdapter::ENotFound;
-            }
-
-        CleanupStack::PopAndDestroy(); // iapmatch
-        }
-    _DBG_FILE("CNSmlDmEmailAdapter::DoAddLeafObjectL() :: end");
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// void CNSmlDmEmailAdapter::SetDefaultSettingsL(TInt aIndex)
-// Set defaults for used protocol
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::SetDefaultSettingsL(TInt aIndex)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::SetDefaultSettingsL() :: begin");
-    TNSmlEmailSettingsElement& thisElem = iBuffer->At(aIndex);
-    CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-    if( thisElem.iPop3Settings )
-        {
-          
-        emailAccs->PopulateDefaultPopSettingsL(*thisElem.iPop3Settings,
-                                               *thisElem.iIapPref
-                                               );
-        emailAccs->PopulateDefaultSmtpSettingsL(*thisElem.iSmtpSettings,
-                                                *thisElem.iSmtpIapPref 
-                                               );
-                                               
-        thisElem.iPop3Settings->SetDeleteEmailsWhenDisconnecting( EFalse ); 
-        thisElem.iPop3Settings->SetInboxSynchronisationLimit( KNSmlDMEmailDefaultHeaderCount );
-        thisElem.iPop3Settings->SetSecureSockets( EFalse );
-        thisElem.iPop3Settings->SetAutoSendOnConnect( ETrue );
-        thisElem.iPop3Settings->SetDisconnectedUserMode( ETrue );
-        thisElem.iPop3Settings->SetAcknowledgeReceipts( EFalse );                                
-        }
-    else if( thisElem.iImap4Settings )
-        {
-        
-        emailAccs->PopulateDefaultImapSettingsL(*thisElem.iImap4Settings,
-                                                *thisElem.iIapPref 
-                                                );
-
-        emailAccs->PopulateDefaultSmtpSettingsL(*thisElem.iSmtpSettings,
-                                                *thisElem.iSmtpIapPref 
-                                               );
-                                                
-        thisElem.iImap4Settings->SetDeleteEmailsWhenDisconnecting( EFalse );
-        thisElem.iImap4Settings->SetInboxSynchronisationLimit( KNSmlDMEmailDefaultHeaderCount );
-        thisElem.iImap4Settings->SetMailboxSynchronisationLimit( KNSmlDMEmailDefaultHeaderCount );
-        thisElem.iImap4Settings->SetSecureSockets( EFalse );
-        thisElem.iImap4Settings->SetAutoSendOnConnect( ETrue );
-        thisElem.iImap4Settings->SetDisconnectedUserMode( ETrue );
-        thisElem.iImap4Settings->SetImapIdle( ETrue );
-        thisElem.iImap4Settings->SetUpdatingSeenFlags( ETrue );
-        }
-    thisElem.iSmtpSettings->SetLoginNameL(KNullDesC8);
-    thisElem.iSmtpSettings->SetPasswordL(KNullDesC8);
-    // Set IAP id to 0 and ask from user if ToNapID/SToNapID not sent
-    TImIAPChoice tmpIap;
-    tmpIap.iIAP = KNSmlDmEmailAlwaysAskIap;
-    tmpIap.iDialogPref = ECommDbDialogPrefPrompt;
-    thisElem.iIapPref->AddIAPL( tmpIap, 0 );
-    thisElem.iSmtpIapPref->AddIAPL( tmpIap, 0 );
-    CleanupStack::PopAndDestroy(); //emailAccs
-    _DBG_FILE("CNSmlDmEmailAdapter::SetDefaultSettingsL() :: end");
-    }
-
-// -----------------------------------------------------------------------------
-// HBufC* CNSmlDmEmailAdapter::IntToDesLC(const TInt aLuid) const
-// Converts integer to 16bit descriptor
-// -----------------------------------------------------------------------------
-HBufC* CNSmlDmEmailAdapter::IntToDesLC(const TInt aLuid) const
-    {
-    HBufC* buf = HBufC::NewLC(10); //10 = max length of 32bit integer
-    TPtr ptrBuf = buf->Des();
-    ptrBuf.Num(aLuid);
-    return buf;
-    }
-
-// -----------------------------------------------------------------------------
-// HBufC8* CNSmlDmEmailAdapter::IntToDes8LC(const TInt aLuid) const
-// Converts integer to 8bit descriptor
-// -----------------------------------------------------------------------------
-HBufC8* CNSmlDmEmailAdapter::IntToDes8LC(const TInt aLuid) const
-    {
-    HBufC8* buf = HBufC8::NewLC(10); //10 = max length of 32bit integer
-    TPtr8 ptrBuf = buf->Des();
-    ptrBuf.Num(aLuid);
-    return buf;
-    }
-   
-// -----------------------------------------------------------------------------
-//      CNSmlDmEmailAdapter::ConvertTo8LC()
-//      Converts string value to 8-bit
-//      
-// -----------------------------------------------------------------------------
-HBufC8* CNSmlDmEmailAdapter::ConvertTo8LC( const TDesC& aSource ) const
-    {
-    HBufC8* buf = HBufC8::NewLC( aSource.Length()*2);
-    TPtr8 bufPtr = buf->Des();
-    CnvUtfConverter::ConvertFromUnicodeToUtf8( bufPtr, aSource );
-
-    return buf;
-    }
-
-// -----------------------------------------------------------------------------
-// TInt CNSmlDmEmailAdapter::ValidateAndStoreSettingsL(TInt aIndex
-// Transfers the email settings from memory to phones permanent data store
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::ValidateAndStoreSettingsL(TInt aIndex)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::ValidateAndStoreSettingsL() : begin");
-    TInt luid = 0;
-
-    TNSmlEmailSettingsElement& thisElem = iBuffer->At(aIndex);
-
-    if( iBuffer->At( aIndex ).iJustFetch )
-        {
-        _DBG_FILE("CNSmlDmEmailAdapter::ValidateAndStoreSettingsL() : end");
-        return luid;
-        }
-    CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-    if( iBuffer->At( aIndex ).iLuid != 0 )
-        {
-        switch ( thisElem.iAccType )
-            {
-        case EPop:
-            {
-            TPopAccount accId;
-            emailAccs->GetPopAccountL( thisElem.iServiceId, accId ); 
-            //Copy name field
-            accId.iPopAccountName.Copy(thisElem.iName->Des());
-            emailAccs->SavePopSettingsL( accId, *thisElem.iPop3Settings );
-	        emailAccs->SavePopIapSettingsL( accId, *thisElem.iIapPref );            
-            TSmtpAccount smtpAcc;
-	        emailAccs->GetSmtpAccountL( accId.iSmtpService, smtpAcc ); 
-	        //Copy name field
-	        smtpAcc.iSmtpAccountName.Copy(thisElem.iName->Des());
-	        emailAccs->SaveSmtpSettingsL( smtpAcc, *thisElem.iSmtpSettings );
-	        emailAccs->SaveSmtpIapSettingsL( smtpAcc, *thisElem.iSmtpIapPref );
-            break;            
-            }
-        case EImap:
-            {
-            TImapAccount accId2;
-    	    emailAccs->GetImapAccountL( thisElem.iServiceId, accId2 );
-    	    //Copy name field
-    	    accId2.iImapAccountName.Copy(thisElem.iName->Des());
-            emailAccs->SaveImapSettingsL( accId2, *thisElem.iImap4Settings );
-	        emailAccs->SaveImapIapSettingsL( accId2, *thisElem.iIapPref );
-            TSmtpAccount smtpAccForImap;
-	        emailAccs->GetSmtpAccountL( accId2.iSmtpService, smtpAccForImap );
-	        //Copy name field
-	        smtpAccForImap.iSmtpAccountName.Copy(thisElem.iName->Des()); 
-	        emailAccs->SaveSmtpSettingsL( smtpAccForImap, *thisElem.iSmtpSettings );
-	        emailAccs->SaveSmtpIapSettingsL( smtpAccForImap, *thisElem.iSmtpIapPref );
-            break;            
-            }
-        default:
-
-            break;
-            }
-        }
-    else // if(iBuffer->At(aIndex).iLuid != 0)
-        {
-        RTelServer telServer;
-        User::LeaveIfError( telServer.Connect() );
-        CleanupClosePushL(telServer);
-
-        TInt numPhones = 0;
-        User::LeaveIfError( telServer.EnumeratePhones( numPhones ) );
-        if ( numPhones < 1 )
-            {
-            User::Leave( KErrNotFound );
-            }
-
-        RTelServer::TPhoneInfo info;
-        User::LeaveIfError( telServer.GetPhoneInfo( 0, info ) );
-        RMobilePhone mobilePhone;
-        User::LeaveIfError( mobilePhone.Open( telServer, info.iName ) );
-        CleanupClosePushL( mobilePhone );
-        TRequestStatus status;
-        RMobilePhone::TMobilePhoneIdentityV1 mobilePhoneIdentity;
-        mobilePhone.GetPhoneId( status, mobilePhoneIdentity );
-        User::WaitForRequest( status );
-        User::LeaveIfError( status.Int() );
-        TBuf<50> imei;            
-        imei.Copy( mobilePhoneIdentity.iSerialNumber );
-        
-        CleanupStack::PopAndDestroy(&mobilePhone);
-        CleanupStack::PopAndDestroy(&telServer);
-        if ( thisElem.iPop3Settings )
-            {
-            TPopAccount accId;
-            accId = emailAccs->CreatePopAccountL( *thisElem.iName, 
-                                                  *thisElem.iPop3Settings, 
-                                                  *thisElem.iIapPref, 
-                                                  EFalse );
-
-    	    TSmtpAccount smtpAcc = emailAccs->CreateSmtpAccountL( accId, 
-    	                                                          *thisElem.iSmtpSettings, 
-                                                                  *thisElem.iSmtpIapPref, 
-                                                                  EFalse );
-            TMsvEntry smtpEntry;
-            TMsvEntry popEntry;
-            CMsvEntry* entry = iMsvSession->GetEntryL(smtpAcc.iSmtpService);
-            CleanupStack::PushL(entry);
-            smtpEntry = entry->Entry();
-            smtpEntry.iMtmData2 =  smtpAcc.iSmtpAccountId;
-            smtpEntry.iDescription.Set( imei );
-	        entry->ChangeL(smtpEntry);
-            CleanupStack::PopAndDestroy(entry);
-
-            entry = iMsvSession->GetEntryL(smtpAcc.iRelatedService);
-            CleanupStack::PushL(entry);
-            popEntry = entry->Entry();
-            popEntry.iMtmData2 =  accId.iPopAccountId;          
-            popEntry.iDescription.Set( imei );
-	        entry->ChangeL(popEntry);
-            CleanupStack::PopAndDestroy(entry);
-
-            if ( accId.iSmtpService != smtpAcc.iSmtpService || smtpAcc.iRelatedService != accId.iPopService )
-                {
-                DBG_ARGS8(_S8("ERROR!!! PopAccount creation: iSmtpService=%d, smtpAcc.iSmtpService=%d, iRelatedService=%d, iPopService=%d"),
-                                accId.iSmtpService, smtpAcc.iSmtpService, smtpAcc.iRelatedService, accId.iPopService );
-                }                                                               
-            
-            thisElem.iAccType = EPop;
-            thisElem.iAccId = accId.iPopAccountId;
-            SetLuidById( thisElem.iAccType, thisElem.iAccId, thisElem.iLuid );
-
-			  RArray<TPopAccount> popAccs;
-              CleanupClosePushL( popAccs );
-              emailAccs->GetPopAccountsL( popAccs );
-              
-			  RArray<TImapAccount> imapAccs;
-              CleanupClosePushL( imapAccs );
-              emailAccs->GetImapAccountsL( imapAccs );
-              
-              if ( popAccs.Count() == 1 && !imapAccs.Count())
-                 {
-                  emailAccs->SetDefaultSmtpAccountL( smtpAcc );
-                 }
-              
-              CleanupStack::PopAndDestroy( &imapAccs );          
-			  CleanupStack::PopAndDestroy( &popAccs );          
-            // Check and set the default account
-	        TSmtpAccount defSmtp;
-	        TInt retVal = emailAccs->DefaultSmtpAccountL( defSmtp );
-	        if (  retVal != KErrNone )
-	            {
-                RArray<TPopAccount> popAccounts;
-                CleanupClosePushL( popAccounts );
-                emailAccs->GetPopAccountsL( popAccounts );
-                if ( popAccounts.Count() > 0 )
-                    {
-                    TSmtpAccount relatedSmtp;
-                    emailAccs->GetSmtpAccountL( popAccounts[0].iSmtpService, relatedSmtp );
-	                emailAccs->SetDefaultSmtpAccountL( relatedSmtp );
-                    }
-                CleanupStack::PopAndDestroy( &popAccounts );
-	            }	                
-            }
-        else if ( thisElem.iImap4Settings )
-            {
-            TImapAccount accId2;
-            accId2 = emailAccs->CreateImapAccountL(*thisElem.iName, 
-                                                   *thisElem.iImap4Settings, 
-                                                   *thisElem.iIapPref,
-                                                   EFalse);
-
-    	    TSmtpAccount smtpAcc = emailAccs->CreateSmtpAccountL( accId2, 
-    	                                                          *thisElem.iSmtpSettings, 
-                                                                  *thisElem.iSmtpIapPref, 
-                                                                  EFalse );
-            
-            TMsvEntry smtpEntry;
-            TMsvEntry imapEntry;
-            CMsvEntry* entry = iMsvSession->GetEntryL(smtpAcc.iSmtpService);
-            CleanupStack::PushL(entry);
-            smtpEntry = entry->Entry();
-            smtpEntry.iMtmData2 =  smtpAcc.iSmtpAccountId;          
-            smtpEntry.iDescription.Set( imei );
-	        entry->ChangeL(smtpEntry);
-            CleanupStack::PopAndDestroy(entry);
-
-            entry = iMsvSession->GetEntryL(smtpAcc.iRelatedService);
-            CleanupStack::PushL(entry);
-            imapEntry = entry->Entry();
-            imapEntry.iMtmData2 =  accId2.iImapAccountId;          
-            imapEntry.iDescription.Set( imei );
-	        entry->ChangeL(imapEntry);
-            CleanupStack::PopAndDestroy(entry);
-
-            if ( accId2.iSmtpService != smtpAcc.iSmtpService || smtpAcc.iRelatedService != accId2.iImapService )
-                {
-                DBG_ARGS8(_S8("ERROR!!! ImapAccount creation: iSmtpService=%d, smtpAcc.iSmtpService=%d, iRelatedService=%d, iImapService=%d"),
-                                accId2.iSmtpService, smtpAcc.iSmtpService, smtpAcc.iRelatedService, accId2.iImapService );
-                }
-                                                                  
-                                                   
-            thisElem.iAccType = EImap;
-            thisElem.iAccId = accId2.iImapAccountId;
-            SetLuidById( thisElem.iAccType, thisElem.iAccId, thisElem.iLuid );
-
-            // Check and set the default account
-            RArray<TPopAccount> popAccs;
-            CleanupClosePushL( popAccs );
-            emailAccs->GetPopAccountsL( popAccs );
-              
-			RArray<TImapAccount> imapAccs;
-            CleanupClosePushL( imapAccs );
-            emailAccs->GetImapAccountsL( imapAccs );
-              
-            if ( imapAccs.Count() == 1 && !popAccs.Count())
-            	{
-                emailAccs->SetDefaultSmtpAccountL( smtpAcc );
-                }
-              
-            CleanupStack::PopAndDestroy( &imapAccs );          
-			CleanupStack::PopAndDestroy( &popAccs );
-	        TSmtpAccount defaultSmtp;
-	        TInt retVal = emailAccs->DefaultSmtpAccountL( defaultSmtp );
-	        if (  retVal != KErrNone )
-	            {
-                RArray<TImapAccount> imapAccs;
-                CleanupClosePushL( imapAccs );
-                emailAccs->GetImapAccountsL( imapAccs );
-                if ( imapAccs.Count() > 0 )
-                    {
-                    TSmtpAccount relatedSmtp;
-                    emailAccs->GetSmtpAccountL( imapAccs[0].iSmtpService, relatedSmtp );
-	                emailAccs->SetDefaultSmtpAccountL( relatedSmtp );
-                    }
-                CleanupStack::PopAndDestroy( &imapAccs );
-	            }	                
-            }
-
-        }
-    luid = thisElem.iLuid;
-    CleanupStack::PopAndDestroy(); //emailAccs
-    _DBG_FILE("CNSmlDmEmailAdapter::ValidateAndStoreSettingsL() : end");
-    return luid;
-    }
-// -----------------------------------------------------------------------------
-// void CNSmlDmEmailAdapter::GetIdByLuid( TNSmlEmailAccountType& aAccType,
-//                                           TInt& aAccId, 
-//                                       const TInt aLuid ) const
-// Calculates the account type and id on basis of luid
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::GetIdByLuid( TNSmlEmailAccountType& aAccType,
-                                       TInt& aAccId, 
-                                       const TInt aLuid ) const
-    {
-    if ( ( aLuid > KNSmlDmEmailImapLuidLow ) && 
-         ( aLuid < KNSmlDmEmailImapLuidHigh ) )
-        {
-        aAccType = EImap;
-        aAccId = aLuid - KNSmlDmEmailImapLuidLow;
-        }
-    else if (( aLuid > KNSmlDmEmailImapLuidHigh ) && 
-             ( aLuid < KNSmlDmEmailPopLuidHigh ))
-        {
-        aAccType = EPop;
-        aAccId = aLuid - KNSmlDmEmailImapLuidHigh;
-        }
-    else
-        {
-        aAccType = EUnknown;
-        }
-
-    }
-
-
-// -----------------------------------------------------------------------------
-// void CNSmlDmEmailAdapter::SetLuidById( const TNSmlEmailAccountType& aAccType,
-// const TInt& aAccId, TInt& aLuid ) const
-// Sets the luid on basis of account type and id
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::SetLuidById( const TNSmlEmailAccountType& aAccType,
-                                       const TInt& aAccId, TInt& aLuid ) const
-    {
-    switch (aAccType)
-        {
-    case EImap :
-        aLuid = KNSmlDmEmailImapLuidLow + aAccId;
-        break;
-
-    case EPop :
-        aLuid = KNSmlDmEmailImapLuidHigh + aAccId;
-        break;
-
-    default :
-        aLuid = -1;
-        break;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// TBool CNSmlDmEmailAdapter::AccountExistsL( const CEmailAccounts* aAccs, 
-//                                          const TNSmlEmailAccountType aAccType, 
-//                                          const TInt aId,
-//                                          TInt aIndex )
-// Checks if the accout matching the given parameters is found. 
-// returns True if found.
-// -----------------------------------------------------------------------------
-TBool CNSmlDmEmailAdapter::AccountExistsL( CEmailAccounts* aAccs, 
-                                           const TNSmlEmailAccountType aAccType, 
-                                           const TInt aId,
-                                           TInt aIndex )
-    {
-    RArray<TImapAccount> imap4Accs;
-    CleanupClosePushL( imap4Accs );
-    RArray<TPopAccount> pop3Accs;
-    CleanupClosePushL( pop3Accs );
-    switch ( aAccType )
-        {
-    case EImap:
-        aAccs->GetImapAccountsL(imap4Accs);
-        for(TInt i=0;i<imap4Accs.Count();i++)
-            {
-            if ( imap4Accs[i].iImapAccountId == aId )
-                {
-                
-                if ( aIndex >= 0 )
-                    {
-                    iBuffer->At(aIndex).iServiceId = imap4Accs[i].iImapService;
-                    delete iBuffer->At(aIndex).iName;
-                    iBuffer->At(aIndex).iName = NULL;
-                    iBuffer->At(aIndex).iName = HBufC::NewL(imap4Accs[i].iImapAccountName.Size());
-                    *iBuffer->At(aIndex).iName = imap4Accs[i].iImapAccountName;
-                    }
-                CleanupStack::PopAndDestroy(2); //imap4Accs, pop3Accs
-                return ETrue;
-                }
-            }
-        break;
-        
-    case EPop:
-        aAccs->GetPopAccountsL(pop3Accs);
-        for(TInt i=0;i<pop3Accs.Count();i++)
-            {
-            if ( pop3Accs[i].iPopAccountId == aId )
-                {
-                if ( aIndex >= 0 )
-                    {
-                    iBuffer->At(aIndex).iServiceId = pop3Accs[i].iPopService;                    
-                    delete iBuffer->At(aIndex).iName;
-                    iBuffer->At(aIndex).iName = NULL;
-                    iBuffer->At(aIndex).iName = HBufC::NewL(pop3Accs[i].iPopAccountName.Size());
-                    *iBuffer->At(aIndex).iName = pop3Accs[i].iPopAccountName;
-                    }
-                CleanupStack::PopAndDestroy(2); //imap4Accs, pop3Accs
-                return ETrue;
-                }
-            }
-        break;
-    default:
-        // Returns EFalse in this case.
-        break;
-        }
-    CleanupStack::PopAndDestroy(2); //imap4Accs, pop3Accs
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// TInt CNSmlDmEmailAdapter::DoRestoreSettingsL(TInt aIndex)
-// Restores the settings to the adapter from settings store
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::DoRestoreSettingsL(TInt aIndex)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::DoRestoreSettingsL() : begin");
-    TNSmlEmailSettingsElement& thisElem = iBuffer->At(aIndex);
-
-    CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-    TInt err = KErrNone;
-
-    // These are destroyed latest at destructor
-    thisElem.iSmtpSettings = new (ELeave) CImSmtpSettings;
-    thisElem.iIapPref = CImIAPPreferences::NewLC();
-    thisElem.iSmtpIapPref = CImIAPPreferences::NewLC();
-
-    switch( thisElem.iAccType )
-        {
-    case EImap:
-        if (AccountExistsL(emailAccs, thisElem.iAccType, thisElem.iAccId, aIndex ))
-            {
-            TImapAccount imapAccId;
-            
-            thisElem.iImap4Settings = new(ELeave) CImImap4Settings;
-            
-            //Get IMAP account by iAccId id
-            emailAccs->GetImapAccountL(thisElem.iServiceId, imapAccId);
-            //Get IMAP settings by account id
-            emailAccs->LoadImapSettingsL( imapAccId, *thisElem.iImap4Settings );
-            //Get IMAP settings IAP prefs
-            emailAccs->LoadImapIapSettingsL( imapAccId, *thisElem.iIapPref );
-            
-            TSmtpAccount smtpAccount;
-            //Get smtp account by related IMAP id
-            emailAccs->GetSmtpAccountL( imapAccId.iSmtpService, smtpAccount );  
-            //Get smtp settings by IMAP id                                        
-            emailAccs->LoadSmtpSettingsL( smtpAccount, *thisElem.iSmtpSettings );
-            //Get Smtp settings IAP prefs
-            emailAccs->LoadSmtpIapSettingsL( smtpAccount, *thisElem.iSmtpIapPref );
-            }
-        else
-            {
-            err = KErrNotFound;
-            }
-        break;
-
-    case EPop:
-        if (AccountExistsL(emailAccs, thisElem.iAccType, thisElem.iAccId, aIndex ))
-            {
-            TPopAccount popAccId;
-            
-            thisElem.iPop3Settings = new(ELeave) CImPop3Settings;
-            
-            //Get POP3 account by iAccId id
-            emailAccs->GetPopAccountL( thisElem.iServiceId, popAccId );
-            //Get POP3 settings by account id
-            emailAccs->LoadPopSettingsL( popAccId, *thisElem.iPop3Settings );
-            //Get POP3 setting IAP prefs
-            emailAccs->LoadPopIapSettingsL( popAccId, *thisElem.iIapPref );
-                        
-            TSmtpAccount smtpAccount;
-            //Get smtp account by related POP id
-            emailAccs->GetSmtpAccountL( popAccId.iSmtpService, smtpAccount );  
-            //Get smtp settings                                        
-            emailAccs->LoadSmtpSettingsL( smtpAccount, *thisElem.iSmtpSettings );
-            //Get Smtp setting IAP prefs
-            emailAccs->LoadSmtpIapSettingsL( smtpAccount, *thisElem.iSmtpIapPref );
-            }
-        else
-            {
-            err = KErrNotFound;
-            }
-        break;
-
-    default:
-        err = KErrNotFound;
-        break;
-        }
-
-    if ( err )
-        {
-        _DBG_FILE("CNSmlDmEmailAdapter::DoRestoreSettingsL() : \
-         KErrNotFound end");
-        CleanupStack::PopAndDestroy(2); // iIapPref, iSmtpIapPref
-        CleanupStack::PopAndDestroy(emailAccs); //emailAccs
-        return KErrNotFound;
-        }
-
-    CleanupStack::Pop(2); // iIapPref, iSmtpIapPref
-    CleanupStack::PopAndDestroy(emailAccs); //emailAccs
-    _DBG_FILE("CNSmlDmEmailAdapter::DoRestoreSettingsL() : end");
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::OpenSessionL()
-// Opens the CMsvSession if it is not open already
-// -----------------------------------------------------------------------------
-TInt CNSmlDmEmailAdapter::OpenSessionL()
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::OpenSessionL() : begin");
-    if(!iMsvSession)
-        {
-        TRAPD(err, iMsvSession = CMsvSession::OpenSyncL(*this));
-        _DBG_FILE("CNSmlDmEmailAdapter::OpenSessionL() : end");
-        return err;
-        }
-
-    _DBG_FILE("CNSmlDmEmailAdapter::OpenSessionL() : end");
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDmEmailAdapter::FillNodeInfoL()
-// Fills the node info in ddf structure
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::FillNodeInfoL( MSmlDmDDFObject& aNode,
-                                         const TSmlDmAccessTypes& aAccTypes,
-                                         MSmlDmDDFObject::TOccurence aOccurrence,
-                                         MSmlDmDDFObject::TScope aScope,
-                                         MSmlDmDDFObject::TDFFormat aFormat,
-                                         const TDesC8& aDescription) const
-    {
-    aNode.SetAccessTypesL(aAccTypes);
-    aNode.SetOccurenceL(aOccurrence);
-    aNode.SetScopeL(aScope);
-    aNode.SetDFFormatL(aFormat);
-    if(aFormat!=MSmlDmDDFObject::ENode)
-        {
-        aNode.AddDFTypeMimeTypeL(KNSmlDMEmailTextPlain);
-        }
-    aNode.SetDescriptionL(aDescription);
-
-    }
-
-// -----------------------------------------------------------------------------
-// TPtrC8 CNSmlDmEmailAdapter::RemoveDotSlash(const TDesC8& aURI)
-// return uri without dot and slash in start
-// -----------------------------------------------------------------------------
-TPtrC8 CNSmlDmEmailAdapter::RemoveDotSlash(const TDesC8& aURI) const
-    {
-    if(aURI.Find(KNSmlEmailUriDotSlash)==0)
-        {
-        return aURI.Right(aURI.Length()-KNSmlEmailUriDotSlash().Length());
-        }
-    else
-        {
-        return aURI;
-        }
-    }
-// -----------------------------------------------------------------------------
-// CSmlDmAdapter::TError CNSmlDmEmailAdapter::FetchObjectL(const TDesC8& aURI,
-// const TDesC8& aLUID, CBufBase& aObject)
-// Fetches object acording to URI & LUID. Retur codes acording to 
-// CSmlDmAdapter::TError.
-// -----------------------------------------------------------------------------
-CSmlDmAdapter::TError CNSmlDmEmailAdapter::FetchObjectL(const TDesC8& aURI,
-                                                        const TDesC8& aLUID,
-                                                        CBufBase& aObject)
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchObjectL() : begin");
-    CSmlDmAdapter::TError status = EOk;
-    if(aLUID.Length()==0)
-        {
-        _DBG_FILE("CNSmlDmEmailAdapter::FetchObjectL() : ENotFound end");
-        return CSmlDmAdapter::ENotFound;
-        }
-    if( OpenSessionL() != KErrNone )
-        {
-        _DBG_FILE("CNSmlDmEmailAdapter::FetchObjectL() : EError end");
-        return CSmlDmAdapter::EError;
-        }
-    TInt luid = DesToInt(aLUID);
-    TInt index  = -1;
-    for(TInt i=0;i<iBuffer->Count();i++)
-        {
-        if(iBuffer->At(i).iLuid == luid)
-            {
-            index = i;
-            break;
-            }
-        }
-
-    if(index<0)
-        {
-        TNSmlEmailSettingsElement newNode;
-        newNode.iImap4Settings = NULL;
-        newNode.iPop3Settings = NULL;
-        newNode.iSmtpSettings = NULL;
-        newNode.iIapPref = NULL;
-        newNode.iLuid = luid;
-        newNode.iMappingName = aURI.AllocLC();
-        newNode.iName = HBufC::NewLC(0);
-        newNode.iNodeBuf = new (ELeave)
-            CArrayFixFlat <TNSmlEmailCommandElement> (KNSmlDmEmailGranularity);
-        newNode.iExecuted = ETrue;
-        newNode.iJustFetch = ETrue;
-        GetIdByLuid(newNode.iAccType, newNode.iAccId, luid);
-        iBuffer->AppendL(newNode);
-        index = iBuffer->Count() - 1;
-        if(DoRestoreSettingsL(index)!=KErrNone)
-            {
-            CleanupStack::Pop(2); //newNode.iMappingName,newNode.iName
-            _DBG_FILE("CNSmlDmEmailAdapter::FetchObjectL() : EError end");
-            return CSmlDmAdapter::EError;
-            }
-        CleanupStack::Pop(2); //newNode.iMappingName,newNode.iName
-        }
-
-    TPtrC8 lastUriSeg = LastURISeg(aURI);
-
-    if(lastUriSeg.Compare(KNSmlDMEmailName)==0)
-        {
-        HBufC8 *data = HBufC8::NewLC(iBuffer->At(index).iName->Length());
-        TPtr8 dataPtr = data->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr, iBuffer->At(index).iName->Des() );
-        aObject.InsertL(0,dataPtr);
-        CleanupStack::PopAndDestroy(); //data
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailUID)==0)
-        {
-        HBufC *data = NULL;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iPop3Settings->LoginName().Length());
-            data->Des().Copy(iBuffer->At(index).iPop3Settings->LoginName());
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iImap4Settings->LoginName().Length());
-            data->Des().Copy(iBuffer->At(index).iImap4Settings->LoginName());
-            }
-        if(data)
-            {
-            HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-            CleanupStack::PushL(data8);
-            aObject.InsertL(0,*data8);
-            CleanupStack::PopAndDestroy(2);//data, data8
-            }
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailPW)==0)
-        {
-        HBufC *data = NULL;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iPop3Settings->Password().Length());
-            data->Des().Copy(iBuffer->At(index).iPop3Settings->Password());
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            data = HBufC::NewLC(iBuffer->At(index).iImap4Settings->Password().Length());
-            data->Des().Copy(iBuffer->At(index).iImap4Settings->Password());
-            }
-        if(data)
-            {
-            HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-            CleanupStack::PushL(data8);
-            aObject.InsertL(0,*data8);
-            CleanupStack::PopAndDestroy(2);//data, data8
-            }
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailUAddr)==0)
-        {
-        HBufC *data = NULL;
-        data = iBuffer->At(index).iSmtpSettings->EmailAddress().AllocLC();
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        aObject.InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailUName)==0)
-        {
-
-        HBufC *data = NULL;
-        data = iBuffer->At(index).iSmtpSettings->EmailAlias().AllocLC();
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        aObject.InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-
-    else if(lastUriSeg.Compare( KNSmlDMEmailMrcv)==0)
-        {
-        HBufC *data = NULL;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            data = iBuffer->At(index).iPop3Settings->ServerAddress().AllocLC();
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            data = iBuffer->At(index).iImap4Settings->ServerAddress().AllocLC();
-            }
-        else
-        	{
-          	status = CSmlDmAdapter::ENotFound;
-          	return status;            
-        	}
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        aObject.InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailMsnd)==0)
-        {
-        HBufC *data = NULL;
-        data = iBuffer->At(index).iSmtpSettings->ServerAddress().AllocLC();
-        HBufC8 *data8 = HBufC8::NewLC(data->Size());
-        TPtr8 dataPtr8 = data8->Des();
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( dataPtr8, data->Des() );
-
-        aObject.InsertL(0,dataPtr8);
-        CleanupStack::PopAndDestroy(2); //data, data8
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailMpro)==0)
-        {
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            aObject.InsertL(0,KNSmlDMEmailMproPOP);
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            aObject.InsertL(0,KNSmlDMEmailMproIMAP);
-            }
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailUseSecCon)==0)
-        {
-        FetchSecurityValueL(aObject, &iBuffer->At(index), EUseSecCon );
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUseSauth)==0)
-        {
-        if(iBuffer->At(index).iSmtpSettings->SMTPAuth())
-            {
-            aObject.InsertL(0,KNSmlDMEmailTrue);
-            }
-        else
-            {
-            aObject.InsertL(0,KNSmlDMEmailFalse);
-            }
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailSauthUID)==0)
-        {
-        HBufC *data = HBufC::NewLC(iBuffer->At(index).iSmtpSettings->LoginName().Length());
-        data->Des().Copy(iBuffer->At(index).iSmtpSettings->LoginName());
-        HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-        CleanupStack::PushL(data8);
-        aObject.InsertL(0,*data8);
-        CleanupStack::PopAndDestroy(2);//data, data8
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailSauthPW)==0)
-        {
-        HBufC *data = HBufC::NewLC(iBuffer->At(index).iSmtpSettings->Password().Length());
-        data->Des().Copy(iBuffer->At(index).iSmtpSettings->Password());
-        HBufC8 *data8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L(*data);
-        CleanupStack::PushL(data8);
-        aObject.InsertL(0,*data8);
-        CleanupStack::PopAndDestroy(2);//data, data8
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailPtxtSAuth)==0)
-        {
-        if(iBuffer->At(index).iSmtpSettings->InboxLoginDetails())
-            {
-            aObject.InsertL(0,KNSmlDMEmailTrue);
-            }
-        else
-            {
-            aObject.InsertL(0,KNSmlDMEmailFalse);
-            }
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailSUseSecCon)==0)
-        {
-        FetchSecurityValueL(aObject, &iBuffer->At(index), ESuseSecCon );
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailUseStartTLS)==0)
-        {
-        FetchSecurityValueL(aObject, &iBuffer->At(index), EUseStartTls );
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailSUseStartTLS)==0)
-        {
-        FetchSecurityValueL(aObject, &iBuffer->At(index), ESuseStartTls );
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailMrcvPort)==0)
-        {
-        TUint port;
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            port = iBuffer->At(index).iPop3Settings->Port();
-            }
-        else 
-            {
-            port = iBuffer->At(index).iImap4Settings->Port();
-            }
-        HBufC8 *data = IntToDes8LC(port);
-        aObject.InsertL(0,data->Des());
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailMsndPort)==0)
-        {
-        TUint port = iBuffer->At(index).iSmtpSettings->Port();
-        HBufC8 *data = IntToDes8LC(port);
-        aObject.InsertL(0,data->Des());
-        CleanupStack::PopAndDestroy(); //data
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailUseAPOP)==0)
-        {
-        if(iBuffer->At(index).iPop3Settings!= NULL)
-            {
-            if(iBuffer->At(index).iPop3Settings->Apop())
-                {
-                aObject.InsertL(0,KNSmlDMEmailTrue);
-                }
-            else
-                {
-                aObject.InsertL(0,KNSmlDMEmailFalse);
-                }
-            }
-        else if(iBuffer->At(index).iImap4Settings!= NULL)
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-        }
-
-    else if (lastUriSeg.Compare(KNSmlDMEmailFolderPath)==0)
-        {
-        if( iBuffer->At(index).iImap4Settings )
-            {
-            aObject.InsertL(0, iBuffer->At(index).iImap4Settings->FolderPath() );
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-        }
-
-    else if(lastUriSeg.Compare(KNSmlDMEmailToNapID)==0)
-        {
-        CNSmlDMIAPMatcher* iapmatch=CNSmlDMIAPMatcher::NewL( &Callback() );
-        CleanupStack::PushL(iapmatch);
-        HBufC8* uri8 = NULL;
-        TInt iapCount = iBuffer->At(index).iIapPref->NumberOfIAPs();
-        if ( iapCount )
-            {
-            TImIAPChoice localIAP = iBuffer->At(index).iIapPref->IAPPreference(0);
-            uri8 = iapmatch->URIFromIAPIdL( localIAP.iIAP );
-            }
-
-        if( uri8 )
-            {
-            CleanupStack::PushL(uri8);
-            aObject.InsertL(0,uri8->Des());
-            status = CSmlDmAdapter::EOk;
-            CleanupStack::PopAndDestroy(); // uri8
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-
-        CleanupStack::PopAndDestroy(); // iapMatch
-        }
-    else if(lastUriSeg.Compare(KNSmlDMEmailSToNapID)==0)
-        {
-        // SToNapID exists only for SMTP
-        if (iBuffer->At(index).iSmtpSettings!= NULL)
-            {
-            CNSmlDMIAPMatcher* iapmatch=CNSmlDMIAPMatcher::NewL( &Callback() );
-            CleanupStack::PushL(iapmatch);
-            HBufC8* uri8 = NULL;
-            TInt iapCount = iBuffer->At(index).iIapPref->NumberOfIAPs();
-            if ( iapCount )
-                {
-                TImIAPChoice localIAP = iBuffer->At(index).iSmtpIapPref->IAPPreference(0);
-                uri8 = iapmatch->URIFromIAPIdL( localIAP.iIAP );
-                }
-
-            if( uri8 )
-                {
-                CleanupStack::PushL(uri8);
-                aObject.InsertL(0,uri8->Des());
-                status = CSmlDmAdapter::EOk;
-                CleanupStack::PopAndDestroy(); // uri8
-                }
-            else
-                {
-                status = CSmlDmAdapter::ENotFound;
-                }
-
-            CleanupStack::PopAndDestroy(); // iapMatch
-            }
-        else
-            {
-            status = CSmlDmAdapter::ENotFound;
-            }
-        }
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchObjectL() : end");
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// void CNSmlDmEmailAdapter::SetDefaultSecurityL(const TDesC8& aObject,
-// const TNSmlEmailSettingsElement* thisElem,
-// const TNSmlEmailSecuritySetting aSetting )
-// Sets (on/off) the security modes: SSL/TLS, StartTLS
-// -----------------------------------------------------------------------------
-void CNSmlDmEmailAdapter::SetDefaultSecurityL(const TDesC8& aObject,
-                                              const TNSmlEmailSettingsElement* aThisElem,
-                                              const TNSmlEmailSecuritySetting aSetting
-    ) const
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::SetDefaultSecurityL(): begin");
-    HBufC8 *data = aObject.AllocLC();
-    TPtr8 dataPtr = data->Des();
-    dataPtr.Capitalize();
-    TBool object=EFalse;
-    if(dataPtr.Find(KNSmlDMEmailTrue)>=0)
-        {
-        object = ETrue;
-        }
-    switch ( aSetting )
-        {
-    case EUseSecCon :
-        if ( object )
-            {
-            if ( aThisElem->iImap4Settings )
-                {
-                aThisElem->iImap4Settings->SetSecureSockets(EFalse);
-                aThisElem->iImap4Settings->SetSSLWrapper(ETrue);
-                aThisElem->iImap4Settings->SetPort( KNSmlDMEmailSslWrappedImap4Port );
-                }
-            else if ( aThisElem->iPop3Settings )
-                {
-                aThisElem->iPop3Settings->SetSecureSockets(EFalse);
-                aThisElem->iPop3Settings->SetSSLWrapper(ETrue);
-                aThisElem->iPop3Settings->SetPort( KNSmlDMEmailSslWrappedPop3Port );
-                }
-            }
-        else
-            {
-            if ( aThisElem->iImap4Settings )
-                {
-                aThisElem->iImap4Settings->SetPort( KNSmlDMEmailNormalImap4Port );
-                aThisElem->iImap4Settings->SetSSLWrapper(EFalse);
-                }
-            else if ( aThisElem->iPop3Settings )
-                {
-                aThisElem->iPop3Settings->SetPort( KNSmlDMEmailNormalPop3Port );
-                aThisElem->iPop3Settings->SetSSLWrapper(EFalse);
-                }
-            }
-        break;
-    case EUseStartTls :
-         if ( object )
-            {
-           if ( aThisElem->iImap4Settings )
-                {
-                aThisElem->iImap4Settings->SetSecureSockets(ETrue);
-                aThisElem->iImap4Settings->SetSSLWrapper(EFalse);
-                aThisElem->iImap4Settings->SetPort( KNSmlDMEmailNormalImap4Port );
-                }
-            else if ( aThisElem->iPop3Settings )
-                {
-                aThisElem->iPop3Settings->SetSecureSockets(ETrue);
-                aThisElem->iPop3Settings->SetSSLWrapper(EFalse);
-                aThisElem->iPop3Settings->SetPort( KNSmlDMEmailNormalPop3Port );
-                }
-            }
-        else
-            {
-            if ( aThisElem->iImap4Settings )
-                {
-                aThisElem->iImap4Settings->SetSecureSockets(EFalse);
-                }
-            else if ( aThisElem->iPop3Settings )
-                {
-                aThisElem->iPop3Settings->SetSecureSockets(EFalse);
-                }
-            }
-        break;
-    case ESuseSecCon :
-        if ( object )
-            {
-            // The port is same in all cases
-            aThisElem->iSmtpSettings->SetSecureSockets(EFalse);
-            aThisElem->iSmtpSettings->SetSSLWrapper(ETrue);
-            aThisElem->iSmtpSettings->SetPort( KNSmlDMEmailSslSmtpPort );
-            }
-        else
-            {
-            aThisElem->iSmtpSettings->SetPort( KNSmlDMEmailNormalSmtpPort );
-            aThisElem->iSmtpSettings->SetSSLWrapper( EFalse );
-            }
-        break;
-    case ESuseStartTls :
-        if ( object )
-            {
-            // The port is same in all cases
-            aThisElem->iSmtpSettings->SetSecureSockets(ETrue);
-            aThisElem->iSmtpSettings->SetSSLWrapper(EFalse);
-            aThisElem->iSmtpSettings->SetPort( KNSmlDMEmailNormalSmtpPort );
-            }
-        else
-            {
-            aThisElem->iSmtpSettings->SetSecureSockets( EFalse );
-            }
-
-        break;
-    default :
-        break;
-        }
-    CleanupStack::PopAndDestroy(); // object
-    _DBG_FILE("CNSmlDmEmailAdapter::SetDefaultSecurityL(): end");
-    }
-
-// -----------------------------------------------------------------------------
-// CSmlDmAdapter::TError CNSmlDmEmailAdapter::FetchSecurityValueL(
-//                               CBufBase& aObject,
-//                               const TNSmlEmailSettingsElement* aElem,
-//                               const TNSmlEmailSecuritySetting aSetting )
-// Gets the status(on/off) of security modes  SSL/TLS or StartTLS
-// -----------------------------------------------------------------------------
-
-CSmlDmAdapter::TError CNSmlDmEmailAdapter::FetchSecurityValueL(
-    CBufBase& aObject,
-    const TNSmlEmailSettingsElement* aElem,
-    const TNSmlEmailSecuritySetting aSetting ) const
-    {
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchSecurityValueL(): start");
-    TBool result=EFalse;
-    CSmlDmAdapter::TError status = CSmlDmAdapter::EOk;
-    switch ( aSetting )
-        {
-
-        case EUseStartTls :
-                if ( aElem->iImap4Settings)
-                    {
-                    result = aElem->iImap4Settings->SecureSockets();
-                    }
-                else if(aElem->iPop3Settings)
-                    {
-                    result = aElem->iPop3Settings->SecureSockets();
-                    }
-                else
-                    {
-                    status = CSmlDmAdapter::EError;
-                    }
-                break;
-        case EUseSecCon :
-                if ( aElem->iImap4Settings)
-                    {
-                    result = aElem->iImap4Settings->SSLWrapper();
-                    }
-                else if(aElem->iPop3Settings)
-                    {
-                    result = aElem->iPop3Settings->SSLWrapper();
-                    }
-                else
-                    {
-                    status = CSmlDmAdapter::EError;
-                    }
-                break;
-        case ESuseStartTls :
-                if(aElem->iSmtpSettings)
-                    {
-                    result = aElem->iSmtpSettings->SecureSockets();
-                    }
-                else
-                    {
-                    status = CSmlDmAdapter::EError;
-                    }
-                break;
-        case ESuseSecCon :
-                if(aElem->iSmtpSettings)
-                    {
-                    result = aElem->iSmtpSettings->SSLWrapper();
-                    }
-                else
-                    {
-                    status = CSmlDmAdapter::EError;
-                    }
-                break;
-        default:
-            status = CSmlDmAdapter::EError;
-            break;
-        }
-        
-    if ( result )
-        {
-        aObject.InsertL(0,KNSmlDMEmailTrue);
-        }
-    else 
-        {
-        aObject.InsertL(0,KNSmlDMEmailFalse);
-        }
-    _DBG_FILE("CNSmlDmEmailAdapter::FetchSecurityValueL(): end");
-    return status;
-    }
-
-//--------------------------------------------------------------------
-//TInt CNSmlDmEmailAdapter::ConstructTreeL(const TDesC8& aURI)
-//
-//-------------------------------------------------------------------
-
-TInt CNSmlDmEmailAdapter::ConstructTreeL(const TDesC8& aURI)
-{
-	TInt ret = KErrNotFound;
-	CEmailAccounts* emailAccs = CEmailAccounts::NewLC();
-	
-    if(aURI.Find(KNSmlDMEmailNodeName)!= KErrNotFound)
-        {
-        RArray<TImapAccount> imap4Accounts;
-        CleanupClosePushL( imap4Accounts );
-        emailAccs->GetImapAccountsL(imap4Accounts);
-
-        // First, IMAP accounts
-        //
-        TInt luid;
-        TPtrC8 name;
-        // cycle through every found account
-        for(TInt count = 0; count < imap4Accounts.Count(); count++)
-            {
-            
-            	SetLuidById( EImap, imap4Accounts[count].iImapAccountId, luid );
-            	HBufC8 *uri = HBufC8::NewLC(KNSmlDMEmailNodeName().Length() + 
-                                            KNSmlDMEmailMproIMAP().Length() + 6);
-                                            
-                TPtr8 uriPtr = uri->Des();
-                uriPtr.Append(KNSmlDMEmailNodeName);
-                uriPtr.Append(KNSmlDMEmailSeparator8);
-                uriPtr.Append(KNSmlDMEmailMproIMAP);
-                uriPtr.AppendNumFixedWidth(count,EDecimal,3); 
-                HBufC8 *luidBuf = IntToDes8LC(luid); 
-                HBufC8* mapInfo = Callback().GetLuidAllocL(uriPtr);					
-				if (mapInfo->Length() == 0)
-				{                             
-                	Callback().SetMappingL(uriPtr, luidBuf->Des());
-                	if( aURI.Find(uriPtr) >= 0 )
-        			{ 
-         				ret = luid;
-        			}  
-				}
-				else
-				{
-					delete mapInfo;
-				}
-
-                CleanupStack::PopAndDestroy(2); //uri,luidBuf   
-            }
-        CleanupStack::PopAndDestroy(); //imap4Accounts
-
-        // Then, POP accounts
-        //
-        RArray<TPopAccount> pop3Accounts;
-        CleanupClosePushL( pop3Accounts );
-        emailAccs->GetPopAccountsL( pop3Accounts );        
-        // cycle through every found account
-        for(TInt count = 0; count < pop3Accounts.Count(); count++)
-            {
-            	SetLuidById( EPop, pop3Accounts[count].iPopAccountId, luid );
-                                     
-                HBufC8 *uri = HBufC8::NewLC(KNSmlDMEmailNodeName().Length() + 
-                                            KNSmlDMEmailMproPOP().Length() + 5);
-                TPtr8 uriPtr = uri->Des();
-                uriPtr.Append(KNSmlDMEmailNodeName);
-                uriPtr.Append(KNSmlDMEmailSeparator8);
-                uriPtr.Append(KNSmlDMEmailMproPOP);
-				uriPtr.AppendNumFixedWidth(count,EDecimal,3); 
-                HBufC8 *luidBuf = IntToDes8LC(luid);
-                HBufC8* mapInfo = Callback().GetLuidAllocL(uriPtr);					
-				if (mapInfo->Length() == 0)
-				{ 
-                	Callback().SetMappingL(uriPtr,luidBuf->Des());
-                	if( aURI.Find(uriPtr) >= 0 )
-        			{ 
-         				ret = luid;
-        			}  
-				}
-				else
-				{
-					delete mapInfo;
-				}
-
-                CleanupStack::PopAndDestroy(2); //uri,luidBuf
-            }
-        CleanupStack::PopAndDestroy(); //pop3Accounts
-        }
-        CleanupStack::PopAndDestroy(); //emailAccs
-		return ret;
-}
-
-//------------------------------------------------------------------------------
-// TPtrC8 CNSmlDmEmailAdapter::GetDynamicEmailNodeUri( const TDesC8& aURI )
-// returns Email/xxx URI
-//------------------------------------------------------------------------------
-TPtrC8 CNSmlDmEmailAdapter::GetDynamicEmailNodeUri( const TDesC8& aURI )
-    {
-    DBG_ARGS8(_S8("CNSmlDmEmailAdapter::GetDynamicEmailNodeUri() - <%S> "), &aURI);
-    TInt i= 0;
-	TBuf8<50> EmailAccRoot(KNSmlDMEmailNodeName);
-    for ( i = aURI.Find( KNSmlDMEmailNodeName ) + EmailAccRoot.Length() + 1; 
-						i < aURI.Length(); i++ )
-        {
-        if( aURI[i] == '/' )
-            {
-            break;
-            }
-        }        
-    _DBG_FILE("CNSmlDmEmailAdapter::GetDynamicEmailNodeUri(): end");
-    return aURI.Left( i );
-    }
-
-
-// End of File