williamr@2: // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __CEMAILACCOUNTS_H__ williamr@2: #define __CEMAILACCOUNTS_H__ williamr@2: williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: class CImIAPPreferences; williamr@2: class CImPop3Settings; williamr@2: class CImImap4Settings; williamr@2: class CImSmtpSettings; williamr@2: class CRepository; williamr@2: class CImapSyncDownloadRules; williamr@2: class CImapTransportBufferSizes; williamr@2: class CImSmtpMobilitySettings; williamr@2: williamr@2: /** williamr@2: Maximum size of email account name williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TInt KEmailAccountNameSize = 256; williamr@2: williamr@2: /** williamr@2: Maximum number of entries allowed in the IAP list for a SMTP mobility account williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: const TInt KMaxSmtpMobilityAccountIAPListEntries = 32; williamr@2: williamr@2: /** williamr@2: Identifier number for a POP email account. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see TPopAccount williamr@2: */ williamr@2: typedef TInt TPopAccountId; williamr@2: williamr@2: /** williamr@2: Identifier number for an IMAP email account. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see TImapAccount williamr@2: */ williamr@2: typedef TInt TImapAccountId; williamr@2: williamr@2: /** williamr@2: Identifier number for an SMTP email account. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see TSmtpAccount williamr@2: */ williamr@2: typedef TInt TSmtpAccountId; williamr@2: williamr@2: /** williamr@2: Identifier number for an SMTP moblity account. williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: typedef TInt TSmtpMobilityAccountId; williamr@2: williamr@2: /** williamr@2: Array of IAP values williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: typedef RArray RArrayIAP; williamr@2: williamr@2: /** williamr@2: Null or undefined SMTP account identifier williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: const TSmtpAccountId KNullSmtpAccountId = 0; williamr@2: williamr@2: /** williamr@2: POP account ID. williamr@2: williamr@2: Objects of this type identify POP email accounts. williamr@2: They are obtained when a POP account is created williamr@2: (CEmailAccounts::CreatePopAccountL()), or by williamr@2: querying for what POP accounts exist williamr@2: (CEmailAccounts::GetPopAccountL() and CEmailAccounts::GetPopAccountsL()). williamr@2: williamr@2: The object is then used as a handle to the account when getting williamr@2: the account settings, using CEmailAccounts::LoadPopSettingsL() and williamr@2: CEmailAccounts::LoadPopIapSettingsL(). williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TPopAccount williamr@2: { williamr@2: public: williamr@2: /** POP account identifier number. williamr@2: williamr@2: Each POP account stored on the phone has a different williamr@2: identifier number to distinguish it from other accounts. williamr@2: */ williamr@2: TPopAccountId iPopAccountId; williamr@2: williamr@2: /** POP account name. */ williamr@2: TBuf iPopAccountName; williamr@2: williamr@2: /** Entry ID of the POP service for this account. */ williamr@2: TMsvId iPopService; williamr@2: williamr@2: /** Entry ID of the related SMTP service for this account. williamr@2: williamr@2: This is set if an SMTP service has been created, using williamr@2: CEmailAccounts::CreateSmtpAccountL(), that specifies that williamr@2: it is related to this account. An SMTP service (which provides williamr@2: email sending functionality) is used in conjunction with williamr@2: a POP or IMAP service (which provide email retrieval). williamr@2: */ williamr@2: TMsvId iSmtpService; williamr@2: }; williamr@2: williamr@2: /** williamr@2: IMAP account ID. williamr@2: williamr@2: Objects of this type identify IMAP email accounts. williamr@2: They are obtained when a IMAP account is created williamr@2: (CEmailAccounts::CreateImapAccountL()), or by williamr@2: querying for what IMAP accounts exist williamr@2: (CEmailAccounts::GetImapAccountL() and CEmailAccounts::GetImapAccountsL()). williamr@2: williamr@2: The object is then used as a handle to the account when getting williamr@2: the account settings, using CEmailAccounts::LoadImapSettingsL() and williamr@2: CEmailAccounts::LoadImapIapSettingsL(). williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TImapAccount williamr@2: { williamr@2: public: williamr@2: /** IMAP account identifier number. williamr@2: williamr@2: Each IMAP account stored on the phone has a different williamr@2: identifier number to distinguish it from other accounts. williamr@2: */ williamr@2: TImapAccountId iImapAccountId; williamr@2: williamr@2: /** IMAP account name */ williamr@2: TBuf iImapAccountName; williamr@2: williamr@2: /** Entry ID of the IMAP service for this account. */ williamr@2: TMsvId iImapService; williamr@2: williamr@2: /** Entry ID of the related SMTP service for this account. williamr@2: williamr@2: This is set if an SMTP service has been created, using williamr@2: CEmailAccounts::CreateSmtpAccountL(), that specifies that williamr@2: it is related to this account. An SMTP service (which provides williamr@2: email sending functionality) is used in conjunction with williamr@2: a POP or IMAP service (which provide email retrieval). williamr@2: */ williamr@2: TMsvId iSmtpService; williamr@2: }; williamr@2: williamr@2: /** williamr@2: SMTP account ID. williamr@2: williamr@2: Objects of this type identify SMTP email accounts. williamr@2: They are obtained when a SMTP account is created williamr@2: (CEmailAccounts::CreateSmtpAccountL()), or by williamr@2: querying for what SMTP accounts exist williamr@2: (CEmailAccounts::GetSmtpAccountL() and CEmailAccounts::GetISmtpAccountsL()). williamr@2: williamr@2: The object is then used as a handle to the account when getting williamr@2: the account settings, using CEmailAccounts::LoadSmtpSettingsL() and williamr@2: CEmailAccounts::LoadSmtpIapSettingsL(). williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TSmtpAccount williamr@2: { williamr@2: public: williamr@2: /** SMTP account identifier number. */ williamr@2: TSmtpAccountId iSmtpAccountId; williamr@2: williamr@2: /** SMTP account name */ williamr@2: TBuf iSmtpAccountName; williamr@2: williamr@2: /** Entry ID of the SMTP service for this account. */ williamr@2: TMsvId iSmtpService; williamr@2: williamr@2: /** Entry ID of the related POP or IMAP service for this account. williamr@2: williamr@2: An SMTP service (which provides email sending functionality) is williamr@2: used in conjunction with a POP or IMAP service (which provide email retrieval). williamr@2: */ williamr@2: TMsvId iRelatedService; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class TSmtpMobilityAccount williamr@2: { williamr@2: public: williamr@2: /** SMTP mobility account identifier */ williamr@2: TSmtpMobilityAccountId iAccountId; williamr@2: williamr@2: /** SMTP mobility account name */ williamr@2: TBuf iName; williamr@2: williamr@2: /** Parent SMTP account identifier */ williamr@2: TSmtpAccountId iParentSmtpAccountId; williamr@2: williamr@2: /** Linked SMTP account identifier. Identifies the SMTP account whose williamr@2: settings will be used by this mobility account. If the mobility account williamr@2: is using its own settings, this will be set to KNullSmtpAccountId. */ williamr@2: TSmtpAccountId iLinkedSmtpAccountId; williamr@2: }; williamr@2: williamr@2: /** williamr@2: Creates, loads, saves and deletes email (IMAP, POP, and SMTP) accounts. williamr@2: williamr@2: An account encapsulates: williamr@2: williamr@2: - Settings for a messaging service. There is a different type of williamr@2: settings class for each of the email protocols (CImPop3Settings, williamr@2: CImImap4Settings, CImSmtpSettings). williamr@2: - IAP (Internet account) settings for accessing the service. williamr@2: williamr@2: The class has a family of functions for each protocol to create, get, williamr@2: and delete accounts: williamr@2: williamr@2: - Create\AccountL williamr@2: - Get\AccountL williamr@2: - Get\AccountsL williamr@2: - Delete\AccountL williamr@2: williamr@2: where \ is either POP, IMAP, or SMTP. williamr@2: The Create and Get functions don't directly return settings williamr@2: objects, but only account identifiers. williamr@2: williamr@2: Account identifiers are passed to the following functions williamr@2: to save and load the service and IAP settings for that account: williamr@2: williamr@2: - Load\SettingsL williamr@2: - Save\SettingsL williamr@2: - Load\IapSettingsL williamr@2: - Save\IapSettingsL williamr@2: williamr@2: For SMTP only, there is a concept of a default account (as a client williamr@2: program may want to send an email, and not care which account is used.) williamr@2: SetDefaultSmtpAccountL(), DefaultSmtpAccountL() and DeleteDefaultSmtpAccountL() williamr@2: are used to handle this. williamr@2: williamr@2: Note that an account is associated with a service entry in the message store, williamr@2: but account information itself is stored in the central repository. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CEmailAccounts : public CBase, public MMsvSessionObserver williamr@2: { williamr@2: public: williamr@2: williamr@2: IMPORT_C static CEmailAccounts* NewL(); williamr@2: IMPORT_C static CEmailAccounts* NewLC(); williamr@2: IMPORT_C virtual ~CEmailAccounts(); williamr@2: williamr@2: IMPORT_C TPopAccount CreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings, williamr@2: const CImIAPPreferences& aPopIAP, TBool aReadOnly); williamr@2: williamr@2: IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings, williamr@2: const CImIAPPreferences& aImapIAP, TBool aReadOnly); williamr@2: williamr@2: IMPORT_C TSmtpAccount CreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings, williamr@2: const CImIAPPreferences& aSmtpIAP, TBool aReadOnly); williamr@2: williamr@2: IMPORT_C TSmtpAccount CreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings, williamr@2: const CImIAPPreferences& aSmtpIAP, TBool aReadOnly); williamr@2: williamr@2: IMPORT_C TSmtpAccount CreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, williamr@2: const CImIAPPreferences& aSmtpIAP, TBool aReadOnly); williamr@2: williamr@2: IMPORT_C void GetPopAccountsL(RArray& aAccounts); williamr@2: IMPORT_C void GetPopAccountL(TMsvId aServiceId, TPopAccount& aAccount); williamr@2: IMPORT_C void DeletePopAccountL(const TPopAccount& aAccount); williamr@2: williamr@2: IMPORT_C void GetImapAccountsL(RArray& aAccounts); williamr@2: IMPORT_C void GetImapAccountL(TMsvId aServiceId, TImapAccount& aAccount); williamr@2: IMPORT_C void DeleteImapAccountL(const TImapAccount& aAccount); williamr@2: williamr@2: IMPORT_C void GetSmtpAccountsL(RArray& aAccounts); williamr@2: IMPORT_C void GetSmtpAccountL(TMsvId aServiceId, TSmtpAccount& aAccount); williamr@2: IMPORT_C void DeleteSmtpAccountL(const TSmtpAccount& aAccount); williamr@2: IMPORT_C void DeleteDefaultSmtpAccountL(); williamr@2: williamr@2: IMPORT_C void PopulateDefaultPopSettingsL(CImPop3Settings& aPopSettings, williamr@2: CImIAPPreferences& aPopIap); williamr@2: williamr@2: IMPORT_C void PopulateDefaultImapSettingsL(CImImap4Settings& aImapSettings, williamr@2: CImIAPPreferences& aImapIap); williamr@2: williamr@2: IMPORT_C void PopulateDefaultSmtpSettingsL(CImSmtpSettings& aSmtpSettings, williamr@2: CImIAPPreferences& aSmtpIap); williamr@2: williamr@2: IMPORT_C TInt DefaultSmtpAccountL(TSmtpAccount& aAccount); williamr@2: IMPORT_C void SetDefaultSmtpAccountL(const TSmtpAccount& aAccount); williamr@2: williamr@2: IMPORT_C void LoadPopSettingsL(const TPopAccount& aAccount, CImPop3Settings& aPopSettings); williamr@2: IMPORT_C void LoadPopIapSettingsL(const TPopAccount& aAccount, CImIAPPreferences& aIAP); williamr@2: williamr@2: IMPORT_C void LoadImapSettingsL(const TImapAccount& aAccount, CImImap4Settings& aImapSettings); williamr@2: IMPORT_C void LoadImapIapSettingsL(const TImapAccount& aAccount, CImIAPPreferences& aIAP); williamr@2: williamr@2: IMPORT_C void LoadSmtpSettingsL(const TSmtpAccount& aAccount, CImSmtpSettings& aSmtpSettings); williamr@2: IMPORT_C void LoadSmtpIapSettingsL(const TSmtpAccount& aAccount, CImIAPPreferences& aIAP); williamr@2: williamr@2: IMPORT_C void SavePopSettingsL(const TPopAccount& aAccount, const CImPop3Settings& aPopSettings); williamr@2: IMPORT_C void SavePopIapSettingsL(const TPopAccount& aAccount, const CImIAPPreferences& aIAP); williamr@2: williamr@2: IMPORT_C void SaveImapSettingsL(const TImapAccount& aAccount, const CImImap4Settings& aImapSettings); williamr@2: williamr@2: IMPORT_C void SaveImapIapSettingsL(const TImapAccount& aAccount, const CImIAPPreferences& aIAP); williamr@2: williamr@2: IMPORT_C void SaveSmtpSettingsL(const TSmtpAccount& aAccount, const CImSmtpSettings& aSmtpSettings); williamr@2: IMPORT_C void SaveSmtpIapSettingsL(const TSmtpAccount& aAccount, const CImIAPPreferences& aIAP); williamr@2: williamr@2: IMPORT_C TBool IsAccountReadOnlyL(const TPopAccount& aAccount); williamr@2: IMPORT_C TBool IsAccountReadOnlyL(const TImapAccount& aAccount); williamr@2: IMPORT_C TBool IsAccountReadOnlyL(const TSmtpAccount& aAccount); williamr@2: williamr@2: // Published partner routines williamr@2: IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName, williamr@2: const CImImap4Settings& aImapSettings, const CImIAPPreferences& aImapIAP, williamr@2: const CImapSyncDownloadRules& aSyncDownloadRules, TBool aReadOnly); williamr@2: IMPORT_C void LoadImapSyncDownloadRulesL(const TImapAccount& aAccount, CImapSyncDownloadRules& aRules); williamr@2: IMPORT_C void LoadImapTransportBufferSizesL(CImapTransportBufferSizes& aBufferSizes); williamr@2: IMPORT_C void SaveImapSyncDownloadRulesL(const TImapAccount& aAccount, const CImapSyncDownloadRules& aRules); williamr@2: IMPORT_C void SaveImapTransportBufferSizesL(const CImapTransportBufferSizes& aBufferSizes); williamr@2: IMPORT_C void DeleteImapTransportBufferSizesL(); williamr@2: williamr@2: IMPORT_C void GetSmtpAccountL(TSmtpAccountId aAccountId, TSmtpAccount& aAccount); williamr@2: williamr@2: IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const CImSmtpMobilitySettings& aSettings, TBool aReadOnly); williamr@2: IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const TSmtpAccount& aLinkedSmtpAccount, TBool aReadOnly); williamr@2: IMPORT_C void GetSmtpMobilityAccountsL(const TSmtpAccount& aSmtpAccount, RArray& aAccounts); williamr@2: IMPORT_C void DeleteSmtpMobilityAccountL(const TSmtpMobilityAccount& aAccount); williamr@2: williamr@2: IMPORT_C void PopulateDefaultSmtpMobilitySettingsL(CImSmtpMobilitySettings& aSettings); williamr@2: IMPORT_C void LoadSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, CImSmtpMobilitySettings& aSettings); williamr@2: IMPORT_C void SaveSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, const CImSmtpMobilitySettings& aSettings); williamr@2: williamr@2: IMPORT_C void LoadSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, RArrayIAP& aIapList); williamr@2: IMPORT_C void SaveSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, const RArrayIAP& aIapList); williamr@2: williamr@2: IMPORT_C TBool IsAccountReadOnlyL(const TSmtpMobilityAccount& aAccount); williamr@2: williamr@2: // Internal routines williamr@2: IMPORT_C void GetSmtpMobilityAccountsL(RArray& aAccounts); williamr@2: IMPORT_C TBool LoadSmtpMobilitySettingsL(TSmtpAccountId& aSmtpAccountId, TUint32 aIap, CImSmtpMobilitySettings& aSettings); williamr@2: williamr@2: private: williamr@2: CEmailAccounts(); williamr@2: void HandleSessionEventL(TMsvSessionEvent , TAny* , TAny* , TAny* ); williamr@2: CMsvSession& SessionL(); williamr@2: CRepository& PopRepositoryL(); williamr@2: CRepository& ImapRepositoryL(); williamr@2: CRepository& SmtpRepositoryL(); williamr@2: williamr@2: TMsvId CreateEmailServiceL(CMsvEntry& aMsvEntry, const TDesC& aAccountName, TUid aMTMType, TBool aVisible); williamr@2: void SetRelatedIdL(CMsvEntry& aMsvEntry, TMsvId aId, TMsvId aRelatedId); williamr@2: void SetEntryDetailsL(TMsvId aId, const TDesC& aAccountName); williamr@2: void UnSetInPreparationFlagsL(CMsvEntry& aMsvEntry, TMsvId aId, TInt aAccountId); williamr@2: void DeleteServiceEntryL(CMsvEntry& aMsvEntry, TMsvId aId); williamr@2: williamr@2: TUint GetNextEmptyAccountSlotL(CRepository& aRepository); williamr@2: TUint32 FindEmailAccountL(TMsvId aService, CRepository& aRepository); williamr@2: williamr@2: void LoadIAPPrefSettingsL(TUint32 aAccountId, CImIAPPreferences& aIAP, CRepository& aRepository); williamr@2: void DoLoadPopSettingsL(TUint32 aAccountId, CImPop3Settings& aPopSettings); williamr@2: void DoLoadImapSettingsL(TUint32 aAccountId, CImImap4Settings& aImapSettings); williamr@2: void DoLoadSmtpSettingsL(TUint32 aAccountId, CImSmtpSettings& aSmtpSettings); williamr@2: williamr@2: void SaveIAPPrefSettingsL(TUint32 aAccountId, const CImIAPPreferences& aIAP, CRepository& aRepository); williamr@2: void DoSavePopSettingsL(TUint32 aAccountId, const CImPop3Settings& aPopSettings); williamr@2: void DoSaveSmtpSettingsL(TUint32 aAccountId, const CImSmtpSettings& aSmtpSettings); williamr@2: void DoSaveImapSettingsL(TUint32 aAccountId, const CImImap4Settings& aImapSettings); williamr@2: void DoSaveImapSyncDownloadRulesL(TUint32 aAccountId, const CImapSyncDownloadRules& aRules, CRepository& aRepository); williamr@2: williamr@2: TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings, williamr@2: const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TBool aReadOnly); williamr@2: williamr@2: TUint32 DoCreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings, williamr@2: const CImIAPPreferences& aPopIAP, TMsvId aPopService, TMsvId aRelatedService, TBool aReadOnly); williamr@2: TUint32 DoCreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings, williamr@2: const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TMsvId aImapService, williamr@2: TMsvId aRelatedService, TBool aReadOnly); williamr@2: TUint32 DoCreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings, williamr@2: const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aPopAccountId, TBool aReadOnly); williamr@2: TUint32 DoCreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings, williamr@2: const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aImapAccountId, TBool aReadOnly); williamr@2: TUint32 DoCreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, williamr@2: const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, TMsvId aRelatedService, TBool aReadOnly); williamr@2: williamr@2: void DeleteIAPPrefSettingsL(TUint32 aAccountId, CRepository& aRepository); williamr@2: void DeletePopSettings(TUint32 aAccountId, CRepository& aRepository); williamr@2: void DeleteSmtpSettings(TUint32 aAccountId, CRepository& aRepository); williamr@2: void DeleteImapSettings(TUint32 aAccountId, CRepository& aRepository); williamr@2: void DeleteImapSyncDownloadRulesL(TUint32 aAccountId, CRepository& aRepository); williamr@2: williamr@2: void GetEmailServicesL(CMsvEntrySelection& aServices, TUid aMTMType, CMsvEntry& aMsvEntry); williamr@2: williamr@2: TBool IsAsciiPrintable(const TDesC16& aText); williamr@2: TBool IsAsciiPrintable(const TDesC8& aText); williamr@2: TBool IsUnicodePrintable(const TDesC16& aText); williamr@2: williamr@2: TSmtpMobilityAccount DoCreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const CImSmtpMobilitySettings& aSettings, const TSmtpAccount& aSmtpAccount, TSmtpAccountId aLinkedSmtpAccountId, TBool aReadOnly); williamr@2: void AddMobilityAccountToSmtpAccountL(const TSmtpAccount& aSmtpAccount, const RArrayIAP& aIapList, TUint32 aMobAccRepId, CRepository& aRepository); williamr@2: void AddLinkToMobilityAccountL(TSmtpAccountId aLinkedSmtpAccountId, TUint32 aMobAccRepId, CRepository& aRepository); williamr@2: TInt FindIapListEntryInSmtpMobilityAccountListL(const RArrayIAP& aIapList, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries, TInt aIgnorePos); williamr@2: TInt FindAccountIdInSmtpMobilityAccountListL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries); williamr@2: void GetSmtpAccountInfoForMobilityAccountL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32& aSmtpAccRepId, TInt& aPos); williamr@2: void DeleteAllOwnedMobilityAccountsL(TUint32 aSmtpAccRepId, CRepository& aRepository); williamr@2: void DeleteAllLinkedMobilityAccountsL(TUint32 aLinkedSmtpAccRepId, CRepository& aRepository); williamr@2: void DeleteSmtpMobilityAccountListEntryL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId); williamr@2: void DeleteSmtpMobilityAccountFromLinkedSmtpAccountL(TUint32 aMobAccRepId, CRepository& aRepository); williamr@2: TBool IsSmtpTypeAccountReadOnlyL(TUint32 aAccRepId); williamr@2: TBool IsSmtpMobilityAccount(CRepository& aRepository, TUint32 aAccRepId); williamr@2: williamr@2: private: williamr@2: enum TEmailSettingTypes williamr@2: { williamr@2: // Partial CenRep Id for service settings williamr@2: EServiceSettingType = 0x00000000, williamr@2: // Partial CenRep Id for IAP Prefs williamr@2: EIAPPrefSettingType = 0x00010000, williamr@2: // CenRep mask for email accounts williamr@2: EAccountMask = 0x800FFFFF williamr@2: }; williamr@2: williamr@2: enum TPOPServiceSettingsCenRepId williamr@2: { williamr@2: EPOPServiceId = 0x00000000, williamr@2: EPOPAccountNameId = 0x00000001, williamr@2: EPOPRelatedSMTPServiceId = 0x00000002, williamr@2: EPOPSettingsVersionId = 0x00000003, williamr@2: EPOPServerAddressId = 0x00000004, williamr@2: EPOPPortNumberId = 0x00000005, williamr@2: EPOPFlagsId = 0x00000006, williamr@2: EPOPLoginNameId = 0x00000007, williamr@2: EPOPPasswordId = 0x00000008, williamr@2: EPOPMaxEmailSizeId = 0x00000009, williamr@2: EPOPGetEmailOptionsId = 0x0000000A, williamr@2: EPOPInboxSynchronisationLimitId = 0x0000000B, williamr@2: EPOPPopulationLimitId = 0x0000000C, williamr@2: EPOPReadOnlyAccountId = 0x0000000D, williamr@2: EPOPTlsSslDomainId = 0x0000000F williamr@2: }; williamr@2: williamr@2: enum TIMAPServiceSettingsCenRepId williamr@2: { williamr@2: EIMAPServiceId = 0x00000000, williamr@2: EIMAPAccountNameId = 0x00000001, williamr@2: EIMAPRelatedSMTPServiceId = 0x00000002, williamr@2: EIMAPSettingsVersionId = 0x00000003, williamr@2: EIMAPServerAddressId = 0x00000004, williamr@2: EIMAPPortNumberId = 0x00000005, williamr@2: EIMAPFlagsId = 0x00000006, williamr@2: EIMAPLoginNameId = 0x00000007, williamr@2: EIMAPPasswordId = 0x00000008, williamr@2: EIMAPFolderPathId = 0x00000009, williamr@2: EIMAPPathSeparatorId = 0x0000000A, williamr@2: EIMAPSynchronisationStrategyId = 0x0000000B, williamr@2: EIMAPSubscriptionStrategyId = 0x0000000C, williamr@2: EIMAPMaxEmailSizeId = 0x0000000D, williamr@2: EIMAPGetMailOptionsId = 0x0000000E, williamr@2: EIMAPInboxSynchronisationLimitId= 0x0000000F, williamr@2: EIMAPMailboxSynchronisationLimitId= 0x00000010, williamr@2: EIMAPTlsSslDomainId = 0x00000012, williamr@2: EIMAPSyncRateId = 0x00000020, williamr@2: EIMAPFetchSizeId = 0x00000030, williamr@2: EIMAPIdleTimeoutId = 0x00000040, williamr@2: EPartialMailOptionsId = 0x00000050, williamr@2: EBodyTextSizeLimitId = 0x00000060, williamr@2: EAttachmentSizeLimitId = 0x00000070, williamr@2: EIMAPSearchStringId = 0x00000080, williamr@2: EIMAPReadOnlyAccountId = 0x00000090, williamr@2: // 0x00001000 - 0x00002FFF reserved for sync download rules williamr@2: // 0x00010000 - 0x00014FFF reserved for IAP/SNAP preferences williamr@2: }; williamr@2: williamr@2: enum TIMAPSyncDownloadRulesCenRepInfo williamr@2: { williamr@2: EIMAPSyncDownloadRulesVersionId = 0x00001000, williamr@2: EIMAPNumInboxSyncDownloadRulesId = 0x00001001, williamr@2: EIMAPNumFolderSyncDownloadRulesId = 0x00001002, williamr@2: williamr@2: EIMAPInboxSyncDownloadRulesBearerTypesId = 0x00001010, williamr@2: EIMAPInboxSyncDownloadRulesMailOptionsId = 0x00001011, williamr@2: EIMAPInboxSyncDownloadRulesTotalSizeLimitId = 0x00001012, williamr@2: EIMAPInboxSyncDownloadRulesBodyTextSizeLimitId = 0x00001013, williamr@2: EIMAPInboxSyncDownloadRulesAttachmentSizeLimitId = 0x00001014, williamr@2: EIMAPInboxSyncDownloadRulesGetMailBodyPartsId = 0x00001015, williamr@2: EIMAPInboxSyncDownloadRulesMaxEmailSizeId = 0x00001016, williamr@2: williamr@2: EIMAPFolderSyncDownloadRulesBearerTypesId = 0x00001030, williamr@2: EIMAPFolderSyncDownloadRulesMailOptionsId = 0x00001031, williamr@2: EIMAPFolderSyncDownloadRulesTotalSizeLimitId = 0x00001032, williamr@2: EIMAPFolderSyncDownloadRulesBodyTextSizeLimitId = 0x00001033, williamr@2: EIMAPFolderSyncDownloadRulesAttachmentSizeLimitId = 0x00001034, williamr@2: EIMAPFolderSyncDownloadRulesGetMailBodyPartsId = 0x00001035, williamr@2: EIMAPFolderSyncDownloadRulesMaxEmailSizeId = 0x00001036, williamr@2: williamr@2: // Offset between sets of rules williamr@2: EIMAPSyncDownloadRulesOffset = 0x40 williamr@2: }; williamr@2: williamr@2: enum TIAPPreferencesCenRepId williamr@2: { williamr@2: // single settings williamr@2: EIAPPrefVersion = 0x00010000, williamr@2: EIAPChoicesCount = 0x00010001, williamr@2: williamr@2: // List of settings williamr@2: EIAPListIDs = 0x00011000, williamr@2: EIAPListDialogPrefs = 0x00012000, williamr@2: // EIAPSnapId placed here is a deviation from Design doc. Remove comment after a decision is made williamr@2: EIAPSnapId = 0x00014000 // The same value is to be used in all account types williamr@2: }; williamr@2: williamr@2: enum TIMAPTransportBufferSizesCenRepInfo williamr@2: { williamr@2: EIMAPTransportBufferSizesVersionId = 0x80000100, williamr@2: EIMAPNumTransportBufferSizesId = 0x80000101, williamr@2: williamr@2: EIMAPTransportBufferSizesBearerTypesId = 0x80000110, williamr@2: EIMAPTransportBufferSizesFetchRequestSizeId = 0x80000111, williamr@2: EIMAPTransportBufferSizesMaxOutstandingFetchResponsesId = 0x80000112, williamr@2: williamr@2: // Offset between entries williamr@2: EIMAPTransportBufferSizesOffset = 0x20 williamr@2: }; williamr@2: williamr@2: enum TSMTPServiceSettingsCenRepId williamr@2: { williamr@2: ESMTPServiceId = 0x00000000, williamr@2: ESMTPAccountNameId = 0x00000001, williamr@2: ESMTPSettingsVersionId = 0x00000002, williamr@2: ESMTPServerAddressId = 0x00000003, williamr@2: ESMTPPortNumberId = 0x00000004, williamr@2: ESMTPFlagsId = 0x00000005, williamr@2: ESMTPEmailAliasId = 0x00000006, williamr@2: ESMTPEmailAddressId = 0x00000007, williamr@2: ESMTPReplyToAddressId = 0x00000008, williamr@2: ESMTPReceiptAddressId = 0x00000009, williamr@2: ESMTPBodyEncodingId = 0x0000000A, williamr@2: ESMTPDefaultMsgCharSetId = 0x0000000B, williamr@2: ESMTPSendCopyToSelfId = 0x0000000C, williamr@2: ESMTPSendMessageOptionId = 0x0000000D, williamr@2: ESMTPLoginNameId = 0x0000000E, williamr@2: ESMTPPasswordId = 0x0000000F, williamr@2: ESMTPRelatedServiceId = 0x00000010, williamr@2: ESMTPIncludeToCcId = 0x00000011, williamr@2: ESMTPReadOnlyAccountId = 0x00000012, williamr@2: ESMTPParentAccountId = 0x00000013, williamr@2: ESMTPTlsSslDomainId = 0x00000014, williamr@2: ESMTPLinkedAccountId = 0x00000015 williamr@2: }; williamr@2: williamr@2: enum TSMTPLinkedMobilityAccountListCenRepInfo williamr@2: { williamr@2: ESMTPLinkedMobilityAccountListVersionId = 0x00015000, williamr@2: ESMTPLinkedMobilityAccountListNumEntriesId = 0x00015001, williamr@2: ESMTPLinkedMobilityAccountListEntryId = 0x00015010, williamr@2: williamr@2: // Maximum number of list entries williamr@2: ESMTPLinkedMobilityAccountListMaxEntries = 2048 williamr@2: }; williamr@2: williamr@2: enum TSMTPMobilityAccountListCenRepInfo williamr@2: { williamr@2: ESMTPMobilityAccountListVersionId = 0x00016000, williamr@2: ESMTPMobilityAccountListNumEntriesId = 0x00016001, williamr@2: williamr@2: ESMTPMobilityAccountListAccountId = 0x00016010, williamr@2: ESMTPMobilityAccountListNumIapsId = 0x00016011, williamr@2: ESMTPMobilityAccountListIapId = 0x00016020, williamr@2: williamr@2: // Offset between entries williamr@2: ESMTPMobilityAccountListOffset = 0x40, williamr@2: williamr@2: // Maximum number of list entries williamr@2: ESMTPMobilityAccountMaxEntries = 32 williamr@2: }; williamr@2: williamr@2: private: williamr@2: CMsvSession* iMsvSession; williamr@2: CRepository* iPOPRepository; williamr@2: CRepository* iSMTPRepository; williamr@2: CRepository* iIMAPRepository; williamr@2: }; williamr@2: williamr@2: #endif // __CEMAILACCOUNTS_H__