--- /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 <e32base.h>
+#include <msvapi.h> // CMsvSession
+#include <msvstd.h>
+#include "ImumMboxDataExtension.h"
+#include "ImumMboxSettingsCtrl.h"
+#include <iapprefs.h>
+#include <cemailaccounts.h> // CEmailAccounts
+#include <ImumInHealthServices.h>
+
+// CONSTANTS
+// MACROS
+// DATA TYPES
+typedef RArray<TImapAccount> RIMASImap4IdArray;
+typedef RArray<TPopAccount> RIMASPop3IdArray;
+typedef RArray<TSmtpAccount> 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__