diff -r ebe688cedc25 -r 7fdbb852d323 email/imum/Utils/Src/ImumMboxDefaultData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Src/ImumMboxDefaultData.cpp Wed Sep 01 12:31:54 2010 +0100 @@ -0,0 +1,543 @@ +/* +* Copyright (c) 2006 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: ImumMboxDefaultData.cpp +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include + +#include "ImumPanic.h" +#include "ImumMboxDefaultData.h" // KImapDefaultFetchSizeBytes +#include "ImumInSettingsDataArray.h" +#include "ImumDaErrorCodes.h" +#include "ImumInSettingsKeys.h" +#include "ImumUtilsLogging.h" +#include "ImumConstants.h" +#include "ImumPrivateCRKeys.h" +#include "IMASCenRepControl.h" + +// EXTERNAL DATA STRUCTURES +// EXTERNAL FUNCTION PROTOTYPES +// CONSTANTS +// MACROS +// LOCAL CONSTANTS AND MACROS +// MODULE DATA STRUCTURES +// LOCAL FUNCTION PROTOTYPES +// FORWARD DECLARATIONS + +// ============================ MEMBER FUNCTIONS =============================== + +// ---------------------------------------------------------------------------- +// CImumMboxDefaultData::CImumMboxDefaultData() +// ---------------------------------------------------------------------------- +// +CImumMboxDefaultData::CImumMboxDefaultData( + CImumInternalApiImpl& aMailboxApi ) + : + CImumInSettingsDataImpl( aMailboxApi ), + iCenRepControl( NULL ), + iImumRepository( NULL ) + { + IMUM_CONTEXT( CImumMboxDefaultData::CImumMboxDefaultData, 0, KLogData ); + IMUM_IN(); + IMUM_OUT(); + } + +// ---------------------------------------------------------------------------- +// CImumMboxDefaultData::~CImumMboxDefaultData() +// ---------------------------------------------------------------------------- +// +CImumMboxDefaultData::~CImumMboxDefaultData() + { + IMUM_CONTEXT( CImumMboxDefaultData::~CImumMboxDefaultData, 0, KLogData ); + IMUM_IN(); + + delete iCenRepControl; + iCenRepControl = NULL; + delete iImumRepository; + iImumRepository = NULL; + + IMUM_OUT(); + } + +// ---------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::ConstructL() +// ---------------------------------------------------------------------------- +// +void CImumMboxDefaultData::ConstructL() + { + IMUM_CONTEXT( CImumMboxDefaultData::ConstructL, 0, KLogData ); + IMUM_IN(); + + iSettings = CImumInSettingsDataArray::NewL(); + iConnectionSettings = + new ( ELeave ) CImumInConnSettings( KImumInConnSettingsGranularity ); + + iCenRepControl = CIMASCenRepControl::NewL(); + iImumRepository = CRepository::NewL( KCRUidImum ); + + // Prepare default data reading + iCenRepControl->SetActiveCentralRepository( *iImumRepository ); + iCenRepControl->SetActiveDefaultDataKey(); + + AddInSetL( KSenduiMtmImap4Uid ); + AddInSetL( KSenduiMtmPop3Uid ); + AddInSetL( KSenduiMtmSmtpUid ); + + ResetAll(); + + IMUM_OUT(); + } + +// ---------------------------------------------------------------------------- +// CImumMboxDefaultData::NewL() +// ---------------------------------------------------------------------------- +// +CImumMboxDefaultData* CImumMboxDefaultData::NewL( + CImumInternalApiImpl& aMailboxApi ) + { + IMUM_STATIC_CONTEXT( CImumMboxDefaultData::NewL, 0, utils, KLogData ); + IMUM_IN(); + + CImumMboxDefaultData* self = NewLC( aMailboxApi ); + CleanupStack::Pop( self ); + + IMUM_OUT(); + + return self; + } + +// ---------------------------------------------------------------------------- +// CImumMboxDefaultData::NewLC() +// ---------------------------------------------------------------------------- +// +CImumMboxDefaultData* CImumMboxDefaultData::NewLC( + CImumInternalApiImpl& aMailboxApi ) + { + IMUM_STATIC_CONTEXT( CImumMboxDefaultData::NewLC, 0, utils, KLogData ); + IMUM_IN(); + + CImumMboxDefaultData* self = + new ( ELeave ) CImumMboxDefaultData( aMailboxApi ); + CleanupStack::PushL( self ); + self->ConstructL(); + + IMUM_OUT(); + + return self; + } + +// --------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::AddSetL() +// --------------------------------------------------------------------------- +// +MImumDaSettingsDataCollection& CImumMboxDefaultData::AddSetL( + const TUid& aProtocol ) + { + IMUM_CONTEXT( CImumMboxDefaultData::AddSetL, 0, KLogInApi ); + IMUM_IN(); + IMUM_OUT(); + return AddInSetL( aProtocol ); + } + +// --------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::AddInSetL() +// --------------------------------------------------------------------------- +// +MImumInSettingsDataCollection& CImumMboxDefaultData::AddInSetL( + const TUid& aProtocol ) + { + IMUM_CONTEXT( CImumMboxDefaultData::AddInSetL, 0, KLogInApi ); + IMUM_IN(); + + CImumInSettingsDataCollectionImpl* connSettings = + CImumInSettingsDataCollectionImpl::NewLC( + aProtocol, + SelectDefaultData( aProtocol, iDefaultData ), + *iValidator ); + iConnectionSettings->AppendL( connSettings ); + CleanupStack::Pop( connSettings ); + + IMUM_OUT(); + + return *connSettings; + } + +// --------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::Validate() +// --------------------------------------------------------------------------- +// +TInt CImumMboxDefaultData::Validate() + { + // Return KErrNotSupported to avoid possible usage of default data with + // the mailbox creation function. This way, no mailboxes are attempted to + // be created based on default settings. This prevents unexpected + // crashes and also spots possible problems in the code in early + // development. + return KErrNotSupported; + } + +// --------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::Reset() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::Reset( const TUint /* aAttributeKey */ ) + { + // Just reset whole ...thing + ResetAll(); + } + +// --------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::ResetAll() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::ResetAll() + { + ResetImap4Data(); + ResetPop3Data(); + ResetSmtpData(); + ResetGeneralData(); + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::ResetImap4Data() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::ResetImap4Data() + { + MImumInSettingsDataCollection& imap4 = + *iConnectionSettings->At( EImumMboxDefaultDataIndexImap4 ); + + // Download control settings + imap4.SetAttr( + TImumInSettings::EKeySyncFlags, + KImumMboxDefaultSyncFlags[EImumMboxDefaultDataIndexImap4] ); + imap4.SetAttr( + TImumInSettings::EKeyDownloadFlags, + KImumMboxDefaultDownloadFlags[EImumMboxDefaultDataIndexImap4] ); + imap4.SetAttr( + TImumInSettings::EKeyDownloadBodySize, + KImumMboxDefaultDownloadBodySize ); + imap4.SetAttr( + TImumInSettings::EKeyDownloadAttachmentSize, + KImumMboxDefaultDownloadAttachmentSize ); + imap4.SetAttr( + TImumInSettings::EKeyDownloadMaxEmailSize, + KImumMboxDefaultDownloadMaxEmailSize ); + imap4.SetAttr( + TImumInSettings::EKeyImapIdle, + KImumMboxDefaultImapIdle ); + imap4.SetAttr( + TImumInSettings::EKeyImapIdleTimeout, + KImumMboxDefaultImapIdleTimeout ); + imap4.SetAttr( + TImumDaSettings::EImapFolderPath, + KImumMboxDefaultpFolderPath ); + imap4.SetAttr( + TImumInSettings::EKeySyncRate, + KImumMboxDefaultSyncRate ); + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::ResetPop3Data() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::ResetPop3Data() + { + MImumInSettingsDataCollection& pop3 = + *iConnectionSettings->At( EImumMboxDefaultDataIndexPop3 ); + + // Download control settings + pop3.SetAttr( + TImumInSettings::EKeySyncFlags, + KImumMboxDefaultSyncFlags[EImumMboxDefaultDataIndexPop3] ); + pop3.SetAttr( + TImumInSettings::EKeyDownloadFlags, + KImumMboxDefaultDownloadFlags[EImumMboxDefaultDataIndexPop3] ); + pop3.SetAttr( + TImumInSettings::EKeyDownloadBodySize, + KImumMboxDefaultDownloadBodySize ); + pop3.SetAttr( + TImumInSettings::EKeyDownloadMaxEmailSize, + KImumMboxDefaultDownloadMaxEmailSize ); + pop3.SetAttr( + TImumDaSettings::EKeyAPop, + KImumMboxDefaultAPop ); + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::ResetSmtpData() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::ResetSmtpData() + { + // Keep this here reserving for future use + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::ResetGeneralData() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::ResetGeneralData() + { + IMUM_CONTEXT( CImumMboxDefaultData::ResetDefaultData, 0, KLogData ); + IMUM_IN(); + + // Reset connection settings + for ( TInt index = iConnectionSettings->Count(); --index >= 0; ) + { + CImumInSettingsDataCollectionImpl& connSet = + *iConnectionSettings->At( index ); + + connSet.SetAttr( + TImumDaSettings::EKeyAccessPoint, + KImumMboxDefaultAccessPoint ); + connSet.SetAttr( + TImumInSettings::EKeyAccessPointType, + KImumMboxDefaultAccessPointType ); + connSet.SetAttr( + TImumInSettings::EKeyAccessPointName, + KImumMboxDefaultAccessPointName ); + connSet.SetAttr( + TImumDaSettings::EKeyUsername, + KImumMboxDefaultUsername ); + connSet.SetAttr( + TImumInSettings::EKeyTemporaryUsername, + KImumMboxDefaultTemporaryUsername ); + connSet.SetAttr( + TImumDaSettings::EKeyPassword, + KImumMboxDefaultPassword ); + connSet.SetAttr( + TImumInSettings::EKeyTemporaryPassword, + KImumMboxDefaultTemporaryPassword ); + connSet.SetAttr( + TImumDaSettings::EKeyPort, + KImumMboxDefaultPort ); + connSet.SetAttr( + TImumDaSettings::EKeySecurity, + KImumMboxDefaultSecurity ); + } + + SetAttr( + TImumDaSettings::EKeyEmailAddress, + KImumMboxDefaultEmailAddress ); + SetAttr( + TImumDaSettings::EKeyMailboxName, + KImumMboxDefaultMailboxName ); + SetAttr( + TImumDaSettings::EKeyUserAlias, + KImumMboxDefaultUserAlias ); + SetAttr( + TImumDaSettings::EKeyReplyToAddress, + KImumMboxDefaultReplyToAddress ); + SetAttr( + TImumDaSettings::EKeySendDelay, + KImumMboxDefaultSendDelay ); + SetAttr( + TImumDaSettings::EKeySendCopyToSelf, + KImumMboxDefaultSendCopyToSelf ); + SetAttr( + TImumDaSettings::EKeyIncludeSignature, + KImumMboxDefaultIncludeSignature ); + SetAttr( + TImumDaSettings::EKeySignature, + KImumMboxDefaultSignature ); + SetAttr( + TImumDaSettings::EKeyEmailAlert, + KImumMboxDefaultEmailAlert ); + SetAttr( + TImumDaSettings::EKeyInboxUpdateLimit, + KImumMboxDefaultInboxUpdateLimit ); + SetAttr( + TImumDaSettings::EKeyFolderUpdateLimit, + KImumMboxDefaultFolderUpdateLimit ); + + UpdateData( *this, TImumDaSettings::EKeyMailDeletion, + KImumDefMailDeletionSettingMode, KImumMboxDefaultMailDeletion ); + + SetAttr( + TImumDaSettings::EKeyAutoNotifications, + KImumMboxDefaultAutoNotifications ); + SetAttr( + TImumDaSettings::EKeyAutoRetrieval, + KImumMboxDefaultAutoRetrieval ); + SetAttr( + TImumDaSettings::EKeyAutoRetrievalDays, + KImumMboxDefaultAutoRetrievalDays ); + SetAttr( + TImumDaSettings::EKeyAutoRetrievalStartHour, + KImumMboxDefaultAutoRetrievalStartHour ); + SetAttr( + TImumDaSettings::EKeyAutoRetrievalEndHour, + KImumMboxDefaultAutoRetrievalEndHour ); + SetAttr( + TImumDaSettings::EKeyAutoRetrievalInterval, + KImumMboxDefaultAutoRetrievalInterval ); + + // Internal setting keys + SetAttr( + TImumInSettings::EKeyHideMsgs, + KImumMboxDefaultHideMsgs ); + SetAttr( + TImumInSettings::EKeyOpenHtmlMail, + KImumMboxDefaultOpenHtmlMail ); + SetAttr( + TImumInSettings::EKeySearchString, + KImumMboxDefaultSearchString ); + SetAttr( + TImumInSettings::EKeyPathSeparator, + KImumMboxDefaulthPathSeparator ); + SetAttr( + TImumInSettings::EKeySynchronise, + KImumMboxDefaultSynchronise ); + SetAttr( + TImumInSettings::EKeySubscribe, + KImumMboxDefaultSubscribe ); + SetAttr( + TImumInSettings::EKeyUpdatingSeenFlag, + KImumMboxDefaultUpdatingSeenFlag ); + SetAttr( + TImumInSettings::EKeyFetchSize, + KImumMboxDefaultFetchSize ); + SetAttr( + TImumInSettings::EKeyReceiptAddress, + KImumMboxDefaultReceiptAddress ); + SetAttr( + TImumInSettings::EKeyBodyEncoding, + KImumMboxDefaultBodyEncoding ); + SetAttr( + TImumInSettings::EKeyDefaultMsgCharSet, + KImumMboxDefaultDefaultMsgCharSet ); + SetAttr( + TImumInSettings::EKeyAddVCardToEmail, + KImumMboxDefaultAddVCardToEmail ); + SetAttr( + TImumInSettings::EKeyRequestReceipts, + KImumMboxDefaultRequestReceipts ); + SetAttr( + TImumInSettings::EKeySMTPAuth, + KImumMboxDefaultSMTPAuth ); + SetAttr( + TImumInSettings::EKeyInboxLoginDetails, + KImumMboxDefaultInboxLoginDetails ); + SetAttr( + TImumInSettings::EKeyToCcIncludeLimit, + KImumMboxDefaultToCcIncludeLimit ); + SetAttr( + TImumInSettings::EKeyDisconnectedMode, + KImumMboxDefaultDisconnectedMode ); + SetAttr( + TImumInSettings::EKeyAutoSendOnConnect, + KImumMboxDefaultAutoSendOnConnect ); + SetAttr( + TImumInSettings::EKeyDeleteEmailsWhenDisconnecting, + KImumMboxDefaultDeleteEmailsWhenDisconnecting ); + SetAttr( + TImumInSettings::EKeyAcknowledgeReceipts, + KImumMboxDefaultAcknowledgeReceipts ); + SetAttr( + TImumInSettings::EKeySettingsVersion, + KImumMboxDefaultSettingsVersion ); + SetAttr( + TImumInSettings::EKeyAllowEmptyEmailAddress, + KImumMboxDefaultAllowEmptyEmailAddress ); + SetAttr( + TImumInSettings::EKeyGenerateMailboxName, + KImumMboxDefaultGenerateMailboxName ); + SetAttr( + TImumInSettings::EKeyInfoLastUpdateFailed, + KImumMboxDefaultLastUpdateFailed ); + SetAttr( + TImumInSettings::EKeyInfoLastSuccessfulUpdate, + KImumMboxDefaultLastSuccessfulUpdate ); + SetAttr( + TImumInSettings::EKeyAoUpdateSuccessfulWithCurSettings, + KImumMboxUpdateSuccessfulWithCurSettings ); + SetAttr( + TImumInSettings::EKeyDownloadBufferWlan, + KImumMboxDefaultDownloadBufferWlan ); + SetAttr( + TImumInSettings::EKeyDownloadBufferGprs, + KImumMboxDefaultDownloadBufferGprs ); + SetAttr( + TImumInSettings::EKeyIsPredefinedMailbox, + KImumMboxDefaultIsPredefinedMailbox ); + + IMUM_OUT(); + } + +// --------------------------------------------------------------------------- +// From class CImumInSettingsDataImpl. +// CImumMboxDefaultData::Log() +// --------------------------------------------------------------------------- +// +void CImumMboxDefaultData::Log() const + { + // Do nothing here right now + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::DefaultConnectionData() +// --------------------------------------------------------------------------- +// +const CImumInSettingsDataCollectionImpl* + CImumMboxDefaultData::DefaultConnectionData( + const TInt aIndex ) const + { + return iConnectionSettings->At( aIndex ); + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::CloneSettingsL() +// --------------------------------------------------------------------------- +// +CImumInSettingsDataArray* CImumMboxDefaultData::CloneSettingsL() const + { + return iSettings->CloneL(); + } + +// --------------------------------------------------------------------------- +// CImumMboxDefaultData::CloneConnectionSettingsL() +// --------------------------------------------------------------------------- +// +CImumInSettingsDataCollectionImpl* + CImumMboxDefaultData::CloneConnectionSettingsL( + const TUid& aProtocol ) const + { + const CImumInSettingsDataCollectionImpl* defaultData = + SelectDefaultData( aProtocol, this ); + CImumInSettingsDataCollectionImpl* clone = NULL; + + if ( defaultData ) + { + clone = defaultData->DoCloneL(); + } + else + { + SettingsDataExceptionL( TImumDaErrorCode::EConnectionSettingsNull ); + } + + return clone; + }