diff -r ebe688cedc25 -r 7fdbb852d323 email/imum/Utils/Src/ImumMboxSymbianDataConverter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Src/ImumMboxSymbianDataConverter.cpp Wed Sep 01 12:31:54 2010 +0100 @@ -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 +#include +#include +#include +#include +#include + +#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( 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 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( value ) ); + + // + User::LeaveIfError( iSourceData.GetAttr( + TImumInSettings::EKeySubscribe, value ) ); + imap4.SetSubscribe( static_cast( 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( 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( 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( 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( value ) ); + + // + User::LeaveIfError( iSourceData.GetAttr( + TImumDaSettings::EKeySendDelay, value ) ); + smtp.SetSendMessageOption( + static_cast( 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( 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