epoc32/include/app/cemailaccounts.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __CEMAILACCOUNTS_H__
williamr@2
    17
#define __CEMAILACCOUNTS_H__
williamr@2
    18
williamr@2
    19
williamr@2
    20
#include <e32std.h>
williamr@2
    21
#include <e32base.h>
williamr@2
    22
#include <msvapi.h>
williamr@2
    23
williamr@2
    24
williamr@2
    25
class CImIAPPreferences;
williamr@2
    26
class CImPop3Settings;
williamr@2
    27
class CImImap4Settings;
williamr@2
    28
class CImSmtpSettings;
williamr@2
    29
class CRepository;
williamr@2
    30
class CImapSyncDownloadRules;
williamr@2
    31
class CImapTransportBufferSizes;
williamr@2
    32
class CImSmtpMobilitySettings;
williamr@2
    33
williamr@2
    34
/**
williamr@2
    35
Maximum size of email account name
williamr@2
    36
williamr@2
    37
@publishedAll
williamr@2
    38
@released
williamr@2
    39
*/
williamr@2
    40
const TInt KEmailAccountNameSize = 256;
williamr@2
    41
williamr@2
    42
/**
williamr@2
    43
Maximum number of entries allowed in the IAP list for a SMTP mobility account
williamr@2
    44
williamr@2
    45
@publishedPartner
williamr@2
    46
@released
williamr@2
    47
*/
williamr@2
    48
const TInt KMaxSmtpMobilityAccountIAPListEntries = 32;
williamr@2
    49
williamr@2
    50
/**
williamr@2
    51
Identifier number for a POP email account.
williamr@2
    52
williamr@2
    53
@publishedAll
williamr@2
    54
@released
williamr@2
    55
@see TPopAccount
williamr@2
    56
*/
williamr@2
    57
typedef TInt TPopAccountId;
williamr@2
    58
williamr@2
    59
/**
williamr@2
    60
Identifier number for an IMAP email account.
williamr@2
    61
williamr@2
    62
@publishedAll
williamr@2
    63
@released
williamr@2
    64
@see TImapAccount
williamr@2
    65
*/
williamr@2
    66
typedef TInt TImapAccountId;
williamr@2
    67
williamr@2
    68
/**
williamr@2
    69
Identifier number for an SMTP email account.
williamr@2
    70
williamr@2
    71
@publishedAll
williamr@2
    72
@released
williamr@2
    73
@see TSmtpAccount
williamr@2
    74
*/
williamr@2
    75
typedef TInt TSmtpAccountId;
williamr@2
    76
williamr@2
    77
/**
williamr@2
    78
Identifier number for an SMTP moblity account.
williamr@2
    79
williamr@2
    80
@publishedPartner
williamr@2
    81
@released
williamr@2
    82
*/
williamr@2
    83
typedef TInt TSmtpMobilityAccountId;
williamr@2
    84
williamr@2
    85
/**
williamr@2
    86
Array of IAP values
williamr@2
    87
williamr@2
    88
@publishedPartner
williamr@2
    89
@released
williamr@2
    90
*/
williamr@2
    91
typedef RArray<TUint32> RArrayIAP;
williamr@2
    92
williamr@2
    93
/**
williamr@2
    94
Null or undefined SMTP account identifier
williamr@2
    95
williamr@2
    96
@publishedPartner
williamr@2
    97
@released
williamr@2
    98
*/
williamr@2
    99
const TSmtpAccountId KNullSmtpAccountId = 0;
williamr@2
   100
williamr@2
   101
/**
williamr@2
   102
POP account ID.
williamr@2
   103
williamr@2
   104
Objects of this type identify POP email accounts. 
williamr@2
   105
They are obtained when a POP account is created 
williamr@2
   106
(CEmailAccounts::CreatePopAccountL()), or by 
williamr@2
   107
querying for what POP accounts exist 
williamr@2
   108
(CEmailAccounts::GetPopAccountL() and CEmailAccounts::GetPopAccountsL()).
williamr@2
   109
williamr@2
   110
The object is then used as a handle to the account when getting
williamr@2
   111
the account settings, using CEmailAccounts::LoadPopSettingsL() and 
williamr@2
   112
CEmailAccounts::LoadPopIapSettingsL().
williamr@2
   113
williamr@2
   114
@publishedAll
williamr@2
   115
@released
williamr@2
   116
*/
williamr@2
   117
class TPopAccount
williamr@2
   118
	{
williamr@2
   119
public:
williamr@2
   120
	/** POP account identifier number. 
williamr@2
   121
	
williamr@2
   122
	Each POP account stored on the phone has a different
williamr@2
   123
	identifier number to distinguish it from other accounts.
williamr@2
   124
	*/
williamr@2
   125
	TPopAccountId iPopAccountId;
williamr@2
   126
williamr@2
   127
	/** POP account name. */
williamr@2
   128
	TBuf<KEmailAccountNameSize> iPopAccountName;
williamr@2
   129
williamr@2
   130
	/** Entry ID of the POP service for this account. */
williamr@2
   131
	TMsvId iPopService;
williamr@2
   132
williamr@2
   133
	/** Entry ID of the related SMTP service for this account. 
williamr@2
   134
		
williamr@2
   135
	This is set if an SMTP service has been created, using 
williamr@2
   136
	CEmailAccounts::CreateSmtpAccountL(), that specifies that 
williamr@2
   137
	it is related to this account. An SMTP service (which provides
williamr@2
   138
	email sending functionality) is used in conjunction with 
williamr@2
   139
	a POP or IMAP service (which provide email retrieval).
williamr@2
   140
	*/
williamr@2
   141
	TMsvId iSmtpService;
williamr@2
   142
	};
