diff -r 000000000000 -r 72b543305e3a email/imum/Utils/Inc/ImumMboxManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Inc/ImumMboxManager.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,479 @@ +/* +* 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: +* Encapsulates saving and removing email accounts +* +*/ + + +#ifndef __IMUMMAILACCOUNTMANAGER_H__ +#define __IMUMMAILACCOUNTMANAGER_H__ + +// INCLUDES +#include +#include // CMsvSession +#include +#include "ImumMboxDataExtension.h" +#include "ImumMboxSettingsCtrl.h" +#include +#include // CEmailAccounts +#include + +// CONSTANTS +// MACROS +// DATA TYPES +typedef RArray RIMASImap4IdArray; +typedef RArray RIMASPop3IdArray; +typedef RArray RIMASSmtpIdArray; + +// FUNCTION PROTOTYPES +// FORWARD DECLARATIONS +class CImumMboxData; +class CEmailAccounts; +class CMsvSession; +class CImumInHealthServicesImpl; +class CImumInternalApiImpl; +class CImumInSettingsData; + +/** +* This class encapsulates saving and removing email accounts. +* +*/ +class CImumMboxManager : public CBase + { + public: // Constructors and Destructor + + /** + * NewL + * @since S60 3.0 + * @param aSession, session reference + * @return self pointer + */ + static CImumMboxManager* NewL( + CImumInternalApiImpl& aMailboxApi ); + + /** + * NewLC + * @since S60 3.0 + * @param CMsvSession&, session reference + * @return self pointer + */ + static CImumMboxManager* NewLC( + CImumInternalApiImpl& aMailboxApi ); + + /** + * Destructor + * @since S60 3.0 + * Destructor + */ + virtual ~CImumMboxManager(); + + public: // New static functions + + // UTILITIES + + /** + * + * @since S60 3.0 + */ + static TInt GetIapPreferencesL( + const TMsvId aMailboxId, + CEmailAccounts& aAccounts, + CImIAPPreferences& aIapPrefs, + CImumInternalApiImpl& aMailboxApi, + const TBool aSmtp ); + + /** + * + * @since S60 3.0 + */ + static TInt SetIapPreferencesL( + const TMsvId aMailboxId, + CEmailAccounts& aAccounts, + const CImIAPPreferences& aIapPrefs, + CImumInternalApiImpl& aMailboxApi, + const TBool aSmtp ); + + /** + * + * @since S60 3.0 + */ + static void ForceAlwaysAskL( + const TMsvId aMailboxId, + CEmailAccounts& aAccounts, + CImIAPPreferences& aIapPrefs, + CImumInternalApiImpl& aMailboxApi, + const TBool aSmtp ); + + public: // New functions + + // ACCOUNT CREATION + + /** + * + * + * @since S60 v3.2 + * @param + */ + TMsvId CreateEmailAccountL( + const CImumInSettingsData& aSettingsData ); + + /** + * + * @since S60 3.0 + * @return + */ + void CreateEmailAccount( + CImumMboxData& aSettings, + const TBool aPopulateDefaults = EFalse ); + + // ACCOUNT SAVING + + /** + * + * + * @since S60 v3.2 + * @param + */ + void SaveEmailSettingsL( + const CImumInSettingsData& aSettingsData ); + + /** + * + * @since S60 3.0 + * @return + */ + TInt SaveEmailSettingsL( + CImumMboxData& aSettings ); + + // ACCOUNT LOADING + + /** + * + * + * @since S60 v3.2 + * @param + * @return + * @leave &(leavedesc)s + */ + CImumInSettingsData* LoadEmailSettingsL( + const TMsvId aMailboxId ); + + /** + * + * @since S60 3.0 + */ + void LoadEmailSettingsL( + const TMsvEntry& aEntry, + CImumMboxData& aSettings ); + + // ACCOUNT DELETING + + /** + * + * @since S60 3.0 + */ + void DeleteRelatedSmtpAccountsL( + const CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void DeleteRelatedSmtpAccountsL( + const TUint32 aRelatedAccountId, + const TBool aIsImap4 ); + + /** + * + * @since S60 3.0 + */ + void DeleteSmtpAccountsL( + const TMsvId aRelatedMailboxId, + const RIMASSmtpIdArray& aSmtpAccountArray ); + + /** + * + * @since S60 3.0 + */ + void RemoveAccountL( + const TMsvEntry& aMailboxEntry, TBool aSilent=EFalse ); + + /** + * + * @since S60 3.0 + */ + void RemoveAccountL( + const CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void RemoveAccountL( + const TUint32 aRelatedAccountId, + const TUid& aMtmId ); + + /** + * Removes the mailbox account + * + * @since S60 v3.2 + * @param aMailboxId + */ + void RemoveAccount( const TMsvId aMailboxId, TBool aSilent=EFalse ); + + /** + * + * @since S60 3.0 + */ + TInt DeleteAccountSettings( + const TUint32 aAccountId, + const TUid& aMtmId ); + + /** + * + * @since S60 3.2 + */ + TBool CheckAccountDeletionConditionsL( const TMsvId aMailboxId ); + + private: // Constructors + + /** + * CImumMboxManager + * @since S60 3.0 + * C++ constructor + */ + CImumMboxManager( + CImumInternalApiImpl& aMailboxApi ); + + /** + * ConstructL + * @since S60 3.0 + * Symbian OS constructor + */ + void ConstructL(); + + private: // New functions + + /** + * + * @since S60 3.0 + * @return + */ + void CreateEmailAccountL( + CImumMboxData& aSettings, + const TBool aPopulateDefaults ); + + // MANAGER TOOLS + + /** + * + * @since S60 3.0 + */ + void LoadAccountFillIapL( + CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void CreateAccountFillIapL( + CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void StoreSignatureL( + const CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void RestoreSignatureL( + CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void StoreAccountIdToEntryL( + const TMsvId aMailboxId, + const TUint32 aAccountId ); + + /** + * + * @since Series60 3.0 + */ + void StoreAccountIdToEntryL( + CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void GetMailboxAccountIdsL( + const TMsvId aMailboxId, + TMsvId& aReceivingMailboxId, + TUint32& aReceivingAccountId, + TMsvId& aSendingMailboxId, + TUint32& aSendingAccountId ); + + // ACCOUNT CREATION + + /** + * + * @since S60 3.0 + */ + TUint32 CreateImap4AccountL( + CImumMboxData& aSettings, + const TBool aPopulateDefaults, + const TBool aReadOnly = EFalse ); + + /** + * + * @since S60 3.0 + */ + TUint32 CreatePop3AccountL( + CImumMboxData& aSettings, + const TBool aPopulateDefaults, + const TBool aReadOnly = EFalse ); + + /** + * + * @since S60 3.0 + */ + void CreateExtendedSettingsL( + const TMsvId aMailboxId, + const TUint32 aAccountId, + const TUid& aProtocol, + CImumMboxData& aSettings, + const TBool aPopulateDefaults = ETrue ); + + /** + * + * @since S60 3.0 + */ + void DetermineDefaultAccountL( + CImumMboxData& aSettings ); + + // ACCOUNT DELETION + + /** + * + * @since S60 3.0 + */ + TInt DeleteExtendedSettings( + const TIMAStorerParams& aParams ); + + /** + * + * @since S60 3.0 + */ + void DeleteBaseSettingsL( + const TUint32 aRelatedAccountId, + const TBool aIsImap4 ); + + /** + * + * @since S60 3.0 + */ + void DeleteBaseSettingsL( + const CImumMboxData& aSettings ); + + // ACCOUNT LOADING + + /** + * + * @since S60 3.0 + */ + void LoadPop3SettingsL( + CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void LoadImap4SettingsL( + CImumMboxData& aSettings ); + + // ACCOUNT SAVING + + /** + * + * @since S60 3.0 + */ + void SavePop3SettingsL( + CImumMboxData& aSettings ); + + /** + * + * @since S60 3.0 + */ + void SaveImap4SettingsL( + CImumMboxData& aSettings ); + + /** + * + * + * @since S60 v3.2 + * @param + * @return + * @leave &(leavedesc)s + */ + TBool IsConnectedL( const TMsvId aMailboxId ) const; + + /** + * + * + * @since S60 v3.2 + * @param + * @return + * @leave &(leavedesc)s + */ + TBool IsLockedL( const TMsvId aMailboxId ) const; + + /** + * + * + * @since S60 v3.2 + */ + TBool HandleMailboxInUseDeleteL( + MImumInHealthServices::RMailboxIdArray& aMailboxes, + const TMsvEntry& aSmtpEntry ) const; + + /** + * + * + * @since S60 v3.2 + * @param + * @return + * @leave &(leavedesc)s + */ + TBool AccountDeletionConditionsOkL( const TMsvId aMailboxId ); + + private: // Data + + // Message Server Session + CImumInternalApiImpl& iMailboxApi; + // An object to handle the storing of the settings + CImumMboxSettingsCtrl* iMboxSettingsCtrl; + // An object to handle account creation + CEmailAccounts* iAccounts; + // An object to clean up the storage from trash + CImumInHealthServicesImpl* iCleaner; + }; + +#endif // __IMUMMAILACCOUNTMANAGER_H__