--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/imum/Utils/Src/ImumMboxDefaultData.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -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 <e32base.h>
+#include <imapset.h>
+#include <SendUiConsts.h>
+#include <centralrepository.h>
+
+#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;
+ }