williamr@2
   143
williamr@2
   144
/**
williamr@2
   145
IMAP account ID.
williamr@2
   146
williamr@2
   147
Objects of this type identify IMAP email accounts. 
williamr@2
   148
They are obtained when a IMAP account is created 
williamr@2
   149
(CEmailAccounts::CreateImapAccountL()), or by 
williamr@2
   150
querying for what IMAP accounts exist 
williamr@2
   151
(CEmailAccounts::GetImapAccountL() and CEmailAccounts::GetImapAccountsL()).
williamr@2
   152
williamr@2
   153
The object is then used as a handle to the account when getting
williamr@2
   154
the account settings, using CEmailAccounts::LoadImapSettingsL() and 
williamr@2
   155
CEmailAccounts::LoadImapIapSettingsL().
williamr@2
   156
williamr@2
   157
@publishedAll
williamr@2
   158
@released
williamr@2
   159
*/
williamr@2
   160
class TImapAccount
williamr@2
   161
	{
williamr@2
   162
public:
williamr@2
   163
	/** IMAP account identifier number.
williamr@2
   164
	
williamr@2
   165
	Each IMAP account stored on the phone has a different
williamr@2
   166
	identifier number to distinguish it from other accounts.
williamr@2
   167
	*/
williamr@2
   168
	TImapAccountId iImapAccountId;
williamr@2
   169
williamr@2
   170
	/** IMAP account name */
williamr@2
   171
	TBuf<KEmailAccountNameSize> iImapAccountName;
williamr@2
   172
williamr@2
   173
	/** Entry ID of the IMAP service for this account. */
williamr@2
   174
	TMsvId iImapService;
williamr@2
   175
williamr@2
   176
	/** Entry ID of the related SMTP service for this account. 
williamr@2
   177
		
williamr@2
   178
	This is set if an SMTP service has been created, using 
williamr@2
   179
	CEmailAccounts::CreateSmtpAccountL(), that specifies that 
williamr@2
   180
	it is related to this account. An SMTP service (which provides
williamr@2
   181
	email sending functionality) is used in conjunction with 
williamr@2
   182
	a POP or IMAP service (which provide email retrieval).
williamr@2
   183
	*/
williamr@2
   184
	TMsvId iSmtpService;
williamr@2
   185
	};
williamr@2
   186
williamr@2
   187
/**
williamr@2
   188
SMTP account ID.
williamr@2
   189
williamr@2
   190
Objects of this type identify SMTP email accounts. 
williamr@2
   191
They are obtained when a SMTP account is created 
williamr@2
   192
(CEmailAccounts::CreateSmtpAccountL()), or by 
williamr@2
   193
querying for what SMTP accounts exist 
williamr@2
   194
(CEmailAccounts::GetSmtpAccountL() and CEmailAccounts::GetISmtpAccountsL()).
williamr@2
   195
williamr@2
   196
The object is then used as a handle to the account when getting
williamr@2
   197
the account settings, using CEmailAccounts::LoadSmtpSettingsL() and 
williamr@2
   198
CEmailAccounts::LoadSmtpIapSettingsL().
williamr@2
   199
williamr@2
   200
@publishedAll
williamr@2
   201
@released
williamr@2
   202
*/
williamr@2
   203
class TSmtpAccount
williamr@2
   204
	{
williamr@2
   205
public:
williamr@2
   206
	/** SMTP account identifier number. */
williamr@2
   207
	TSmtpAccountId iSmtpAccountId;
williamr@2
   208
williamr@2
   209
	/** SMTP account name */
williamr@2
   210
	TBuf<KEmailAccountNameSize> iSmtpAccountName;
williamr@2
   211
williamr@2
   212
	/** Entry ID of the SMTP service for this account. */
williamr@2
   213
	TMsvId iSmtpService;
williamr@2
   214
williamr@2
   215
	/** Entry ID of the related POP or IMAP service for this account. 
williamr@2
   216
		
williamr@2
   217
	An SMTP service (which provides	email sending functionality) is 
williamr@2
   218
	used in conjunction with a POP or IMAP service (which provide email retrieval).
williamr@2
   219
	*/
williamr@2
   220
	TMsvId iRelatedService;
williamr@2
   221
	};
williamr@2
   222
williamr@2
   223
/**
williamr@2
   224
@publishedPartner
williamr@2
   225
@released
williamr@2
   226
*/
williamr@2
   227
