--- 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()&¤tList->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