email/imum/Utils/Inc/ImumMboxManager.h
branchRCL_3
changeset 27 7fdbb852d323
parent 0 72b543305e3a
equal deleted inserted replaced
26:ebe688cedc25 27:7fdbb852d323
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *       Encapsulates saving and removing email accounts
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 #ifndef __IMUMMAILACCOUNTMANAGER_H__
       
    21 #define __IMUMMAILACCOUNTMANAGER_H__
       
    22 
       
    23 // INCLUDES
       
    24 #include <e32base.h>
       
    25 #include <msvapi.h>                 // CMsvSession
       
    26 #include <msvstd.h>
       
    27 #include "ImumMboxDataExtension.h"
       
    28 #include "ImumMboxSettingsCtrl.h"
       
    29 #include <iapprefs.h>
       
    30 #include <cemailaccounts.h>         // CEmailAccounts
       
    31 #include <ImumInHealthServices.h>
       
    32 
       
    33 // CONSTANTS
       
    34 // MACROS
       
    35 // DATA TYPES
       
    36 typedef RArray<TImapAccount> RIMASImap4IdArray;
       
    37 typedef RArray<TPopAccount> RIMASPop3IdArray;
       
    38 typedef RArray<TSmtpAccount> RIMASSmtpIdArray;
       
    39 
       
    40 // FUNCTION PROTOTYPES
       
    41 // FORWARD DECLARATIONS
       
    42 class CImumMboxData;
       
    43 class CEmailAccounts;
       
    44 class CMsvSession;
       
    45 class CImumInHealthServicesImpl;
       
    46 class CImumInternalApiImpl;
       
    47 class CImumInSettingsData;
       
    48 
       
    49 /**
       
    50 * This class encapsulates saving and removing email accounts.
       
    51 *
       
    52 */
       
    53 class CImumMboxManager : public CBase
       
    54     {
       
    55     public: // Constructors and Destructor
       
    56 
       
    57         /**
       
    58         * NewL
       
    59         * @since S60 3.0
       
    60         * @param aSession, session reference
       
    61         * @return self pointer
       
    62         */
       
    63         static CImumMboxManager* NewL(
       
    64             CImumInternalApiImpl& aMailboxApi );
       
    65 
       
    66         /**
       
    67         * NewLC
       
    68         * @since S60 3.0
       
    69         * @param CMsvSession&, session reference
       
    70         * @return self pointer
       
    71         */
       
    72         static CImumMboxManager* NewLC(
       
    73             CImumInternalApiImpl& aMailboxApi );
       
    74 
       
    75         /**
       
    76         * Destructor
       
    77         * @since S60 3.0
       
    78         * Destructor
       
    79         */
       
    80         virtual ~CImumMboxManager();
       
    81 
       
    82     public: // New static functions
       
    83 
       
    84         // UTILITIES
       
    85 
       
    86         /**
       
    87         *
       
    88         * @since S60 3.0
       
    89         */
       
    90         static TInt GetIapPreferencesL(
       
    91             const TMsvId aMailboxId,
       
    92             CEmailAccounts& aAccounts,
       
    93             CImIAPPreferences& aIapPrefs,
       
    94             CImumInternalApiImpl& aMailboxApi,
       
    95             const TBool aSmtp );
       
    96 
       
    97         /**
       
    98         *
       
    99         * @since S60 3.0
       
   100         */
       
   101         static TInt SetIapPreferencesL(
       
   102             const TMsvId aMailboxId,
       
   103             CEmailAccounts& aAccounts,
       
   104             const CImIAPPreferences& aIapPrefs,
       
   105             CImumInternalApiImpl& aMailboxApi,
       
   106             const TBool aSmtp );
       
   107 
       
   108         /**
       
   109         *
       
   110         * @since S60 3.0
       
   111         */
       
   112         static void ForceAlwaysAskL(
       
   113             const TMsvId aMailboxId,
       
   114             CEmailAccounts& aAccounts,
       
   115             CImIAPPreferences& aIapPrefs,
       
   116             CImumInternalApiImpl& aMailboxApi,
       
   117             const TBool aSmtp );
       
   118 
       
   119     public: // New functions
       
   120 
       
   121         // ACCOUNT CREATION
       
   122 
       
   123         /**
       
   124          * 
       
   125          *
       
   126          * @since S60 v3.2
       
   127          * @param   
       
   128          */
       
   129         TMsvId CreateEmailAccountL( 
       
   130             const CImumInSettingsData& aSettingsData );
       
   131 
       
   132         /**
       
   133         *
       
   134         * @since S60 3.0
       
   135         * @return
       
   136         */
       
   137         void CreateEmailAccount(
       
   138             CImumMboxData& aSettings,
       
   139             const TBool aPopulateDefaults = EFalse );
       
   140 
       
   141         // ACCOUNT SAVING
       
   142 
       
   143         /**
       
   144          * 
       
   145          *
       
   146          * @since S60 v3.2
       
   147          * @param 
       
   148          */
       
   149         void SaveEmailSettingsL( 
       
   150             const CImumInSettingsData& aSettingsData );
       
   151             
       
   152         /**
       
   153         *
       
   154         * @since S60 3.0
       
   155         * @return
       
   156         */
       
   157         TInt SaveEmailSettingsL(
       
   158             CImumMboxData& aSettings );
       
   159 
       
   160         // ACCOUNT LOADING
       
   161 
       
   162         /**
       
   163          * 
       
   164          *
       
   165          * @since S60 v3.2
       
   166          * @param 
       
   167          * @return 
       
   168          * @leave &(leavedesc)s
       
   169          */
       
   170         CImumInSettingsData* LoadEmailSettingsL( 
       
   171             const TMsvId aMailboxId );
       
   172             
       
   173         /**
       
   174         *
       
   175         * @since S60 3.0
       
   176         */
       
   177         void LoadEmailSettingsL(
       
   178             const TMsvEntry& aEntry,
       
   179             CImumMboxData& aSettings );
       
   180 
       
   181         // ACCOUNT DELETING
       
   182 
       
   183         /**
       
   184         *
       
   185         * @since S60 3.0
       
   186         */
       
   187         void DeleteRelatedSmtpAccountsL(
       
   188             const CImumMboxData& aSettings );
       
   189 
       
   190         /**
       
   191         *
       
   192         * @since S60 3.0
       
   193         */
       
   194         void DeleteRelatedSmtpAccountsL(
       
   195             const TUint32 aRelatedAccountId,
       
   196             const TBool aIsImap4 );
       
   197 
       
   198         /**
       
   199         *
       
   200         * @since S60 3.0
       
   201         */
       
   202         void DeleteSmtpAccountsL(
       
   203             const TMsvId aRelatedMailboxId,
       
   204             const RIMASSmtpIdArray& aSmtpAccountArray );
       
   205 
       
   206         /**
       
   207         *
       
   208         * @since S60 3.0
       
   209         */
       
   210         void RemoveAccountL(
       
   211             const TMsvEntry& aMailboxEntry, TBool aSilent=EFalse );
       
   212 
       
   213         /**
       
   214         *
       
   215         * @since S60 3.0
       
   216         */
       
   217         void RemoveAccountL(
       
   218             const CImumMboxData& aSettings );
       
   219             
       
   220         /**
       
   221         *
       
   222         * @since S60 3.0
       
   223         */
       
   224         void RemoveAccountL(
       
   225             const TUint32 aRelatedAccountId,
       
   226             const TUid& aMtmId );
       
   227 
       
   228         /**
       
   229          * Removes the mailbox account
       
   230          *
       
   231          * @since S60 v3.2
       
   232          * @param aMailboxId
       
   233          */
       
   234         void RemoveAccount( const TMsvId aMailboxId, TBool aSilent=EFalse );
       
   235 
       
   236         /**
       
   237         *
       
   238         * @since S60 3.0
       
   239         */
       
   240         TInt DeleteAccountSettings(
       
   241             const TUint32 aAccountId,
       
   242             const TUid& aMtmId );
       
   243 
       
   244         /**
       
   245         *
       
   246         * @since S60 3.2
       
   247         */
       
   248         TBool CheckAccountDeletionConditionsL( const TMsvId aMailboxId );
       
   249         
       
   250     private: // Constructors
       
   251 
       
   252         /**
       
   253         * CImumMboxManager
       
   254         * @since S60 3.0
       
   255         * C++ constructor
       
   256         */
       
   257         CImumMboxManager(
       
   258             CImumInternalApiImpl& aMailboxApi );
       
   259 
       
   260         /**
       
   261         * ConstructL
       
   262         * @since S60 3.0
       
   263         * Symbian OS constructor
       
   264         */
       
   265         void ConstructL();
       
   266 
       
   267     private: // New functions
       
   268 
       
   269         /**
       
   270         *
       
   271         * @since S60 3.0
       
   272         * @return
       
   273         */
       
   274         void CreateEmailAccountL(
       
   275             CImumMboxData& aSettings,
       
   276             const TBool aPopulateDefaults );
       
   277 
       
   278         // MANAGER TOOLS
       
   279 
       
   280         /**
       
   281         *
       
   282         * @since S60 3.0
       
   283         */
       
   284         void LoadAccountFillIapL(
       
   285             CImumMboxData& aSettings );
       
   286 
       
   287         /**
       
   288         *
       
   289         * @since S60 3.0
       
   290         */
       
   291         void CreateAccountFillIapL(
       
   292             CImumMboxData& aSettings );
       
   293 
       
   294         /**
       
   295         *
       
   296         * @since S60 3.0
       
   297         */
       
   298         void StoreSignatureL(
       
   299             const CImumMboxData& aSettings );
       
   300 
       
   301         /**
       
   302         *
       
   303         * @since S60 3.0
       
   304         */
       
   305         void RestoreSignatureL(
       
   306             CImumMboxData& aSettings );
       
   307 
       
   308         /**
       
   309         *
       
   310         * @since S60 3.0
       
   311         */
       
   312         void StoreAccountIdToEntryL(
       
   313             const TMsvId aMailboxId,
       
   314             const TUint32 aAccountId );
       
   315 
       
   316         /**
       
   317         *
       
   318         * @since Series60 3.0
       
   319         */
       
   320         void StoreAccountIdToEntryL( 
       
   321             CImumMboxData& aSettings );
       
   322 
       
   323         /**
       
   324         *
       
   325         * @since S60 3.0
       
   326         */
       
   327         void GetMailboxAccountIdsL(
       
   328             const TMsvId aMailboxId,
       
   329             TMsvId& aReceivingMailboxId,
       
   330             TUint32& aReceivingAccountId,
       
   331             TMsvId& aSendingMailboxId,
       
   332             TUint32& aSendingAccountId );
       
   333 
       
   334         // ACCOUNT CREATION
       
   335 
       
   336         /**
       
   337         *
       
   338         * @since S60 3.0
       
   339         */
       
   340         TUint32 CreateImap4AccountL(
       
   341             CImumMboxData& aSettings,
       
   342             const TBool aPopulateDefaults,
       
   343             const TBool aReadOnly = EFalse );
       
   344 
       
   345         /**
       
   346         *
       
   347         * @since S60 3.0
       
   348         */
       
   349         TUint32 CreatePop3AccountL(
       
   350             CImumMboxData& aSettings,
       
   351             const TBool aPopulateDefaults,
       
   352             const TBool aReadOnly = EFalse );
       
   353 
       
   354         /**
       
   355         *
       
   356         * @since S60 3.0
       
   357         */
       
   358         void CreateExtendedSettingsL(
       
   359             const TMsvId aMailboxId,
       
   360             const TUint32 aAccountId,
       
   361             const TUid& aProtocol,
       
   362             CImumMboxData& aSettings,
       
   363             const TBool aPopulateDefaults = ETrue );
       
   364 
       
   365         /**
       
   366         *
       
   367         * @since S60 3.0
       
   368         */
       
   369         void DetermineDefaultAccountL(
       
   370             CImumMboxData& aSettings );
       
   371 
       
   372         // ACCOUNT DELETION
       
   373 
       
   374         /**
       
   375         *
       
   376         * @since S60 3.0
       
   377         */
       
   378         TInt DeleteExtendedSettings(
       
   379             const TIMAStorerParams& aParams );
       
   380 
       
   381         /**
       
   382         *
       
   383         * @since S60 3.0
       
   384         */
       
   385         void DeleteBaseSettingsL(
       
   386             const TUint32 aRelatedAccountId,
       
   387             const TBool aIsImap4 );
       
   388 
       
   389         /**
       
   390         *
       
   391         * @since S60 3.0
       
   392         */
       
   393         void DeleteBaseSettingsL(
       
   394             const CImumMboxData& aSettings );
       
   395 
       
   396         // ACCOUNT LOADING
       
   397 
       
   398         /**
       
   399         *
       
   400         * @since S60 3.0
       
   401         */
       
   402         void LoadPop3SettingsL(
       
   403             CImumMboxData& aSettings );
       
   404 
       
   405         /**
       
   406         *
       
   407         * @since S60 3.0
       
   408         */
       
   409         void LoadImap4SettingsL(
       
   410              CImumMboxData& aSettings );
       
   411 
       
   412         // ACCOUNT SAVING
       
   413 
       
   414         /**
       
   415         *
       
   416         * @since S60 3.0
       
   417         */
       
   418         void SavePop3SettingsL(
       
   419             CImumMboxData& aSettings );
       
   420 
       
   421         /**
       
   422         *
       
   423         * @since S60 3.0
       
   424         */
       
   425         void SaveImap4SettingsL(
       
   426             CImumMboxData& aSettings );
       
   427 
       
   428         /**
       
   429          * 
       
   430          *
       
   431          * @since S60 v3.2
       
   432          * @param 
       
   433          * @return 
       
   434          * @leave &(leavedesc)s
       
   435          */
       
   436         TBool IsConnectedL( const TMsvId aMailboxId ) const;
       
   437 
       
   438         /**
       
   439          * 
       
   440          *
       
   441          * @since S60 v3.2
       
   442          * @param 
       
   443          * @return 
       
   444          * @leave &(leavedesc)s
       
   445          */
       
   446         TBool IsLockedL( const TMsvId aMailboxId ) const;
       
   447 
       
   448         /**
       
   449          * 
       
   450          *
       
   451          * @since S60 v3.2
       
   452          */
       
   453          TBool HandleMailboxInUseDeleteL(
       
   454             MImumInHealthServices::RMailboxIdArray& aMailboxes,
       
   455             const TMsvEntry& aSmtpEntry ) const;
       
   456      
       
   457         /**
       
   458          * 
       
   459          *
       
   460          * @since S60 v3.2
       
   461          * @param
       
   462          * @return
       
   463          * @leave &(leavedesc)s
       
   464          */
       
   465         TBool AccountDeletionConditionsOkL( const TMsvId aMailboxId );
       
   466         
       
   467     private: // Data
       
   468 
       
   469         // Message Server Session
       
   470         CImumInternalApiImpl&           iMailboxApi;
       
   471         // An object to handle the storing of the settings
       
   472         CImumMboxSettingsCtrl*         iMboxSettingsCtrl;
       
   473         // An object to handle account creation
       
   474         CEmailAccounts*                 iAccounts;
       
   475         // An object to clean up the storage from trash
       
   476         CImumInHealthServicesImpl*          iCleaner;
       
   477     };
       
   478 
       
   479 #endif // __IMUMMAILACCOUNTMANAGER_H__