class TSmtpMobilityAccount
williamr@2
   228
	{
williamr@2
   229
public:
williamr@2
   230
	/** SMTP mobility account identifier */
williamr@2
   231
	TSmtpMobilityAccountId iAccountId;
williamr@2
   232
williamr@2
   233
	/** SMTP mobility account name */
williamr@2
   234
	TBuf<KEmailAccountNameSize> iName;
williamr@2
   235
williamr@2
   236
	/** Parent SMTP account identifier */
williamr@2
   237
	TSmtpAccountId iParentSmtpAccountId;
williamr@2
   238
williamr@2
   239
	/** Linked SMTP account identifier. Identifies the SMTP account whose
williamr@2
   240
	    settings will be used by this mobility account. If the mobility account
williamr@2
   241
	    is using its own settings, this will be set to KNullSmtpAccountId. */
williamr@2
   242
	TSmtpAccountId iLinkedSmtpAccountId;
williamr@2
   243
	};
williamr@2
   244
williamr@2
   245
/**
williamr@2
   246
Creates, loads, saves and deletes email (IMAP, POP, and SMTP) accounts. 
williamr@2
   247
williamr@2
   248
An account encapsulates:
williamr@2
   249
williamr@2
   250
- Settings for a messaging service. There is a different type of 
williamr@2
   251
  settings class for each of the email protocols (CImPop3Settings, 
williamr@2
   252
  CImImap4Settings, CImSmtpSettings).
williamr@2
   253
- IAP (Internet account) settings for accessing the service.
williamr@2
   254
williamr@2
   255
The class has a family of functions for each protocol to create, get,
williamr@2
   256
and delete accounts:
williamr@2
   257
williamr@2
   258
- Create\<protocol\>AccountL 
williamr@2
   259
- Get\<protocol\>AccountL 
williamr@2
   260
- Get\<protocol\>AccountsL 
williamr@2
   261
- Delete\<protocol\>AccountL 
williamr@2
   262
williamr@2
   263
where \<protocol\> is either POP, IMAP, or SMTP. 
williamr@2
   264
The Create and Get functions don't directly return settings 
williamr@2
   265
objects, but only account identifiers. 
williamr@2
   266
williamr@2
   267
Account identifiers are passed to the following functions 
williamr@2
   268
to save and load the service and IAP settings for that account:
williamr@2
   269
williamr@2
   270
- Load\<protocol\>SettingsL
williamr@2
   271
- Save\<protocol\>SettingsL 
williamr@2
   272
- Load\<protocol\>IapSettingsL 
williamr@2
   273
- Save\<protocol\>IapSettingsL 
williamr@2
   274
williamr@2
   275
For SMTP only, there is a concept of a default account (as a client
williamr@2
   276
program may want to send an email, and not care which account is used.)
williamr@2
   277
SetDefaultSmtpAccountL(), DefaultSmtpAccountL() and DeleteDefaultSmtpAccountL() 
williamr@2
   278
are used to handle this.
williamr@2
   279
williamr@2
   280
Note that an account is associated with a service entry in the message store,
williamr@2
   281
but account information itself is stored in the central repository.
williamr@2
   282
williamr@2
   283
@publishedAll
williamr@2
   284
@released
williamr@2
   285
*/
williamr@2
   286
class CEmailAccounts : public CBase, public MMsvSessionObserver
williamr@2
   287
	{
williamr@2
   288
public:
williamr@2
   289
williamr@2
   290
	IMPORT_C static CEmailAccounts* NewL();
williamr@2
   291
	IMPORT_C static CEmailAccounts* NewLC();
williamr@2
   292
	IMPORT_C virtual ~CEmailAccounts();
williamr@2
   293
williamr@2
   294
	IMPORT_C TPopAccount CreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings,
williamr@2
   295
		const CImIAPPreferences& aPopIAP, TBool aReadOnly);
williamr@2
   296
williamr@2
   297
	IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
williamr@2
   298
		const CImIAPPreferences& aImapIAP, TBool aReadOnly);
williamr@2
   299
williamr@2
   300
	IMPORT_C TSmtpAccount CreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings,
williamr@2
   301
		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
williamr@2
   302
williamr@2
   303
	IMPORT_C TSmtpAccount CreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings,
williamr@2
   304
		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
williamr@2
   305
williamr@2
   306
	IMPORT_C TSmtpAccount CreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, 
williamr@2
   307
		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
williamr@2
   308
williamr@2
   309
	IMPORT_C void GetPopAccountsL(RArray<TPopAccount>& aAccounts);
williamr@2
   310
	IMPORT_C void GetPopAccountL(TMsvId aServiceId, TPopAccount& aAccount); 
williamr@2
   311
	IMPORT_C void DeletePopAccountL(const TPopAccount& aAccount);
williamr@2
   312
williamr@2
   313
	IMPORT_C void GetImapAccountsL(RArray<TImapAccount>& aAccounts);
williamr@2
   314
	IMPORT_C void GetImapAccountL(TMsvId aServiceId, TImapAccount& aAccount); 
williamr@2
   315
	IMPORT_C void DeleteImapAccountL(const TImapAccount& aAccount);
williamr@2
   316
williamr@2
   317
	IMPORT_C void GetSmtpAccountsL(RArray<TSmtpAccount>& aAccounts);
williamr@2
   318
	IMPORT_C void GetSmtpAccountL(TMsvId aServiceId, TSmtpAccount& aAccount); 
