email/imum/Utils/Src/ImumMboxSymbianDataConverter.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Src/ImumMboxSymbianDataConverter.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,986 @@
+/*
+* Copyright (c) 2002 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:  ImumMboxSymbianDataConverter.cpp
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <SendUiConsts.h>
+#include <miutset.h>
+#include <smtpset.h>
+#include <pop3set.h>
+#include <imapset.h>
+
+#include "ImumMboxSymbianDataConverter.h"
+#include "ImumDaSettingsKeys.h"
+#include "ImumInSettingsKeys.h"
+#include "ImumDaErrorCodes.h"
+#include "ImumPanic.h"
+#include "ImumMboxSymbianDataConverter.h"
+#include "ImumMboxInternalDataConverter.h"
+#include "ImumMboxSymbianDataConverter.h"
+#include "ImumMboxData.h"
+#include "ImumInSettingsDataImpl.h"
+#include "ImumInSettingsDataCollectionImpl.h"
+#include "ImumInternalApiImpl.h"
+#include "ComDbUtl.h"
+#include "IMASAccountControl.h"
+#include "EmailUtils.H"
+#include "ImumUtilsLogging.h"
+#include "EmailFeatureUtils.h"
+
+// EXTERNAL DATA STRUCTURES
+// EXTERNAL FUNCTION PROTOTYPES
+// CONSTANTS
+// MACROS
+// LOCAL CONSTANTS AND MACROS
+// MODULE DATA STRUCTURES
+// LOCAL FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ----------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::CImumMboxSymbianDataConverter()
+// ----------------------------------------------------------------------------
+//
+CImumMboxSymbianDataConverter::CImumMboxSymbianDataConverter(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumInSettingsData& aSourceData,
+    CImumMboxData& aTargetData )
+    :
+    iMailboxApi( aMailboxApi ),
+    iTargetData( aTargetData ),
+    iSourceData( aSourceData ),
+    iMailboxProtocol( TUid::Uid( 0 ) ),
+    iCreationPhase( ETrue )
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::CImumMboxSymbianDataConverter, 0, KLogData );
+    IMUM_IN();
+    IMUM_OUT();
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::~CImumMboxSymbianDataConverter()
+// ----------------------------------------------------------------------------
+//
+CImumMboxSymbianDataConverter::~CImumMboxSymbianDataConverter()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::~CImumMboxSymbianDataConverter, 0, KLogData );
+    IMUM_IN();
+
+    iMailboxEntries.Close();
+    IMUM_OUT();
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::ConstructL()
+// ----------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::ConstructL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::ConstructL, 0, KLogData );
+    IMUM_IN();
+
+    TMsvId mailboxId = 0;
+    TInt error =
+        iSourceData[0].GetAttr( TImumDaSettings::EKeyMailboxId, mailboxId );
+
+    // Get the mailbox id from the settings. In case of wizard, the id does
+    // not exist, so this can be skipped.
+    if ( !error && mailboxId )
+        {
+        iMailboxProtocol = iMailboxApi.MailboxUtilitiesL().GetMailboxEntriesL(
+            mailboxId, iMailboxEntries );
+        iCreationPhase = EFalse;
+        }
+    IMUM_OUT();
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::NewL()
+// ----------------------------------------------------------------------------
+//
+CImumMboxSymbianDataConverter* CImumMboxSymbianDataConverter::NewL(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumInSettingsData& aSourceData,
+    CImumMboxData& aTargetData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxSymbianDataConverter::NewL, 0, utils, KLogData );
+    IMUM_IN();
+
+    CImumMboxSymbianDataConverter* self = NewLC(
+        aMailboxApi, aSourceData, aTargetData );
+    CleanupStack::Pop( self );
+
+    IMUM_OUT();
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::NewLC()
+// ----------------------------------------------------------------------------
+//
+CImumMboxSymbianDataConverter* CImumMboxSymbianDataConverter::NewLC(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumInSettingsData& aSourceData,
+    CImumMboxData& aTargetData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxSymbianDataConverter::NewLC, 0, utils, KLogData );
+
+    CImumMboxSymbianDataConverter* self =
+        new ( ELeave ) CImumMboxSymbianDataConverter(
+            aMailboxApi, aSourceData, aTargetData );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    IMUM_OUT();
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::ConvertToSymbianMboxDataLC()
+// ---------------------------------------------------------------------------
+//
+CImumMboxData* CImumMboxSymbianDataConverter::ConvertToSymbianMboxDataLC(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumInSettingsData& aSourceData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxSymbianDataConverter::ConvertToSymbianMboxDataLC, 0, utils, KLogData );
+    IMUM_IN();
+
+    CImumMboxData* targetData = CImumMboxData::NewLC();
+    CImumMboxSymbianDataConverter* converter = NewLC(
+        aMailboxApi, aSourceData, *targetData );
+
+    TRAPD( error, converter->DoConvertToSymbianMboxDataL() );
+    if ( error )
+        {
+        ConverterExceptionL( error );
+        }
+
+    CleanupStack::PopAndDestroy( converter );
+    converter = NULL;
+
+    IMUM_OUT();
+    return targetData;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::DoConvertToSymbianMboxDataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::DoConvertToSymbianMboxDataL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::DoConvertToSymbianMboxDataL, 0, KLogData );
+    IMUM_IN();
+
+    // Collect the data from the entry
+    if ( !iCreationPhase )
+        {
+        CollectEntryDataL();
+        }
+
+    TInt protocol = 0;
+    iSourceData[0].GetAttr( TImumDaSettings::EKeyProtocol, protocol );
+
+    // Create settings data objects according to protocol
+    switch ( protocol )
+        {
+        case TImumDaSettings::EValueProtocolImap4:
+            ConvToSymbianImap4DataL();
+            break;
+
+        case TImumDaSettings::EValueProtocolPop3:
+            ConvToSymbianPop3DataL();
+            break;
+
+        default:
+            ConverterExceptionL(
+                TImumDaErrorCode::EParamUnsupportedProtocol );
+            break;
+        }
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::ConvToSymbianImap4DataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::ConvToSymbianImap4DataL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::ConvToSymbianImap4DataL, 0, KLogData );
+    IMUM_IN();
+
+    iTargetData.iIsImap4 = ETrue;
+
+    // For wizard, there is no account available
+    if ( !iCreationPhase )
+        {
+        iMailboxApi.EmailAccountsL().GetImapAccountL(
+            iMailboxEntries[0].Id(), iTargetData.iImap4AccountId );
+        }
+
+    DoPopulateSymbianImap4SettingsL();
+    DoPopulateSymbianSmtpSettingsL();
+    DoPopulateExtendedSettingsL();
+
+    SetSymbianAccessPointL( 0 );
+    SetSymbianAccessPointL( 1 );
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::ConvToSymbianPop3DataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::ConvToSymbianPop3DataL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::ConvToSymbianPop3DataL, 0, KLogData );
+    IMUM_IN();
+
+    // For wizard, there is no account available
+    if ( !iCreationPhase )
+        {
+        iMailboxApi.EmailAccountsL().GetPopAccountL(
+            iMailboxEntries[0].Id(), iTargetData.iPop3AccountId );
+        }
+
+    DoPopulateSymbianPop3SettingsL();
+    DoPopulateSymbianSmtpSettingsL();
+    DoPopulateExtendedSettingsL();
+
+    SetSymbianAccessPointL( 0 );
+    SetSymbianAccessPointL( 1 );
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::DoPopulateSymbianImap4SettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::DoPopulateSymbianImap4SettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::DoPopulateSymbianImap4SettingsL, 0, KLogData );
+    IMUM_IN();
+
+    // CONNECTION SETTINGS
+    MImumInSettingsDataCollection& rcvConnSet = iSourceData.GetInSetL(0);
+    CImImap4Settings& imap4 = *iTargetData.iImap4Settings;
+    TInt value = 0;
+    TInt32 value32 = 0;
+    TImumDaSettings::TTextServerAddress serverAddr;
+    TImumDaSettings::TTextUserName username;
+    TImumDaSettings::TTextPassword password;
+    TImumDaSettings::TTextMailboxName name;
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyServer, serverAddr ) );
+    imap4.SetServerAddressL( serverAddr.Left( KImumDaMailboxNameLength ) );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyPort, value ) );
+    imap4.SetPort( value );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeySecurity, value ) );
+    MsvEmailMtmUiUtils::StoreSecuritySettings(
+        imap4, static_cast<TImumDaSettings::TSecurityValues>( value ) );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyUsername, username ) );
+    imap4.SetLoginNameL( username );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyPassword, password ) );
+    imap4.SetPasswordL( password );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyImapIdle, value ) );
+    imap4.SetImapIdle( value );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyImapIdleTimeout, value ) );
+    imap4.SetImapIdleTimeoutL( value );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyDownloadMaxEmailSize, value ) );
+    imap4.SetMaxEmailSize( value );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyDownloadFlags, value32 ) );
+    imap4.SetPartialMailOptionsL( GetSymbianImapPartial(
+        TMuiuFlags( value32 ) ) );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyDownloadBodySize, value32 ) );
+    imap4.SetBodyTextSizeLimitL( value32 );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyDownloadAttachmentSize, value32 ) );
+    imap4.SetAttachmentSizeLimitL( value32 );
+
+    //
+    TImumDaSettings::TTextFolderPath folderPath;
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EImapFolderPath, folderPath ) );
+    imap4.SetFolderPathL( folderPath );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeySyncRate, value ) );
+    imap4.SetSyncRateL( value );
+
+    // MAILBOX SETTINGS
+
+    //
+    TImumInSettings::TTextSearchString searchString;
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeySearchString, searchString ) );
+    imap4.SetSearchStringL( searchString );
+
+    //
+    TBuf8<KImumInSeparatorLength> pathSeparator;
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyPathSeparator, pathSeparator ) );
+    imap4.SetPathSeparator( *pathSeparator.Ptr() );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyDisconnectedMode, value ) );
+    imap4.SetDisconnectedUserMode( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeySynchronise, value ) );
+    imap4.SetSynchronise( static_cast<TFolderSyncType>( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeySubscribe, value ) );
+    imap4.SetSubscribe( static_cast<TFolderSubscribeType>( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyAutoSendOnConnect, value ) );
+    imap4.SetAutoSendOnConnect( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyDeleteEmailsWhenDisconnecting, value ) );
+    imap4.SetDeleteEmailsWhenDisconnecting( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyAcknowledgeReceipts, value ) );
+    imap4.SetAcknowledgeReceipts( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyInboxUpdateLimit, value32 ) );
+    imap4.SetInboxSynchronisationLimit( value32 );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyFolderUpdateLimit, value32 ) );
+    imap4.SetMailboxSynchronisationLimit( value32 );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyUpdatingSeenFlag, value ) );
+    imap4.SetUpdatingSeenFlags( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyFetchSize, value ) );
+    imap4.SetFetchSizeL( value );
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::DoPopulateSymbianPop3SettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::DoPopulateSymbianPop3SettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::DoPopulateSymbianPop3SettingsL, 0, KLogData );
+    IMUM_IN();
+
+    MImumInSettingsDataCollection& rcvConnSet = iSourceData.GetInSetL(0);
+    CImPop3Settings& pop3 = *iTargetData.iPop3Settings;
+    TInt value = 0;
+    TInt32 value32 = 0;
+    TImumDaSettings::TTextServerAddress serverAddr;
+    TImumDaSettings::TTextUserName username;
+    TImumDaSettings::TTextPassword password;
+
+    // CONNECTION SETTINGS
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyServer, serverAddr ) );
+    pop3.SetServerAddressL( serverAddr );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyPort, value ) );
+    pop3.SetPort( value );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeySecurity, value ) );
+    MsvEmailMtmUiUtils::StoreSecuritySettings( pop3,
+        static_cast<TImumDaSettings::TSecurityValues>( value ) );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyUsername, username ) );
+    pop3.SetLoginNameL( username );
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyPassword, password ) );
+    pop3.SetPasswordL( password );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeyDownloadMaxEmailSize, value ) );
+    pop3.SetMaxEmailSize( value );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeySyncFlags, value32 ) );
+    pop3.SetGetMailOptions( GetSymbianPopGetMail( value32 ) );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumInSettings::EKeySyncFlags, value32 ) );
+    pop3.SetPopulationLimitL(
+        GetSymbianPopDownloadL( value32, rcvConnSet ) );
+
+    //
+    User::LeaveIfError( rcvConnSet.GetAttr(
+        TImumDaSettings::EKeyAPop, value ) );
+    pop3.SetApop( value );
+
+    // MAILBOX SETTINGS
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyAutoSendOnConnect, value ) );
+    pop3.SetAutoSendOnConnect( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyDisconnectedMode, value ) );
+    pop3.SetDisconnectedUserMode( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyDeleteEmailsWhenDisconnecting, value ) );
+    pop3.SetDeleteEmailsWhenDisconnecting( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyAcknowledgeReceipts, value ) );
+    pop3.SetAcknowledgeReceipts( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyInboxUpdateLimit, value32 ) );
+    pop3.SetInboxSynchronisationLimit( value32 );
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::DoPopulateSymbianSmtpSettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::DoPopulateSymbianSmtpSettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::DoPopulateSymbianSmtpSettingsL, 0, KLogData );
+    IMUM_IN();
+
+    MImumInSettingsDataCollection& sndConnSet = iSourceData.GetInSetL(1);
+    CImSmtpSettings& smtp = *iTargetData.iSmtpSettings;
+    TInt value = 0;
+    TInt32 value32 = 0;
+    TImumDaSettings::TTextServerAddress serverAddr;
+    TImumDaSettings::TTextUserName username;
+    TImumDaSettings::TTextPassword password;
+
+    // CONNECTION SETTINGS
+
+    //
+    User::LeaveIfError( sndConnSet.GetAttr(
+        TImumDaSettings::EKeyServer, serverAddr ) );
+    smtp.SetServerAddressL( serverAddr );
+
+    //
+    User::LeaveIfError( sndConnSet.GetAttr(
+        TImumDaSettings::EKeyPort, value ) );
+    smtp.SetPort( value );
+
+    //
+    User::LeaveIfError( sndConnSet.GetAttr(
+        TImumDaSettings::EKeySecurity, value ) );
+    MsvEmailMtmUiUtils::StoreSecuritySettings( smtp,
+        static_cast<TImumDaSettings::TSecurityValues>( value ) );
+
+    //
+    User::LeaveIfError( sndConnSet.GetAttr(
+        TImumDaSettings::EKeyUsername, username ) );
+    smtp.SetLoginNameL( username );
+
+    //
+    User::LeaveIfError( sndConnSet.GetAttr(
+        TImumDaSettings::EKeyPassword, password ) );
+    smtp.SetPasswordL( password );
+
+
+    // MAILBOX SETTINGS
+
+    //
+    TImumDaSettings::TTextEmailAddress emailAddress;
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyEmailAddress, emailAddress ) );
+    smtp.SetEmailAddressL( emailAddress );
+
+    //
+    TImumDaSettings::TTextUserAlias userAlias;
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyUserAlias, userAlias ) );
+    smtp.SetEmailAliasL( userAlias );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyReplyToAddress, emailAddress ) );
+    smtp.SetReplyToAddressL( emailAddress );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyReceiptAddress, emailAddress ) );
+    smtp.SetReceiptAddressL( emailAddress );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyBodyEncoding, value ) );
+    smtp.SetBodyEncoding( static_cast<TMsgOutboxBodyEncoding>( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyDefaultMsgCharSet, value32 ) );
+    smtp.SetDefaultMsgCharSet( TUid::Uid( value32 ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyAddVCardToEmail, value ) );
+    smtp.SetAddVCardToEmail( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyIncludeSignature, value ) );
+    smtp.SetAddSignatureToEmail( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyRequestReceipts, value ) );
+    smtp.SetRequestReceipts( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeySendCopyToSelf, value ) );
+    smtp.SetSendCopyToSelf( static_cast<TImSMTPSendCopyToSelf>( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeySendDelay, value ) );
+    smtp.SetSendMessageOption(
+        static_cast<TImSMTPSendMessageOption>( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeySMTPAuth, value ) );
+    smtp.SetSMTPAuth( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyInboxLoginDetails, value ) );
+    smtp.SetInboxLoginDetails( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyToCcIncludeLimit, value ) );
+    smtp.SetToCcIncludeLimitL( value );
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::DoPopulateExtendedSettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::DoPopulateExtendedSettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::DoPopulateExtendedSettingsL, 0, KLogData );
+    IMUM_IN();
+
+    CImumMboxDataExtension& ext = *iTargetData.iExtendedSettings;
+
+    TInt value = 0;
+    TInt64 value64 = 0;
+    TImumDaSettings::TTextSignature signature;
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyMailboxName, iTargetData.iName ) );
+
+    //
+    TImumDaSettings::TTextEmailAddress emailAddress;
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyEmailAddress, emailAddress ) );
+    ext.SetEmailAddress( emailAddress );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyEmailAlert, value ) );
+    ext.SetNewMailIndicators( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyIsPredefinedMailbox, value ) );
+    ext.SetIsPredefined( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeySignature, signature ) );
+    iTargetData.iSignature->iRichText->Reset();
+    iTargetData.iSignature->iRichText->InsertL( 0, signature );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyAutoNotifications, value ) );
+    ext.SetEmailNotificationState( SymbianEmnState( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyMailDeletion, value ) );
+    ext.SetMailDeletion( static_cast<TIMASMailDeletionMode>( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyHideMsgs, value ) );
+    ext.SetHideMsgs( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyOpenHtmlMail, value ) );
+    ext.SetOpenHtmlMail( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyAutoRetrieval, value ) );
+    ext.SetAlwaysOnlineState( SymbianAoState( value ) );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyAutoRetrievalDays, value ) );
+    ext.SetSelectedWeekDays( value );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyAutoRetrievalStartHour, value64 ) );
+    ext.SetSelectedTimeStart( value64 );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyAutoRetrievalEndHour, value64 ) );
+    ext.SetSelectedTimeStop( value64 );
+
+    //
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumDaSettings::EKeyAutoRetrievalInterval, value ) );
+    ext.SetInboxRefreshTime( SymbianAoRetrievalInterval( value ) );
+
+    //
+    TAOInfo aoInfo;
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyInfoLastUpdateFailed, value ) );
+    aoInfo.iLastUpdateFailed = value;
+
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyInfoLastSuccessfulUpdate, value64 ) );
+    aoInfo.iLastSuccessfulUpdate = value64;
+
+    User::LeaveIfError( iSourceData.GetAttr(
+        TImumInSettings::EKeyAoUpdateSuccessfulWithCurSettings, value ) );
+    aoInfo.iUpdateSuccessfulWithCurSettings = value;
+
+    ext.SetLastUpdateInfo( aoInfo );
+
+    // Temporary password status
+    TMuiuFlags statusFlags =  ext.StatusFlags();
+    // Receive temp password flag
+    User::LeaveIfError( iSourceData[0].GetAttr(
+        TImumInSettings::EKeyTemporaryPassword, value ) );
+    statusFlags.ChangeFlag( EIMASStatusTempRcvPassword , value );
+    // Transmit temp password flag
+    User::LeaveIfError( iSourceData[1].GetAttr(
+        TImumInSettings::EKeyTemporaryPassword, value ) );
+    statusFlags.ChangeFlag( EIMASStatusTempSndPassword, value );
+    ext.SetStatusFlags( statusFlags );
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::SetSymbianAccessPointL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::SetSymbianAccessPointL(
+    const TInt aIndex )
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::SetSymbianAccessPointL, 0, KLogData );
+    IMUM_IN();
+
+    MImumInSettingsDataCollection& source = iSourceData.GetInSetL( aIndex );
+
+    TInt ap = 0;
+    source.GetAttr( TImumDaSettings::EKeyAccessPoint, ap );
+
+    // set ap id to 0 if always ask is set, meaning default connection
+    // is used
+    if( ap == TImumDaSettings::EValueApAlwaysAsk )
+        {
+        ap = 0;
+        }
+
+    if ( !aIndex )
+        {
+        iTargetData.iIncomingIap = ap;
+        }
+    else
+        {
+        iTargetData.iOutgoingIap = ap;
+        }
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// ImumInSettingsDataConverter::CollectEntryDataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::CollectEntryDataL()
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::CollectEntryDataL, 0, KLogData );
+    IMUM_IN();
+
+    // Protocol
+    iTargetData.iIsImap4 = ( iMailboxProtocol == KSenduiMtmImap4Uid );
+    iTargetData.iExtendedSettings->SetProtocol( iMailboxProtocol );
+
+    // Account Id
+    const TMsvEntry& rcv = iMailboxEntries[0];
+    iTargetData.iExtendedSettings->SetAccountId( rcv.iMtmData2 );
+
+    // Extension Id
+    TUint32 extId = IMASAccountControl::AccountIdToExtendedAccountId(
+        rcv.iMtmData2,
+        rcv.iMtm );
+    iTargetData.iExtendedSettings->SetExtensionId( extId );
+
+    // Mailbox Id
+    TMsvEntry smtp = iMailboxEntries[1];
+    iTargetData.iMailboxId = smtp.Id();
+    iTargetData.iExtendedSettings->SetMailboxId( smtp.Id() );
+
+
+    IMUM_OUT();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::GetSymbianImapPartial()
+// ---------------------------------------------------------------------------
+//
+TImImap4PartialMailOptions CImumMboxSymbianDataConverter::GetSymbianImapPartial(
+    const TMuiuFlags& /* aFlags */ )
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::GetSymbianImapPartial, 0, KLogData );
+    IMUM_IN();
+
+    // Currently, no sizelimits supported in imap4
+    IMUM_OUT();
+
+    return ENoSizeLimits;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::SymbianAoState()
+// ---------------------------------------------------------------------------
+//
+TMailAoStates CImumMboxSymbianDataConverter::SymbianAoState(
+    const TInt aAoState )
+    {
+    switch ( aAoState )
+        {
+        case TImumDaSettings::EValueAutoOff:
+            return EMailAoOff;
+        case TImumDaSettings::EValueAutoOn:
+            return EMailAoAlways;
+        case TImumDaSettings::EValueAutoHomeNetwork:
+            return EMailAoHomeOnly;
+        }
+
+    return EMailAoOff;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::SymbianAoRetrievalInterval()
+// ---------------------------------------------------------------------------
+//
+TInt CImumMboxSymbianDataConverter::SymbianAoRetrievalInterval(
+    TInt aInterval )
+    {
+    switch ( aInterval )
+        {
+        case TImumDaSettings::EValue5Minutes:
+            return KIMASAoInterval5Min;
+        case TImumDaSettings::EValue15Minutes:
+            return KIMASAoInterval15Min;
+        case TImumDaSettings::EValue30Minutes:
+            return KIMASAoInterval30Min;
+        case TImumDaSettings::EValue1Hour:
+            return KIMASAoInterval1Hour;
+        case TImumDaSettings::EValue2Hours:
+            return KIMASAoInterval2Hours;
+        case TImumDaSettings::EValue4Hours:
+            return KIMASAoInterval4Hours;
+        case TImumDaSettings::EValue6Hours:
+            return KIMASAoInterval6Hours;
+        }
+
+    // default
+    return KIMASAoInterval1Hour;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::SymbianEmnState()
+// ---------------------------------------------------------------------------
+//
+TMailEmnStates CImumMboxSymbianDataConverter::SymbianEmnState(
+    const TInt aEmnState )
+    {
+    switch ( aEmnState )
+        {
+        case TImumDaSettings::EValueNotificationsOff:
+            return EMailEmnOff;
+        case TImumDaSettings::EValueNotificationsOn:
+            return EMailEmnAutomatic;
+        case TImumDaSettings::EValueNotificationsHome:
+            return EMailEmnHomeOnly;
+        }
+
+    return EMailEmnOff;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::GetSymbianPopGetMail()
+// ---------------------------------------------------------------------------
+//
+TPop3GetMailOptions CImumMboxSymbianDataConverter::GetSymbianPopGetMail(
+    const TUint aFlags )
+    {
+    // Get body and headers as default
+    return ( aFlags == TImumInSettings::EFlagSetDownloadAll ) ?
+        EGetPop3EmailMessages : EGetPop3EmailHeaders ;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::GetSymbianPopDownloadL()
+// ---------------------------------------------------------------------------
+//
+TInt32 CImumMboxSymbianDataConverter::GetSymbianPopDownloadL(
+    const TUint aFlags,
+    const MImumInSettingsDataCollection& aInternalDataCollection )
+    {
+    IMUM_CONTEXT( CImumMboxSymbianDataConverter::GetSymbianPopDownloadL, 0, KLogData );
+    IMUM_IN();
+
+    TInt32 partial = 0;
+
+    // Check if Header & Body & Attachment is set
+    if ( aFlags == TImumInSettings::EFlagSetDownloadAll )
+        {
+        partial = EIMASMapFullBody;
+        }
+    // Check if only headers is set
+    else if ( aFlags == TImumInSettings::EFlagDownloadHeader |
+        aFlags == TImumInSettings::EFlagDownloadBody )
+        {
+        partial = EIMASMapHeadersOnly;
+        }
+    // Set up the cumulative partial download
+    else if ( aFlags == TImumInSettings::EFlagDownloadPartialCumulative )
+        {
+        // In cumulative retrieval, only bodycount matters
+        User::LeaveIfError( aInternalDataCollection.GetAttr(
+            TImumInSettings::EKeyDownloadBodySize, partial ) );
+        }
+    else
+        {
+        // Unsupported set... Force default set
+        partial = EIMASMapHeadersOnly;
+        }
+
+    IMUM_OUT();
+
+    return partial;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxSymbianDataConverter::ConverterExceptionL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxSymbianDataConverter::ConverterExceptionL(
+    const TInt aErrorCode )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxSymbianDataConverter::ConverterExceptionL, 0, utils, KLogData );
+    IMUM_IN();
+
+    __ASSERT_DEBUG( EFalse,
+        User::Panic( KImumMboxSymbianDataConverter, aErrorCode ) );
+    User::Leave( aErrorCode );
+    }
+
+
+// End of File