email/imum/Utils/Src/ImumMboxInternalDataConverter.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Src/ImumMboxInternalDataConverter.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,891 @@
+/*
+* 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:  ImumMboxInternalDataConverter.cpp
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <miutset.h>
+#include <smtpset.h>
+#include <pop3set.h>
+#include <imapset.h>
+#include <SendUiConsts.h>
+
+#include "ImumMboxInternalDataConverter.h"
+#include "ImumInSettingsDataCollection.h"
+#include "ImumDaSettingsKeys.h"
+#include "ImumInSettingsKeys.h"
+#include "ImumDaErrorCodes.h"
+#include "ImumPanic.h"
+#include "ImumMboxData.h"
+#include "ImumInSettingsDataImpl.h"
+#include "ImumInSettingsDataCollectionImpl.h"
+#include "ImumInMailboxServicesImpl.h"
+#include "ImumInternalApiImpl.h"
+#include "ComDbUtl.h"
+#include "EmailUtils.H"
+#include "ImumUtilsLogging.h"
+
+// EXTERNAL DATA STRUCTURES
+// EXTERNAL FUNCTION PROTOTYPES
+// CONSTANTS
+// MACROS
+// LOCAL CONSTANTS AND MACROS
+// MODULE DATA STRUCTURES
+// LOCAL FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ----------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::CImumMboxInternalDataConverter()
+// ----------------------------------------------------------------------------
+//
+CImumMboxInternalDataConverter::CImumMboxInternalDataConverter(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumMboxData& aSourceData,
+    CImumInSettingsData& aTargetData )
+    :
+    iMailboxApi( aMailboxApi ),
+    iTargetData( aTargetData ),
+    iSourceData( aSourceData )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::CImumMboxInternalDataConverter, 0, KLogData );
+
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::~CImumMboxInternalDataConverter()
+// ----------------------------------------------------------------------------
+//
+CImumMboxInternalDataConverter::~CImumMboxInternalDataConverter()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::~CImumMboxInternalDataConverter, 0, KLogData );
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::ConstructL()
+// ----------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::ConstructL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::ConstructL, 0, KLogData );
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::NewL()
+// ----------------------------------------------------------------------------
+//
+CImumMboxInternalDataConverter* CImumMboxInternalDataConverter::NewL(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumMboxData& aSourceData,
+    CImumInSettingsData& aTargetData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxInternalDataConverter::NewL, 0, utils, KLogData );
+
+    CImumMboxInternalDataConverter* self = NewLC(
+        aMailboxApi, aSourceData, aTargetData );
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::NewLC()
+// ----------------------------------------------------------------------------
+//
+CImumMboxInternalDataConverter* CImumMboxInternalDataConverter::NewLC(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumMboxData& aSourceData,
+    CImumInSettingsData& aTargetData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxInternalDataConverter::NewLC, 0, utils, KLogData );
+
+    CImumMboxInternalDataConverter* self =
+        new ( ELeave ) CImumMboxInternalDataConverter(
+        aMailboxApi, aSourceData, aTargetData );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::ConvertToInternalMboxDataLC()
+// ---------------------------------------------------------------------------
+//
+CImumInSettingsData* CImumMboxInternalDataConverter::ConvertToInternalMboxDataLC(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumMboxData& aSourceData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxInternalDataConverter::ConvertToInternalMboxDataLC, 0, utils, KLogData );
+
+    TUid protocol = { 0 };
+
+    // Imap4 settings?
+    if ( aSourceData.iIsImap4 )
+        {
+        protocol = KSenduiMtmImap4Uid;
+        }
+    // Pop3 settings!
+    else
+        {
+        protocol = KSenduiMtmPop3Uid;
+        }
+
+    CImumInSettingsData* targetData = CreateInternalDataLC( aMailboxApi, protocol );
+
+    ConvertToInternalMboxDataL( aMailboxApi, aSourceData, *targetData );
+
+    return targetData;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::ConvertToInternalMboxDataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::ConvertToInternalMboxDataL(
+    CImumInternalApiImpl& aMailboxApi,
+    const CImumMboxData& aSourceData,
+    CImumInSettingsData& aTargetData )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxInternalDataConverter::ConvertToInternalMboxDataL, 0, utils, KLogData );
+
+    CImumMboxInternalDataConverter* converter = NewLC(
+        aMailboxApi, aSourceData, aTargetData );
+
+    converter->DoConvertToInternalMboxDataL();
+
+    CleanupStack::PopAndDestroy( converter );
+    converter = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::DoConvertToInternalMboxDataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::DoConvertToInternalMboxDataL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::DoConvertToInternalMboxDataL, 0, KLogData );
+
+    SetIdsToInternalDataL();
+
+    // Imap4 settings?
+    if ( iSourceData.iIsImap4 )
+        {
+        ConvToInternalImap4DataL();
+        }
+    // Pop3 settings!
+    else
+        {
+        ConvToInternalPop3DataL();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::CreateInternalDataLC()
+// ---------------------------------------------------------------------------
+//
+CImumInSettingsData* CImumMboxInternalDataConverter::CreateInternalDataLC(
+    CImumInternalApiImpl& aMailboxApi,
+    const TUid& aProtocol )
+    {
+    IMUM_STATIC_CONTEXT( CImumMboxInternalDataConverter::CreateInternalDataLC, 0, utils, KLogData );
+
+    CImumInSettingsData* data =
+        aMailboxApi.MailboxServicesL().CreateSettingsDataL( aProtocol );
+    CleanupStack::PushL( data );
+    return data;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::ConvToInternalImap4DataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::ConvToInternalImap4DataL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::ConvToInternalImap4DataL, 0, KLogData );
+
+    DoPopulateInternalImap4SettingsL();
+    DoPopulateInternalSmtpSettingsL();
+    DoPopulateInternalGeneralSettingsL();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::ConvToInternalPop3DataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::ConvToInternalPop3DataL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::ConvToInternalPop3DataL, 0, KLogData );
+
+    DoPopulateInternalPop3SettingsL();
+    DoPopulateInternalSmtpSettingsL();
+    DoPopulateInternalGeneralSettingsL();
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::DoPopulateInternalImap4SettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::DoPopulateInternalImap4SettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::DoPopulateInternalImap4SettingsL, 0, KLogData );
+
+    // CONNECTION SETTINGS
+    MImumInSettingsDataCollection& connSett = iTargetData.GetInSetL(0);
+    const CImImap4Settings& imap4 = *iSourceData.iImap4Settings;
+
+    //
+    FillTextInternalL<KImumDaServerSettingLength>(
+        connSett, TImumDaSettings::EKeyServer,
+        imap4.ServerAddress() );
+
+    //
+    FillText8InternalL<KImumDaUserNameLength>(
+        connSett, TImumDaSettings::EKeyUsername,
+        imap4.LoginName() );
+
+    //
+    FillText8InternalL<KImumDaPasswordLength>(
+        connSett, TImumDaSettings::EKeyPassword,
+        imap4.Password() );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeySecurity,
+        MsvEmailMtmUiUtils::RestoreSecuritySettings( imap4 ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeyPort,
+        static_cast<TInt>( imap4.Port() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeySyncFlags,
+        GetInternalImapDownload( imap4.GetMailOptions() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyDownloadFlags,
+        GetInternalImapPartial( imap4.PartialMailOptions() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyDownloadBodySize,
+        imap4.BodyTextSizeLimit() ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyDownloadAttachmentSize,
+        imap4.AttachmentSizeLimit() ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyDownloadMaxEmailSize,
+        static_cast<TInt>( imap4.MaxEmailSize() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyImapIdle,
+        imap4.ImapIdle() ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyImapIdleTimeout,
+        imap4.ImapIdleTimeout() ) );
+
+    //
+    FillText8InternalL<KImumDaFolderPathLength>(
+        connSett, TImumDaSettings::EImapFolderPath,
+        imap4.FolderPath() );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeySyncRate,
+        imap4.SyncRate() ) );
+
+    // MAILBOX SETTINGS
+
+    //
+    TBuf8<KImumInSeparatorLength> buffer;
+    buffer.Append(imap4.PathSeparator());
+    FillText8InternalL<KImumInSeparatorLength>(
+        iTargetData, TImumInSettings::EKeyPathSeparator,
+        buffer );
+
+    //
+    FillText8InternalL<KImumInSearchStringLength>(
+        iTargetData, TImumInSettings::EKeySearchString,
+        imap4.SearchString() );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyDisconnectedMode,
+        imap4.DisconnectedUserMode() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeySynchronise,
+        imap4.Synchronise() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeySubscribe,
+        imap4.Subscribe() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyAutoSendOnConnect,
+        imap4.AutoSendOnConnect() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyDeleteEmailsWhenDisconnecting,
+        imap4.DeleteEmailsWhenDisconnecting() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyAcknowledgeReceipts,
+        imap4.AcknowledgeReceipts() ) );
+
+    //
+    TInt32 val = imap4.InboxSynchronisationLimit();
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyInboxUpdateLimit,
+        ( val > 0 ) ? val : KErrNotFound ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyFolderUpdateLimit,
+        imap4.MailboxSynchronisationLimit() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyUpdatingSeenFlag,
+        imap4.UpdatingSeenFlags() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyFetchSize,
+        static_cast<TInt>( imap4.FetchSize() ) ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::DoPopulateInternalPop3SettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::DoPopulateInternalPop3SettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::DoPopulateInternalPop3SettingsL, 0, KLogData );
+
+    // CONNECTION SETTINGS
+    MImumInSettingsDataCollection& connSett = iTargetData.GetInSetL( 0 );
+    const CImPop3Settings& pop3 = *iSourceData.iPop3Settings;
+
+    //
+    FillTextInternalL<KImumDaServerSettingLength>(
+        connSett,
+        TImumDaSettings::EKeyServer,
+        pop3.ServerAddress() );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeyPort,
+        static_cast<TInt>( pop3.Port() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeySecurity,
+        MsvEmailMtmUiUtils::RestoreSecuritySettings( pop3 ) ) );
+
+    //
+    FillText8InternalL<KImumDaUserNameLength>(
+        connSett, TImumDaSettings::EKeyUsername,
+        pop3.LoginName() );
+
+    //
+    FillText8InternalL<KImumDaPasswordLength>(
+        connSett, TImumDaSettings::EKeyPassword,
+        pop3.Password() );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeyAPop, pop3.Apop() ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeySyncFlags,
+        GetInternalPopSyncL(
+            pop3.GetMailOptions() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeySyncFlags,
+        GetInternalPopDownloadL(
+            pop3.PopulationLimit(), connSett ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumInSettings::EKeyDownloadMaxEmailSize,
+        pop3.MaxEmailSize() ) );
+
+    // MAILBOX SETTINGS
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyAutoSendOnConnect,
+        pop3.AutoSendOnConnect() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyDisconnectedMode,
+        pop3.DisconnectedUserMode() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyDeleteEmailsWhenDisconnecting,
+        pop3.DeleteEmailsWhenDisconnecting() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyAcknowledgeReceipts,
+        pop3.AcknowledgeReceipts() ) );
+
+    //
+    TInt32 val = pop3.InboxSynchronisationLimit();
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyInboxUpdateLimit,
+        ( val > 0 ) ? val : KErrNotFound ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::DoPopulateInternalSmtpSettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::DoPopulateInternalSmtpSettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::DoPopulateInternalSmtpSettingsL, 0, KLogData );
+
+    // CONNECTION SETTINGS
+    MImumInSettingsDataCollection& connSett = iTargetData.GetInSetL( 1 );
+    const CImSmtpSettings& smtp = *iSourceData.iSmtpSettings;
+
+    //
+    FillTextInternalL<KImumDaServerSettingLength>(
+        connSett, TImumDaSettings::EKeyServer,
+        smtp.ServerAddress() );
+
+    //
+    FillText8InternalL<KImumDaUserNameLength>(
+        connSett, TImumDaSettings::EKeyUsername,
+        smtp.LoginName() );
+
+    //
+    FillText8InternalL<KImumDaPasswordLength>(
+        connSett, TImumDaSettings::EKeyPassword,
+        smtp.Password() );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeyPort,
+        static_cast<TInt>( smtp.Port() ) ) );
+
+    //
+    User::LeaveIfError( connSett.SetAttr(
+        TImumDaSettings::EKeySecurity,
+        MsvEmailMtmUiUtils::RestoreSecuritySettings( smtp ) ) );
+
+
+    // MAILBOX SETTINGS
+
+    //
+    FillTextInternalL<KImumDaEmailSettingLength>(
+        iTargetData, TImumDaSettings::EKeyEmailAddress,
+        smtp.EmailAddress() );
+
+    //
+    FillTextInternalL<KImumDaUserAliasLength>(
+        iTargetData, TImumDaSettings::EKeyUserAlias,
+        smtp.EmailAlias() );
+
+    //
+    FillTextInternalL<KImumDaEmailSettingLength>(
+        iTargetData, TImumDaSettings::EKeyReplyToAddress,
+        smtp.ReplyToAddress() );
+
+    //
+    FillTextInternalL<KImumDaEmailSettingLength>(
+        iTargetData, TImumInSettings::EKeyReceiptAddress,
+        smtp.ReceiptAddress() );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyDefaultMsgCharSet,
+        smtp.DefaultMsgCharSet().iUid ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyBodyEncoding,
+        smtp.BodyEncoding() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyAddVCardToEmail,
+        smtp.AddVCardToEmail() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyIncludeSignature,
+        smtp.AddSignatureToEmail() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyRequestReceipts,
+        smtp.RequestReceipts() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeySendCopyToSelf,
+        smtp.SendCopyToSelf() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeySendDelay,
+        smtp.SendMessageOption() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeySMTPAuth,
+        smtp.SMTPAuth() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyInboxLoginDetails,
+        smtp.InboxLoginDetails() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyToCcIncludeLimit,
+        smtp.ToCcIncludeLimit() ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::DoPopulateInternalGeneralSettingsL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::DoPopulateInternalGeneralSettingsL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::DoPopulateInternalGeneralSettingsL, 0, KLogData );
+
+    const CImumMboxDataExtension& ext = *iSourceData.iExtendedSettings;
+
+    // Set access point data here
+    SetInternalAccessPointL( 0 );
+    SetInternalAccessPointL( 1 );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyMailboxName,
+        iSourceData.iName ) );
+
+    TImumDaSettings::TTextSignature signature;
+    iSourceData.iSignature->iRichText->Extract(
+        signature, 0, KImumDaSignatureLength );
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeySignature,
+        signature ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyMailDeletion,
+        ext.MailDeletion() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyAutoNotifications,
+        InternalEmnState( ext.EmailNotificationState() ) ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyEmailAlert,
+        ext.NewMailIndicators() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyHideMsgs,
+        ext.HideMsgs() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyOpenHtmlMail,
+        ext.OpenHtmlMail() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeySettingsVersion,
+        ext.Version() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyAutoRetrieval,
+        InternalAoState( ext.AlwaysOnlineState() ) ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyAutoRetrievalDays,
+        static_cast<TInt>( ext.SelectedWeekDays() ) ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyAutoRetrievalStartHour,
+        ext.SelectedTimeStart().Int64() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyAutoRetrievalEndHour,
+        ext.SelectedTimeStop().Int64() ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumDaSettings::EKeyAutoRetrievalInterval,
+        InternalRetrivalInterval( ext.InboxRefreshTime() ) ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyInfoLastUpdateFailed,
+        ext.LastUpdateInfo().iLastUpdateFailed ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyInfoLastSuccessfulUpdate,
+        ext.LastUpdateInfo().iLastSuccessfulUpdate.Int64() ) );
+
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyAoUpdateSuccessfulWithCurSettings,
+        ext.LastUpdateInfo().iUpdateSuccessfulWithCurSettings ) );
+
+    //
+    User::LeaveIfError( iTargetData.SetAttr(
+        TImumInSettings::EKeyIsPredefinedMailbox,
+        ext.IsPredefined() ) );
+
+    // Temporary password status
+    const TMuiuFlags& statusFlags =  ext.StatusFlags();
+    // Receive temp password flag
+    User::LeaveIfError( iTargetData[0].SetAttr(
+        TImumInSettings::EKeyTemporaryPassword,
+        statusFlags.Flag( EIMASStatusTempRcvPassword ) ) );
+    // Transmit temp password flag
+    User::LeaveIfError( iTargetData[1].SetAttr(
+        TImumInSettings::EKeyTemporaryPassword,
+        statusFlags.Flag( EIMASStatusTempSndPassword ) ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::SetIdsToInternalDataL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::SetIdsToInternalDataL()
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::SetIdsToInternalDataL, 0, KLogData );
+
+	// Get smtp id
+    TMsvId id = iSourceData.iExtendedSettings->MailboxId();
+
+    // Set smtp id
+    iTargetData[1].SetAttr( TImumDaSettings::EKeyMailboxId, id );
+
+    // Set Receiving id
+    TMsvEntry entry = iMailboxApi.MailboxUtilitiesL().GetMailboxEntryL( id );
+    iTargetData[0].SetAttr( TImumDaSettings::EKeyMailboxId, entry.iRelatedId );
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::GetInternalImapPartial()
+// ---------------------------------------------------------------------------
+//
+TInt32 CImumMboxInternalDataConverter::GetInternalImapPartial(
+    const TImImap4PartialMailOptions& /* aPartialOptions */ )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::GetInternalImapPartial, 0, KLogData );
+
+    return TImumInSettings::EFlagSetDownloadAll;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::GetInternalImapDownload()
+// ---------------------------------------------------------------------------
+//
+TInt32 CImumMboxInternalDataConverter::GetInternalImapDownload(
+    const TImap4GetMailOptions& /* aPartialOptions */ )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::GetInternalImapDownload, 0, KLogData );
+
+    return TImumInSettings::EFlagDownloadHeader;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::SetInternalAccessPointL()
+// ---------------------------------------------------------------------------
+//
+void CImumMboxInternalDataConverter::SetInternalAccessPointL(
+    const TInt aIndex )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::SetInternalAccessPointL, 0, KLogData );
+
+    // Initialize access point type to Iap Id
+    iTargetData[aIndex].SetAttr( TImumInSettings::EKeyAccessPointType,
+    							 TImumInSettings::EValueApIsIapId );
+
+    // aIndex refers to incoming or outgoing settings
+    TInt ap = KErrNotFound;
+    if ( !aIndex )
+        {
+        ap = iSourceData.iIncomingIap;
+        }
+    else
+        {
+        ap = iSourceData.iOutgoingIap;
+        }
+
+    // And access point to always ask, which means that default connection
+    // is used
+    iTargetData[aIndex].SetAttr( TImumDaSettings::EKeyAccessPoint, ap );
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::InternalAoState()
+// ---------------------------------------------------------------------------
+//
+TInt CImumMboxInternalDataConverter::InternalAoState(
+    const TMailAoStates& aAoState )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::InternalAoState, 0, KLogData );
+
+    switch ( aAoState )
+        {
+        case EMailAoAlways:
+            return TImumDaSettings::EValueAutoOn;
+        case EMailAoHomeOnly:
+            return TImumDaSettings::EValueAutoHomeNetwork;
+        case EMailAoOff:
+            return TImumDaSettings::EValueAutoOff;
+        }
+
+    return TImumDaSettings::EValueAutoOff;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::InternalEmnState()
+// ---------------------------------------------------------------------------
+//
+TInt CImumMboxInternalDataConverter::InternalEmnState(
+    const TMailEmnStates& aEmnState )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::InternalEmnState, 0, KLogData );
+
+    switch ( aEmnState )
+        {
+        case EMailEmnAutomatic:
+            return TImumDaSettings::EValueNotificationsOn;
+        case EMailEmnHomeOnly:
+            return TImumDaSettings::EValueNotificationsHome;
+        case EMailEmnOff:
+            return TImumDaSettings::EValueNotificationsOff;
+        }
+
+    return TImumDaSettings::EValueNotificationsOff;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::InternalRetrivalInterval()
+// ---------------------------------------------------------------------------
+//
+TInt CImumMboxInternalDataConverter::InternalRetrivalInterval(
+    TInt aInterval )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::InternalRetrivalInterval, 0, KLogData );
+
+    switch ( aInterval )
+        {
+        case KIMASAoInterval5Min:
+            return TImumDaSettings::EValue5Minutes;
+        case KIMASAoInterval15Min:
+            return TImumDaSettings::EValue15Minutes;
+        case KIMASAoInterval30Min:
+            return TImumDaSettings::EValue30Minutes;
+        case KIMASAoInterval1Hour:
+            return TImumDaSettings::EValue1Hour;
+        case KIMASAoInterval2Hours:
+            return TImumDaSettings::EValue2Hours;
+        case KIMASAoInterval4Hours:
+            return TImumDaSettings::EValue4Hours;
+        case KIMASAoInterval6Hours:
+            return TImumDaSettings::EValue6Hours;
+        }
+
+    return TImumDaSettings::EValue1Hour;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::GetInternalPopDownloadL()
+// ---------------------------------------------------------------------------
+//
+TInt32 CImumMboxInternalDataConverter::GetInternalPopDownloadL(
+    const TInt32& aSetting,
+    MImumInSettingsDataCollection& aInternalDataCollection )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::GetInternalPopDownloadL, 0, KLogData );
+
+    TInt partial = 0;
+    if ( aSetting == EIMASMapFullBody )
+        {
+        partial = TImumInSettings::EFlagSetDownloadAll;
+        }
+    else if ( aSetting == EIMASMapHeadersOnly )
+        {
+        partial = TImumInSettings::EFlagDownloadHeader;
+        }
+    else
+        {
+        partial = TImumInSettings::EFlagDownloadPartialCumulative;
+        aInternalDataCollection.SetAttr(
+            TImumInSettings::EKeyDownloadBodySize, aSetting );
+        }
+
+    return partial;
+    }
+
+// ---------------------------------------------------------------------------
+// CImumMboxInternalDataConverter::GetInternalPopSyncL()
+// ---------------------------------------------------------------------------
+//
+TInt32 CImumMboxInternalDataConverter::GetInternalPopSyncL(
+    const TInt32& aSetting )
+    {
+    IMUM_CONTEXT( CImumMboxInternalDataConverter::GetInternalPopSyncL, 0, KLogData );
+
+    return ( aSetting == EGetPop3EmailMessages ) ?
+        TImumInSettings::EFlagSetDownloadAll :
+        TImumInSettings::EFlagDownloadHeader;
+    }
+
+// End of File