williamr@2
   319
	IMPORT_C void DeleteSmtpAccountL(const TSmtpAccount& aAccount);
williamr@2
   320
	IMPORT_C void DeleteDefaultSmtpAccountL();
williamr@2
   321
williamr@2
   322
	IMPORT_C void PopulateDefaultPopSettingsL(CImPop3Settings& aPopSettings,
williamr@2
   323
	CImIAPPreferences& aPopIap);
williamr@2
   324
williamr@2
   325
	IMPORT_C void PopulateDefaultImapSettingsL(CImImap4Settings& aImapSettings,
williamr@2
   326
	CImIAPPreferences& aImapIap);
williamr@2
   327
williamr@2
   328
	IMPORT_C void PopulateDefaultSmtpSettingsL(CImSmtpSettings& aSmtpSettings,
williamr@2
   329
	CImIAPPreferences& aSmtpIap);
williamr@2
   330
williamr@2
   331
	IMPORT_C TInt DefaultSmtpAccountL(TSmtpAccount& aAccount);
williamr@2
   332
	IMPORT_C void SetDefaultSmtpAccountL(const TSmtpAccount& aAccount);
williamr@2
   333
williamr@2
   334
	IMPORT_C void LoadPopSettingsL(const TPopAccount& aAccount, CImPop3Settings& aPopSettings);
williamr@2
   335
	IMPORT_C void LoadPopIapSettingsL(const TPopAccount& aAccount, CImIAPPreferences& aIAP);
williamr@2
   336
williamr@2
   337
	IMPORT_C void LoadImapSettingsL(const TImapAccount& aAccount, CImImap4Settings& aImapSettings);
williamr@2
   338
	IMPORT_C void LoadImapIapSettingsL(const TImapAccount& aAccount, CImIAPPreferences& aIAP);
williamr@2
   339
williamr@2
   340
	IMPORT_C void LoadSmtpSettingsL(const TSmtpAccount& aAccount, CImSmtpSettings& aSmtpSettings);
williamr@2
   341
	IMPORT_C void LoadSmtpIapSettingsL(const TSmtpAccount& aAccount, CImIAPPreferences& aIAP);
williamr@2
   342
williamr@2
   343
	IMPORT_C void SavePopSettingsL(const TPopAccount& aAccount, const CImPop3Settings& aPopSettings);
williamr@2
   344
	IMPORT_C void SavePopIapSettingsL(const TPopAccount& aAccount, const CImIAPPreferences& aIAP);
williamr@2
   345
williamr@2
   346
	IMPORT_C void SaveImapSettingsL(const TImapAccount& aAccount, const CImImap4Settings& aImapSettings);
williamr@2
   347
williamr@2
   348
	IMPORT_C void SaveImapIapSettingsL(const TImapAccount& aAccount, const CImIAPPreferences& aIAP);
williamr@2
   349
williamr@2
   350
	IMPORT_C void SaveSmtpSettingsL(const TSmtpAccount& aAccount, const CImSmtpSettings& aSmtpSettings);
williamr@2
   351
	IMPORT_C void SaveSmtpIapSettingsL(const TSmtpAccount& aAccount, const CImIAPPreferences& aIAP);
williamr@2
   352
williamr@2
   353
	IMPORT_C TBool IsAccountReadOnlyL(const TPopAccount& aAccount);
williamr@2
   354
	IMPORT_C TBool IsAccountReadOnlyL(const TImapAccount& aAccount);
williamr@2
   355
	IMPORT_C TBool IsAccountReadOnlyL(const TSmtpAccount& aAccount);
williamr@2
   356
williamr@2
   357
	// Published partner routines
williamr@2
   358
	IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName,
williamr@2
   359
		const CImImap4Settings& aImapSettings, const CImIAPPreferences& aImapIAP,
williamr@2
   360
		const CImapSyncDownloadRules& aSyncDownloadRules, TBool aReadOnly);
williamr@2
   361
	IMPORT_C void LoadImapSyncDownloadRulesL(const TImapAccount& aAccount, CImapSyncDownloadRules& aRules);
williamr@2
   362
	IMPORT_C void LoadImapTransportBufferSizesL(CImapTransportBufferSizes& aBufferSizes);
williamr@2
   363
	IMPORT_C void SaveImapSyncDownloadRulesL(const TImapAccount& aAccount, const CImapSyncDownloadRules& aRules);
williamr@2
   364
	IMPORT_C void SaveImapTransportBufferSizesL(const CImapTransportBufferSizes& aBufferSizes);
williamr@2
   365
	IMPORT_C void DeleteImapTransportBufferSizesL();
williamr@2
   366
williamr@2
   367
	IMPORT_C void GetSmtpAccountL(TSmtpAccountId aAccountId, TSmtpAccount& aAccount);
williamr@2
   368
williamr@2
   369
	IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const CImSmtpMobilitySettings& aSettings, TBool aReadOnly);
williamr@2
   370
	IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const TSmtpAccount& aLinkedSmtpAccount, TBool aReadOnly);
williamr@2
   371
	IMPORT_C void GetSmtpMobilityAccountsL(const TSmtpAccount& aSmtpAccount, RArray<TSmtpMobilityAccount>& aAccounts);
