ipsservices/ipssossettings/inc/ipssetdatamanager.h
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssossettings/inc/ipssetdatamanager.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,295 @@
+/*
+* Copyright (c) 2007 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 IPSSETDATAMANAGER_H
+#define IPSSETDATAMANAGER_H
+
+
+typedef RArray<TImapAccount> RIpsSetDataImap4IdArray;
+typedef RArray<TPopAccount> RIpsSetDataPop3IdArray;
+typedef RArray<TSmtpAccount> RIpsSetDataSmtpIdArray;
+
+class CIpsSetData;
+class CIpsSetDataStorer;
+class CEmailAccounts;
+class CMsvSession;
+class CIMAMailboxDoctor;
+
+// Maximum length of IMEI code
+const TInt KIMAMaxPhoneIdLength = 50;
+
+/**
+ * This class encapsulates saving and removing email accounts.
+ *
+ * @since FS v1.0
+ * @lib IpsSosSettings.lib
+ */
+class CIpsSetDataManager : public CBase
+    {
+public:
+
+    /**
+     * 2 phase construction.
+     *
+     * @param aSession Message server session.
+     * @return self pointer
+     */
+    static CIpsSetDataManager* NewL(
+        CMsvSession& aSession );
+
+    /**
+     * 2 phase construction with stack push.
+     *
+     * @param CMsvSession Message server session.
+     * @return self pointer
+     */
+    static CIpsSetDataManager* NewLC(
+        CMsvSession& aSession );
+
+    /**
+     * Destructor
+     */
+    virtual ~CIpsSetDataManager();
+
+public:
+
+    /**
+     * Creates email service and account.
+     *
+     * @param aSettings Settings data object.
+     * @param aPopulateDefaults Sets default data.
+     */
+    TInt CreateEmailAccount(
+        CIpsSetData& aSettings,
+        const TBool aPopulateDefaults = EFalse );
+
+    /**
+     * Saves email settings
+     *
+     * @param aSettings Settings data object.
+     * @return KErrNone, when savng is ok.
+     */
+    TInt SaveEmailSettingsL(
+        CIpsSetData& aSettings );
+
+    /**
+     * Loads email settings.
+     *
+     * @param aEntry Mailbox entry.
+     * @param aSettings Settings data object.
+     */
+    void LoadEmailSettingsL(
+        const TMsvEntry& aEntry,
+        CIpsSetData& aSettings );
+
+    /**
+     * Removes whole mailbox account.
+     *
+     * @param aRelatedAccountId Receiving account ID.
+     * @param aMtmId Service protocol.
+     */
+    void RemoveAccountL(
+        const TMsvEntry& aMailbox );
+
+    /**
+     * Removes settings from the account.
+     *
+     * @param aAccountId Account ID.
+     * @param aMtmId Service protocol.
+     */
+    /*TInt DeleteAccountSettings(
+        const TUint32 aAccountId,
+        const TUid& aMtmId );*/
+
+private:
+
+    /**
+     * C++ constructor
+     *
+     * @param aSession Message server session.
+     */
+    CIpsSetDataManager( CMsvSession& aSession );
+
+    /**
+     * 2nd phase of construction.
+     */
+    void ConstructL();
+
+private:
+
+    /**
+     * Creates mailbox service and account.
+     *
+     * @param aSettings Settings data object.
+     * @param aPopulateDefaults Populates default settings.
+     */
+    void DoCreateEmailAccountL(
+        CIpsSetData& aSettings,
+        const TBool aPopulateDefaults );
+
+
+    /**
+     * Stores signature to stream.
+     *
+     * @param aSettings Settings data object.
+     */
+    void StoreSignatureL( const CIpsSetData& aSettings );
+
+    /**
+     * Retrieves signature from stream.
+     *
+     * @param aSettings Settings data object.
+     */
+    void RestoreSignatureL( CIpsSetData& aSettings );
+
+    /**
+     * Create Imap4 service and account.
+     *
+     * @param aSettings Settings data object.
+     * @param aPopulateDefaults Populates default settings.
+     * @param aReadOnly The service is created as read only.
+     */
+    TUint32 CreateImap4AccountL(
+        CIpsSetData& aSettings,
+        const TBool aPopulateDefaults,
+        const TBool aReadOnly = EFalse );
+
+    /**
+     * Create Pop3 service and account.
+     *
+     * @param aSettings Settings data object.
+     * @param aPopulateDefaults Populates default settings.
+     * @param aReadOnly The service is created as read only.
+     */
+    TUint32 CreatePop3AccountL(
+        CIpsSetData& aSettings,
+        const TBool aPopulateDefaults,
+        const TBool aReadOnly = EFalse );
+
+    /**
+     * Create extended settings.
+     *
+     * @param aMailboxId Mailbox's service Id.
+     * @param aAccountId Account Id.
+     * @param aProtocol Service protocol.
+     * @param aSettings Settings data object.
+     * @param aPopulateDefaults Populates default settings.
+     */
+    void CreateExtendedSettingsL(
+        const TMsvId aMailboxId,
+        const TUint32 aAccountId,
+        const TUid& aProtocol,
+        CIpsSetData& aSettings,
+        const TBool aPopulateDefaults = EFalse );
+
+    /**
+     * imei code saving function
+     *
+     */
+    TInt StoreIMEIToMailbox(
+        const TMsvId aMailboxId ) const;
+
+    /**
+     * imei code saving function
+     *
+     */
+    TInt StoreIMEIToEntry( const TMsvId aMailboxId ) const;
+
+    /**
+     * imei code saving function
+     *
+     */        
+    void GetAndStoreIMEIToEntryL( const TMsvId aMailboxId ) const;
+
+    /**
+     * Loads Pop3 settings.
+     *
+     * @param aSettings Settings data object.
+     */
+    void LoadPop3SettingsL( CIpsSetData& aSettings );
+
+    /**
+     * Loads Imap4 settings.
+     *
+     * @param aSettings Settings data object.
+     */
+    void LoadImap4SettingsL( CIpsSetData& aSettings );
+
+    /**
+     * Saves Pop3 settings.
+     *
+     * @param aSettings Settings data object.
+     */
+    void SavePop3SettingsL( CIpsSetData& aSettings );
+
+    /**
+     * Saves Imap4 settings.
+     *
+     * @param aSettings Settings data object.
+     */
+    void SaveImap4SettingsL( CIpsSetData& aSettings );
+
+    /**
+     * Used to send event to email plugin
+     * that settings have been changed
+     */
+    TInt SendPropertyEventL( TInt aMailbox, TBool aIsImap );
+    
+    /**
+     * Cleans all global folders (drafts, outbox, sent) out of entries that
+     * belong to the given mailbox
+     * @param aMailbox mailbox that is being deleted
+     */
+    void CleanGlobalFoldersL( const TMsvEntry& aMailbox );
+    
+    /**
+     * Cleans one folder (drafts, outbox, sent) out of entries that
+     * belong to the given mailbox
+     * @param aFolderId standard/global folder id
+     * @param aMailbox mailbox that is being deleted
+     */
+    void CleanGlobalFolderL( const TMsvId& aFolderId, const TMsvEntry& aMailbox );
+
+    TBool VerifyMailboxCreation( const CIpsSetData&  aSettings );
+    
+    void CleanInvalidMailbox( const CIpsSetData&  aSettings );
+    
+    void SetRelatedIdL( TMsvId aEntryId, TMsvId aRelatedId );
+
+private:
+
+    /**
+     * Message Server Session
+     */
+    CMsvSession&                iSession;
+
+    /**
+     * An object to handle the storing of the settings
+     * Owned.
+     */
+    CIpsSetDataStorer*         iStorer;
+
+    /**
+     * An object to handle account creation
+     * Owned.
+     */
+    CEmailAccounts*             iAccounts;
+    };
+
+#endif // IPSSETDATAMANAGER_H
+
+// End of File