--- /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