williamr@2
   372
	IMPORT_C void DeleteSmtpMobilityAccountL(const TSmtpMobilityAccount& aAccount);
williamr@2
   373
williamr@2
   374
	IMPORT_C void PopulateDefaultSmtpMobilitySettingsL(CImSmtpMobilitySettings& aSettings);
williamr@2
   375
	IMPORT_C void LoadSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, CImSmtpMobilitySettings& aSettings);
williamr@2
   376
	IMPORT_C void SaveSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, const CImSmtpMobilitySettings& aSettings);
williamr@2
   377
williamr@2
   378
	IMPORT_C void LoadSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, RArrayIAP& aIapList);
williamr@2
   379
	IMPORT_C void SaveSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, const RArrayIAP& aIapList);
williamr@2
   380
williamr@2
   381
	IMPORT_C TBool IsAccountReadOnlyL(const TSmtpMobilityAccount& aAccount);
williamr@2
   382
williamr@2
   383
	// Internal routines
williamr@2
   384
	IMPORT_C void GetSmtpMobilityAccountsL(RArray<TSmtpMobilityAccount>& aAccounts);
williamr@2
   385
	IMPORT_C TBool LoadSmtpMobilitySettingsL(TSmtpAccountId& aSmtpAccountId, TUint32 aIap, CImSmtpMobilitySettings& aSettings);
williamr@2
   386
williamr@2
   387
private:
williamr@2
   388
	CEmailAccounts();
williamr@2
   389
	void HandleSessionEventL(TMsvSessionEvent , TAny* , TAny* , TAny* );
williamr@2
   390
	CMsvSession& SessionL();
williamr@2
   391
	CRepository& PopRepositoryL();
williamr@2
   392
	CRepository& ImapRepositoryL();
williamr@2
   393
	CRepository& SmtpRepositoryL();
williamr@2
   394
williamr@2
   395
	TMsvId CreateEmailServiceL(CMsvEntry& aMsvEntry, const TDesC& aAccountName, TUid aMTMType, TBool aVisible);
williamr@2
   396
	void SetRelatedIdL(CMsvEntry& aMsvEntry, TMsvId aId, TMsvId aRelatedId);
williamr@2
   397
	void SetEntryDetailsL(TMsvId aId, const TDesC& aAccountName);
williamr@2
   398
	void UnSetInPreparationFlagsL(CMsvEntry& aMsvEntry, TMsvId aId, TInt aAccountId);
williamr@2
   399
	void DeleteServiceEntryL(CMsvEntry& aMsvEntry, TMsvId aId);
williamr@2
   400
williamr@2
   401
	TUint GetNextEmptyAccountSlotL(CRepository& aRepository);
williamr@2
   402
	TUint32 FindEmailAccountL(TMsvId aService, CRepository& aRepository);
williamr@2
   403
williamr@2
   404
	void LoadIAPPrefSettingsL(TUint32 aAccountId, CImIAPPreferences& aIAP, CRepository& aRepository);
williamr@2
   405
	void DoLoadPopSettingsL(TUint32 aAccountId, CImPop3Settings& aPopSettings);
williamr@2
   406
	void DoLoadImapSettingsL(TUint32 aAccountId, CImImap4Settings& aImapSettings);
williamr@2
   407
	void DoLoadSmtpSettingsL(TUint32 aAccountId, CImSmtpSettings& aSmtpSettings);
williamr@2
   408
williamr@2
   409
	void SaveIAPPrefSettingsL(TUint32 aAccountId, const CImIAPPreferences& aIAP, CRepository& aRepository);
williamr@2
   410
	void DoSavePopSettingsL(TUint32 aAccountId, const CImPop3Settings& aPopSettings);
williamr@2
   411
	void DoSaveSmtpSettingsL(TUint32 aAccountId, const CImSmtpSettings& aSmtpSettings);
williamr@2
   412
	void DoSaveImapSettingsL(TUint32 aAccountId, const CImImap4Settings& aImapSettings);	
williamr@2
   413
	void DoSaveImapSyncDownloadRulesL(TUint32 aAccountId, const CImapSyncDownloadRules& aRules, CRepository& aRepository);
williamr@2
   414
williamr@2
   415
	TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
williamr@2
   416
		const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TBool aReadOnly);
williamr@2
   417
williamr@2
   418
	TUint32 DoCreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings, 
williamr@2
   419
		const CImIAPPreferences& aPopIAP, TMsvId aPopService, TMsvId aRelatedService, TBool aReadOnly);
williamr@2
   420
	TUint32 DoCreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
williamr@2
   421
		const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TMsvId aImapService,
williamr@2
   422
		TMsvId aRelatedService, TBool aReadOnly);
williamr@2
   423
	TUint32 DoCreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings, 
williamr@2
   424
		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aPopAccountId, TBool aReadOnly);
williamr@2
   425
	TUint32 DoCreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings, 
williamr@2
   426
		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aImapAccountId, TBool aReadOnly);
williamr@2
   427
	TUint32 DoCreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, 
williamr@2
   428
		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, TMsvId aRelatedService, TBool aReadOnly);	
williamr@2
   429
