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