williamr@2
   430
	void DeleteIAPPrefSettingsL(TUint32 aAccountId, CRepository& aRepository);
williamr@2
   431
	void DeletePopSettings(TUint32 aAccountId, CRepository& aRepository);
williamr@2
   432
	void DeleteSmtpSettings(TUint32 aAccountId, CRepository& aRepository);
williamr@2
   433
	void DeleteImapSettings(TUint32 aAccountId, CRepository& aRepository);
williamr@2
   434
	void DeleteImapSyncDownloadRulesL(TUint32 aAccountId, CRepository& aRepository);
williamr@2
   435
williamr@2
   436
	void GetEmailServicesL(CMsvEntrySelection& aServices, TUid aMTMType, CMsvEntry& aMsvEntry);
williamr@2
   437
williamr@2
   438
	TBool IsAsciiPrintable(const TDesC16& aText);
williamr@2
   439
	TBool IsAsciiPrintable(const TDesC8& aText);
williamr@2
   440
	TBool IsUnicodePrintable(const TDesC16& aText);
williamr@2
   441
williamr@2
   442
	TSmtpMobilityAccount DoCreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const CImSmtpMobilitySettings& aSettings, const TSmtpAccount& aSmtpAccount, TSmtpAccountId aLinkedSmtpAccountId, TBool aReadOnly);
williamr@2
   443
	void AddMobilityAccountToSmtpAccountL(const TSmtpAccount& aSmtpAccount, const RArrayIAP& aIapList, TUint32 aMobAccRepId, CRepository& aRepository);
williamr@2
   444
	void AddLinkToMobilityAccountL(TSmtpAccountId aLinkedSmtpAccountId, TUint32 aMobAccRepId, CRepository& aRepository);
williamr@2
   445
	TInt FindIapListEntryInSmtpMobilityAccountListL(const RArrayIAP& aIapList, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries, TInt aIgnorePos);
williamr@2
   446
	TInt FindAccountIdInSmtpMobilityAccountListL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries);
williamr@2
   447
	void GetSmtpAccountInfoForMobilityAccountL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32& aSmtpAccRepId, TInt& aPos);
williamr@2
   448
	void DeleteAllOwnedMobilityAccountsL(TUint32 aSmtpAccRepId, CRepository& aRepository);
williamr@2
   449
	void DeleteAllLinkedMobilityAccountsL(TUint32 aLinkedSmtpAccRepId, CRepository& aRepository);
williamr@2
   450
	void DeleteSmtpMobilityAccountListEntryL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId);
williamr@2
   451
	void DeleteSmtpMobilityAccountFromLinkedSmtpAccountL(TUint32 aMobAccRepId, CRepository& aRepository);
williamr@2
   452
	TBool IsSmtpTypeAccountReadOnlyL(TUint32 aAccRepId);
williamr@2
   453
	TBool IsSmtpMobilityAccount(CRepository& aRepository, TUint32 aAccRepId);
williamr@4
   454
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
williamr@4
   455
	void CreateHeaderStoreL(TUid aMTMid);
williamr@4
   456
#endif
williamr@2
   457
private:
williamr@2
   458
	enum TEmailSettingTypes
williamr@2
   459
		{
williamr@2
   460
		// Partial CenRep Id for service settings
williamr@2
   461
		EServiceSettingType 			= 0x00000000,
williamr@2
   462
		// Partial CenRep Id for IAP Prefs
williamr@2
   463
		EIAPPrefSettingType				= 0x00010000,
williamr@2
   464
		// CenRep mask for email accounts
williamr@2
   465
		EAccountMask 					= 0x800FFFFF			
williamr@2
   466
		};
williamr@2
   467
	
williamr@2
   468
	enum TPOPServiceSettingsCenRepId
williamr@2
   469
		{
williamr@2
   470
		EPOPServiceId					= 0x00000000,
williamr@2
   471
		EPOPAccountNameId				= 0x00000001,
williamr@2
   472
		EPOPRelatedSMTPServiceId		= 0x00000002,
williamr@2
   473
		EPOPSettingsVersionId			= 0x00000003, 
williamr@2
   474
		EPOPServerAddressId				= 0x00000004,
williamr@2
   475
		EPOPPortNumberId			   	= 0x00000005,     	
williamr@2
   476
		EPOPFlagsId						= 0x00000006,
williamr@2
   477
		EPOPLoginNameId					= 0x00000007,
williamr@2
   478
		EPOPPasswordId					= 0x00000008,
williamr@2
   479
		EPOPMaxEmailSizeId				= 0x00000009,
williamr@2
   480
		EPOPGetEmailOptionsId			= 0x0000000A,
williamr@2
   481
		EPOPInboxSynchronisationLimitId	= 0x0000000B,
williamr@2
   482
		EPOPPopulationLimitId			= 0x0000000C,
williamr@2
   483
		EPOPReadOnlyAccountId			= 0x0000000D,
williamr@2
   484
		EPOPTlsSslDomainId				= 0x0000000F
williamr@2
   485
		};
williamr@2
   486
williamr@2
   487
	enum TIMAPServiceSettingsCenRepId
williamr@2
   488
		{
williamr@2
   489
		EIMAPServiceId					= 0x00000000,
williamr@2
   490
		EIMAPAccountNameId				= 0x00000001,
williamr@2
   491
		EIMAPRelatedSMTPServiceId		= 0x00000002,
williamr@2
   492
		EIMAPSettingsVersionId			= 0x00000003, 
williamr@2
   493
		EIMAPServerAddressId			= 0x00000004,
williamr@2
   494
		EIMAPPortNumberId			   	= 0x00000005,     	
williamr@2
   495
		EIMAPFlagsId					= 0x00000006,
williamr@2
   496
		EIMAPLoginNameId				= 0x00000007,
williamr@2
   497
		EIMAPPasswordId					= 0x00000008,
williamr@2
   498
		EIMAPFolderPathId				= 0x00000009,
williamr@2
   499
		EIMAPPathSeparatorId			= 0x0000000A,
williamr@2
   500
		EIMAPSynchronisationStrategyId	= 0x0000000B,
williamr@2
   501
		EIMAPSubscriptionStrategyId		= 0x0000000C,
williamr@2
   502
		EIMAPMaxEmailSizeId				= 0x0000000D,
williamr@2
   503
		EIMAPGetMailOptionsId			= 0x0000000E,
williamr@2
   504
		EIMAPInboxSynchronisationLimitId= 0x0000000F,
williamr@2
   505
		EIMAPMailboxSynchronisationLimitId= 0x00000010,
williamr@2
   506
		EIMAPTlsSslDomainId				= 0x00000012,		
williamr@2
   507
		EIMAPSyncRateId					= 0x00000020,
williamr@2
   508
		EIMAPFetchSizeId				= 0x00000030,
williamr@2
   509
		EIMAPIdleTimeoutId				= 0x00000040,
williamr@2
   510
		EPartialMailOptionsId			= 0x00000050,
williamr@2
   511
		EBodyTextSizeLimitId			= 0x00000060,		
williamr@2
   512
		EAttachmentSizeLimitId			= 0x00000070,
williamr@2
   513
		EIMAPSearchStringId				= 0x00000080,
williamr@2
   514
		EIMAPReadOnlyAccountId			= 0x00000090,
williamr@2
   515
		// 0x00001000 - 0x00002FFF reserved for sync download rules
williamr@2
   516
		// 0x00010000 - 0x00014FFF reserved for IAP/SNAP preferences
williamr@2
   517
		};
williamr@2
   518
williamr@2
   519
	enum TIMAPSyncDownloadRulesCenRepInfo
williamr@2
   520
		{
williamr@2
   521
		EIMAPSyncDownloadRulesVersionId = 0x00001000,
williamr@2
   522
		EIMAPNumInboxSyncDownloadRulesId = 0x00001001,
williamr@2
   523
		EIMAPNumFolderSyncDownloadRulesId = 0x00001002,
williamr@2
   524
williamr@2
   525
		EIMAPInboxSyncDownloadRulesBearerTypesId = 0x00001010,
williamr@2
   526
		EIMAPInboxSyncDownloadRulesMailOptionsId = 0x00001011,
williamr@2
   527
		EIMAPInboxSyncDownloadRulesTotalSizeLimitId = 0x00001012,
williamr@2
   528
		EIMAPInboxSyncDownloadRulesBodyTextSizeLimitId = 0x00001013,
williamr@2
   529
		EIMAPInboxSyncDownloadRulesAttachmentSizeLimitId = 0x00001014,
williamr@2
   530
		EIMAPInboxSyncDownloadRulesGetMailBodyPartsId = 0x00001015,
williamr@2
   531
		EIMAPInboxSyncDownloadRulesMaxEmailSizeId = 0x00001016,
williamr@2
   532
williamr@2
   533
		EIMAPFolderSyncDownloadRulesBearerTypesId = 0x00001030,
williamr@2
   534
		EIMAPFolderSyncDownloadRulesMailOptionsId = 0x00001031,
williamr@2
   535
		EIMAPFolderSyncDownloadRulesTotalSizeLimitId = 0x00001032,
williamr@2
   536
		EIMAPFolderSyncDownloadRulesBodyTextSizeLimitId = 0x00001033,
williamr@2
   537
		EIMAPFolderSyncDownloadRulesAttachmentSizeLimitId = 0x00001034,
williamr@2
   538
		EIMAPFolderSyncDownloadRulesGetMailBodyPartsId = 0x00001035,
williamr@2
   539
		EIMAPFolderSyncDownloadRulesMaxEmailSizeId = 0x00001036,
williamr@2
   540
williamr@2
   541
		// Offset between sets of rules
williamr@2
   542
		EIMAPSyncDownloadRulesOffset = 0x40
williamr@2
   543
		};
williamr@2
   544
williamr@2
   545
	enum TIAPPreferencesCenRepId
williamr@2
   546
		{
williamr@2
   547
		// single settings		
williamr@2
   548
		EIAPPrefVersion 				= 0x00010000,
williamr@2
   549
		EIAPChoicesCount 				= 0x00010001,
williamr@2
   550
		
williamr@2
   551
		// List of settings
williamr@2
   552
		EIAPListIDs						= 0x00011000,
williamr@2
   553
		EIAPListDialogPrefs				= 0x00012000,
williamr@2
   554
		// EIAPSnapId placed here is a deviation from Design doc. Remove comment after a decision is made
williamr@2
   555
		EIAPSnapId						= 0x00014000 // The same value is to be used in all account types
williamr@2
   556
		};
williamr@2
   557
williamr@2
   558
	enum TIMAPTransportBufferSizesCenRepInfo
williamr@2
   559
		{
williamr@2
   560
		EIMAPTransportBufferSizesVersionId = 0x80000100,
williamr@2
   561
		EIMAPNumTransportBufferSizesId = 0x80000101,
williamr@2
   562
williamr@2
   563
		EIMAPTransportBufferSizesBearerTypesId = 0x80000110,
williamr@2
   564
		EIMAPTransportBufferSizesFetchRequestSizeId = 0x80000111,
williamr@2
   565
		EIMAPTransportBufferSizesMaxOutstandingFetchResponsesId = 0x80000112,
williamr@2
   566
	
williamr@2
   567
		// Offset between entries
williamr@2
   568
		EIMAPTransportBufferSizesOffset = 0x20
williamr@2
   569
		};
williamr@2
   570
williamr@2
   571
	enum TSMTPServiceSettingsCenRepId
williamr@2
   572
		{
williamr@2
   573
		ESMTPServiceId					= 0x00000000,
williamr@2
   574
		ESMTPAccountNameId				= 0x00000001,		
williamr@2
   575
		ESMTPSettingsVersionId			= 0x00000002,
williamr@2
   576
		ESMTPServerAddressId			= 0x00000003, 
williamr@2
   577
		ESMTPPortNumberId				= 0x00000004, 
williamr@2
   578
		ESMTPFlagsId				   	= 0x00000005,     	
williamr@2
   579
		ESMTPEmailAliasId				= 0x00000006, 
williamr@2
   580
		ESMTPEmailAddressId				= 0x00000007,
williamr@2
   581
		ESMTPReplyToAddressId			= 0x00000008,
williamr@2
   582
		ESMTPReceiptAddressId			= 0x00000009,
williamr@2
   583
		ESMTPBodyEncodingId				= 0x0000000A,
williamr@2
   584
		ESMTPDefaultMsgCharSetId		= 0x0000000B,
williamr@2
   585
		ESMTPSendCopyToSelfId			= 0x0000000C,
williamr@2
   586
		ESMTPSendMessageOptionId		= 0x0000000D,
williamr@2
   587
		ESMTPLoginNameId				= 0x0000000E,
williamr@2
   588
		ESMTPPasswordId					= 0x0000000F,
williamr@2
   589
		ESMTPRelatedServiceId			= 0x00000010,
williamr@2
   590
		ESMTPIncludeToCcId				= 0x00000011,
williamr@2
   591
		ESMTPReadOnlyAccountId			= 0x00000012,
williamr@2
   592
		ESMTPParentAccountId			= 0x00000013,
williamr@2
   593
		ESMTPTlsSslDomainId				= 0x00000014,
williamr@2
   594
		ESMTPLinkedAccountId			= 0x00000015
williamr@2
   595
		};
williamr@2
   596
williamr@2
   597
	enum TSMTPLinkedMobilityAccountListCenRepInfo
williamr@2
   598
		{
williamr@2
   599
		ESMTPLinkedMobilityAccountListVersionId = 0x00015000,
williamr@2
   600
		ESMTPLinkedMobilityAccountListNumEntriesId = 0x00015001,
williamr@2
   601
		ESMTPLinkedMobilityAccountListEntryId = 0x00015010,
williamr@2
   602
williamr@2
   603
		// Maximum number of list entries
williamr@2
   604
		ESMTPLinkedMobilityAccountListMaxEntries = 2048
williamr@2
   605
		};
williamr@2
   606
williamr@2
   607
	enum TSMTPMobilityAccountListCenRepInfo
williamr@2
   608
		{
williamr@2
   609
		ESMTPMobilityAccountListVersionId = 0x00016000,
williamr@2
   610
		ESMTPMobilityAccountListNumEntriesId = 0x00016001,
williamr@2
   611
williamr@2
   612
		ESMTPMobilityAccountListAccountId = 0x00016010,
williamr@2
   613
		ESMTPMobilityAccountListNumIapsId = 0x00016011,
williamr@2
   614
		ESMTPMobilityAccountListIapId = 0x00016020,
williamr@2
   615
williamr@2
   616
		// Offset between entries
williamr@2
   617
		ESMTPMobilityAccountListOffset = 0x40,
williamr@2
   618
williamr@2
   619
		// Maximum number of list entries
williamr@2
   620
		ESMTPMobilityAccountMaxEntries = 32
williamr@2
   621
		};
williamr@2
   622
williamr@2
   623
private:
williamr@2
   624
	CMsvSession* iMsvSession;
williamr@2
   625
	CRepository* iPOPRepository;
williamr@2
   626
	CRepository* iSMTPRepository;
williamr@2
   627
	CRepository* iIMAPRepository;	
williamr@2
   628
	};
williamr@2
   629
williamr@2
   630
#endif // __CEMAILACCOUNTS_H__