epoc32/include/app/phbksync.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 epoc32/include/phbksync.h@2fe1408b6811
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 2002-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@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.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
// Phonebook Synchroniser API header file.
williamr@2
    15
// Describes the Phonebook Synchroniser API for use by clients of the
williamr@2
    16
// Phonebook Synchroniser Server.
williamr@2
    17
// 
williamr@2
    18
//
williamr@2
    19
williamr@2
    20
williamr@2
    21
williamr@2
    22
/**
williamr@2
    23
 @file
williamr@2
    24
 @publishedAll
williamr@2
    25
 @released
williamr@2
    26
*/
williamr@2
    27
williamr@2
    28
#ifndef __PHBKSYNC_H__
williamr@2
    29
#define __PHBKSYNC_H__
williamr@2
    30
williamr@2
    31
#include <e32std.h>
williamr@2
    32
#include <cntdef.h>
williamr@2
    33
#include <cntdb.h>
williamr@2
    34
#include <cntitem.h>
williamr@2
    35
#include <cntfldst.h>
williamr@2
    36
williamr@2
    37
/**
williamr@2
    38
 *  Index not supplied.
williamr@2
    39
 */
williamr@2
    40
const TInt KSyncIndexNotSupplied=-1;
williamr@2
    41
williamr@2
    42
williamr@2
    43
//
williamr@2
    44
// TUid Phonebook Types used by Contacts Model 
williamr@2
    45
//
williamr@2
    46
#define KUidIccPhonebookNotSpecifiedValue    0x101F7874
williamr@2
    47
#define KUidIccGlobalAdnPhonebookValue       0x101F7875
williamr@2
    48
#define KUidIccGlobalSdnPhonebookValue       0x101F7876
williamr@2
    49
#define KUidIccGlobalLndPhonebookValue       0x101F7877
williamr@2
    50
#define KUidUsimAppAdnPhonebookValue         0x101F7878
williamr@2
    51
#define KUidIccGlobalFdnPhonebookValue       0x101FB2AF
williamr@2
    52
williamr@2
    53
const TUid  KUidIccPhonebookNotSpecified = {KUidIccPhonebookNotSpecifiedValue};
williamr@2
    54
const TUid  KUidIccGlobalAdnPhonebook    = {KUidIccGlobalAdnPhonebookValue};
williamr@2
    55
const TUid  KUidIccGlobalSdnPhonebook    = {KUidIccGlobalSdnPhonebookValue};
williamr@2
    56
const TUid  KUidIccGlobalLndPhonebook    = {KUidIccGlobalLndPhonebookValue};
williamr@2
    57
const TUid  KUidUsimAppAdnPhonebook      = {KUidUsimAppAdnPhonebookValue};
williamr@2
    58
const TUid  KUidIccGlobalFdnPhonebook    = {KUidIccGlobalFdnPhonebookValue};
williamr@2
    59
williamr@2
    60
williamr@2
    61
/**
williamr@2
    62
 *  Types of cancel requests for the asynchronous server requests.
williamr@2
    63
 *
williamr@2
    64
 *  @see RPhoneBookSession::CancelRequest
williamr@2
    65
 */
williamr@2
    66
enum TPhonebookSyncRequestCancel
williamr@2
    67
	{
williamr@2
    68
	/** Cancel the asynchronous RPhoneBookSession::DoSynchronisation() request */
williamr@2
    69
	EDoSynchronisationCancelClient,
williamr@2
    70
williamr@2
    71
	/** Cancel the asynchronous RPhoneBookSession::DeleteContact() request */
williamr@2
    72
	ESyncDeleteCntFromICCCancelClient,
williamr@2
    73
williamr@2
    74
	/** Cancel the asynchronous RPhoneBookSession::WriteContact() request */
williamr@2
    75
	ESyncWriteCntToICCCancelClient,
williamr@2
    76
williamr@2
    77
	/** Cancel the asynchronous RPhoneBookSession::NotifyPhBkCacheStateChange() request */
williamr@2
    78
	ESyncNotifyCacheStateChangeCancelClient
williamr@2
    79
	};
williamr@2
    80
williamr@2
    81
williamr@2
    82
/**
williamr@2
    83
 *  Class to hold the contact field formats.
williamr@2
    84
 *
williamr@2
    85
 *  @publishedAll
williamr@2
    86
 *  @released
williamr@2
    87
 */
williamr@2
    88
class TContactFieldFormat
williamr@2
    89
	{
williamr@2
    90
public:
williamr@2
    91
	TContactFieldFormat(TInt aLength, TInt aCount, TBool aDisplayed);
williamr@2
    92
williamr@2
    93
public:
williamr@2
    94
	/** The maximum length (i.e. number of characters) of the field. If the field is 
williamr@2
    95
	not a string type this attribute should be ignored. */
williamr@2
    96
	TInt  iLength;
williamr@2
    97
williamr@2
    98
	/** The maximum number of instances of this field within an item. This is set to 
williamr@2
    99
	-1 if this is unlimited. */
williamr@2
   100
	TInt  iCount;
williamr@2
   101
williamr@2
   102
	/** Indicates whether this is displayed or hidden. */
williamr@2
   103
	TBool iDisplayed;
williamr@2
   104
	};
williamr@2
   105
williamr@2
   106
williamr@2
   107
//
williamr@2
   108
// Forward declare the internal data storage class.
williamr@2
   109
//
williamr@2
   110
class CSyncClientData;
williamr@2
   111
williamr@2
   112
/**
williamr@2
   113
 *  Provides the CPhoneBookSyncPlugin client access to a session with the
williamr@2
   114
 *  Phonebook Synchronizer Server. 
williamr@2
   115
 *
williamr@2
   116
 *  A handle to an RPhoneBookSession enables the plug-in class to perform
williamr@2
   117
 *  IPC communications with the server.
williamr@2
   118
 *
williamr@2
   119
 *  @publishedAll
williamr@2
   120
 *  @released
williamr@2
   121
 */
williamr@2
   122
class RPhoneBookSession : public RSessionBase
williamr@2
   123
	{
williamr@2
   124
public:
williamr@2
   125
	/**
williamr@2
   126
	 *  Structure holding the template ID and buffer size. The client has
williamr@2
   127
	 *  no need to use this structure.
williamr@2
   128
	 *
williamr@2
   129
	 *  @deprecated
williamr@2
   130
	 */
williamr@2
   131
	struct TTemplateAndBufferSize
williamr@2
   132
		{
williamr@2
   133
		TContactItemId  templateId;
williamr@2
   134
		TInt  bufferSize;
williamr@2
   135
		};
williamr@2
   136
williamr@2
   137
	/**
williamr@2
   138
	 *  The synchronisation mode for phonebooks when the server starts.
williamr@2
   139
	 */
williamr@2
   140
	enum TPhonebookSyncMode
williamr@2
   141
		{
williamr@2
   142
		/** Automatic synchronisation will be performed. */
williamr@2
   143
		EAutoCurrentIcc,
williamr@2
   144
williamr@2
   145
		/** Automatic synchronisation will only be performed if the current ICC is
williamr@2
   146
		    the same as the last ICC to be synchonised. */
williamr@2
   147
		EAutoSameIcc,
williamr@2
   148
williamr@2
   149
		/** Manual synchronisation will be performed when requested. */
williamr@2
   150
		EManual
williamr@2
   151
		};
williamr@2
   152
williamr@2
   153
	/**
williamr@2
   154
	 *  The phonebook cache state.
williamr@2
   155
	 */
williamr@2
   156
	enum TSyncState
williamr@2
   157
		{
williamr@2
   158
		/** The server has not yet populated the Contacts Database. */
williamr@2
   159
		EUnsynchronised,
williamr@2
   160
williamr@2
   161
		/** The server has finished populating the Contacts Database. */
williamr@2
   162
		ECacheValid,
williamr@2
   163
williamr@2
   164
		/** The server encountered an error populating the Contacts Database. */
williamr@2
   165
		EErrorDuringSync
williamr@2
   166
		};
williamr@2
   167
williamr@2
   168
	/**
williamr@2
   169
	 *  Specifies format of phonebook fields within an ICC phonebook entry.
williamr@2
   170
	 *
williamr@2
   171
	 *  @publishedAll
williamr@2
   172
	 *  @released
williamr@2
   173
	 */
williamr@2
   174
	class TContactFieldsV1  
williamr@2
   175
		{
williamr@2
   176
	public:
williamr@2
   177
		/**
williamr@2
   178
		 *  Enumeration to describe the version ID of the Phonebook Synchronizer.
williamr@2
   179
		 */
williamr@2
   180
		enum TContactFieldsExtensionId
williamr@2
   181
			{
williamr@2
   182
			/** Phonebook Synchronizer version 1 */
williamr@2
   183
			KPhBkSyncTContactFieldsV1,
williamr@2
   184
williamr@2
   185
			/** Phonebook Synchronizer version 2 */
williamr@2
   186
			KPhBkSyncTContactFieldsV2,
williamr@2
   187
williamr@2
   188
			/** Phonebook Synchronizer version 3 */
williamr@2
   189
			KPhBkSyncTContactFieldsV3
williamr@2
   190
			};
williamr@2
   191
williamr@2
   192
		/**
williamr@2
   193
		 *  Returns the Phonebook Synchronizer API extension number of the class.
williamr@2
   194
		 *
williamr@2
   195
		 *  @return  The version ID from TContactFieldsExtensionId.
williamr@2
   196
		 */
williamr@2
   197
		IMPORT_C TInt ExtensionId() const;
williamr@2
   198
williamr@2
   199
		/**
williamr@2
   200
		 *  Standard constructor.
williamr@2
   201
		 */
williamr@2
   202
		IMPORT_C TContactFieldsV1();
williamr@2
   203
williamr@2
   204
	public:
williamr@2
   205
		/** The format of the name field within an ICC phonebook entry. */
williamr@2
   206
		TContactFieldFormat  iNameField;
williamr@2
   207
williamr@2
   208
		/** The format of the number field within an ICC phonebook entry. */
williamr@2
   209
		TContactFieldFormat  iNumberField;
williamr@2
   210
williamr@2
   211
		/** The format of the ICC slot number field within an ICC phonebook entry. */
williamr@2
   212
		TContactFieldFormat  iIccSlotField;
williamr@2
   213
williamr@2
   214
	protected:
williamr@2
   215
		TInt  iExtensionId;
williamr@2
   216
		};
williamr@2
   217
williamr@2
   218
	/**
williamr@2
   219
	 *  A packaged instance of TContactFieldsV1.
williamr@2
   220
	 */
williamr@2
   221
	typedef TPckg<TContactFieldsV1>  TContactFieldsV1Pckg;
williamr@2
   222
williamr@2
   223
	/**
williamr@2
   224
	 *  Specifies format of phonebook fields within an UICC phonebook entry
williamr@2
   225
	 *
williamr@2
   226
	 *  @publishedAll
williamr@2
   227
	 *  @released
williamr@2
   228
	 */
williamr@2
   229
	class TContactFieldsV2 : public TContactFieldsV1 
williamr@2
   230
		{
williamr@2
   231
	public:
williamr@2
   232
		IMPORT_C TContactFieldsV2();
williamr@2
   233
williamr@2
   234
	public:
williamr@2
   235
		/** The format of any additional number fields within an ICC phonebook entry. */
williamr@2
   236
		TContactFieldFormat  iAdditionalNumString;
williamr@2
   237
williamr@2
   238
		/** The format of group field within an ICC phonebook entry. */
williamr@2
   239
		TContactFieldFormat  iGroupField;
williamr@2
   240
williamr@2
   241
		/** The format of email field within an ICC phonebook entry. */
williamr@2
   242
		TContactFieldFormat  iEmailField;
williamr@2
   243
williamr@2
   244
		/** The UID of the phonebook. */
williamr@2
   245
		TUid  iPhonebook;
williamr@2
   246
		};
williamr@2
   247
williamr@2
   248
	/**
williamr@2
   249
	 *  A packaged instance of TContactFieldsV2.
williamr@2
   250
	 */
williamr@2
   251
	typedef TPckg<TContactFieldsV2>  TContactFieldsV2Pckg;
williamr@2
   252
williamr@2
   253
williamr@2
   254
	/**
williamr@2
   255
	 *  Specifies additional format information for phonebook fields within a
williamr@2
   256
	 *  UICC phonebook entry.
williamr@2
   257
	 *
williamr@2
   258
	 *  @publishedAll
williamr@2
   259
	 *  @released
williamr@2
   260
	 */
williamr@2
   261
	class TContactFieldsV3 : public TContactFieldsV2 
williamr@2
   262
		{
williamr@2
   263
	public:
williamr@2
   264
		IMPORT_C TContactFieldsV3();
williamr@2
   265
williamr@2
   266
	public:
williamr@2
   267
		/** The format of an addition number's text field within an ICC phonebook entry. */
williamr@2
   268
		TContactFieldFormat  iAdditionalNumAlphaString;
williamr@2
   269
williamr@2
   270
		/** The format of the second name field within an ICC phonebook entry. */
williamr@2
   271
		TContactFieldFormat  iSecondNameField;
williamr@2
   272
		};
williamr@2
   273
williamr@2
   274
	/**
williamr@2
   275
	 *  A packaged instance of TContactFieldsV3.
williamr@2
   276
	 */
williamr@2
   277
	typedef TPckg<TContactFieldsV3>  TContactFieldsV3Pckg;
williamr@2
   278
williamr@2
   279
williamr@2
   280
	/**
williamr@2
   281
	 *  The phonebook ID type requested from a phonebook. There are two types of IDs
williamr@2
   282
	 *  (group IDs and template IDs).
williamr@2
   283
	 *
williamr@2
   284
	 *  @see RPhoneBookSession::GetPhoneBookId()
williamr@2
   285
	 */
williamr@2
   286
	enum TSyncIdType
williamr@2
   287
		{
williamr@2
   288
		/** Used to allocate a new entry to the right group in the Contacts Database. */
williamr@2
   289
		ESyncGroupId,
williamr@2
   290
williamr@2
   291
		/** Used to define new ICC entries in the Contacts Database. */
williamr@2
   292
		ESyncTemplateId
williamr@2
   293
		};
williamr@2
   294
williamr@2
   295
public:
williamr@2
   296
	IMPORT_C RPhoneBookSession();
williamr@2
   297
	IMPORT_C TInt Connect();
williamr@2
   298
	IMPORT_C void Close();
williamr@2
   299
	IMPORT_C TVersion Version() const;
williamr@2
   300
	IMPORT_C TInt ShutdownServer (TBool aUnconditionally);
williamr@2
   301
williamr@2
   302
	//
williamr@2
   303
	// Single (ADN) phonebook support and functions not requiring a phonebook UID.
williamr@2
   304
	//
williamr@2
   305
	IMPORT_C void DoSynchronisation(TRequestStatus& aReqStatus);
williamr@2
   306
	IMPORT_C TInt ValidateContact(MContactSynchroniser::TValidateOperation aOperation, TContactItemId aId);
williamr@2
   307
	IMPORT_C void WriteContact(TRequestStatus& aReqStatus, CContactICCEntry& aContactItem, 
williamr@2
   308
							   TInt& aSlotNumber);
williamr@2
   309
	IMPORT_C void DeleteContact(TRequestStatus& aReqStatus, TContactItemId aId);
williamr@2
   310
	IMPORT_C TInt GetPhoneBookId(TContactItemId& aId, TSyncIdType aIdType);
williamr@2
   311
	IMPORT_C TInt UpdateLookuptable(TContactItemId aNewUid, TInt aIccSlot);
williamr@2
   312
	IMPORT_C TInt GetContactFormat(TDes8& aContactFields);
williamr@2
   313
	IMPORT_C TInt GetSyncMode(TPhonebookSyncMode& aSyncMode);
williamr@2
   314
	IMPORT_C TInt SetSyncMode(TPhonebookSyncMode aSyncMode);
williamr@2
   315
	IMPORT_C TInt GetPhoneBookCacheState(TSyncState& aState);
williamr@2
   316
	IMPORT_C void CancelRequest(TPhonebookSyncRequestCancel aReqToCancel);
williamr@2
   317
	IMPORT_C TInt GetLastSyncError(TInt& aError);
williamr@2
   318
	IMPORT_C void NotifyPhBkCacheStateChange(TRequestStatus& aStatus);
williamr@2
   319
	IMPORT_C TInt GetNumSlots(TInt& aNumSlots) const;
williamr@2
   320
	IMPORT_C void GetFreeSlotsL(RArray<TInt>& aFreeSlots) const;
williamr@2
   321
	IMPORT_C TInt GetSlotId(TInt aSlot, TContactItemId& aId) const;
williamr@2
   322
williamr@2
   323
	//
williamr@2
   324
	// Multiple phonebooks support. These should be used in preference to the above
williamr@2
   325
	// ADN specific versions.
williamr@2
   326
	//
williamr@2
   327
	IMPORT_C void DoSynchronisation(TRequestStatus& aReqStatus, TUid aPhonebookUid);
williamr@2
   328
	IMPORT_C void WriteContact(TRequestStatus& aReqStatus, CContactICCEntry& aContactItem, 
williamr@2
   329
							   TInt& aSlotNumber, TUid& aPhonebookUid);
williamr@2
   330
	IMPORT_C TInt GetPhoneBookId(TContactItemId& aId, TSyncIdType aIdType, TUid aPhonebookUid);
williamr@2
   331
	IMPORT_C TInt UpdateLookuptable(TContactItemId aNewUid, TInt aIccSlot, TUid aPhonebookUid);
williamr@2
   332
	IMPORT_C TInt GetSyncMode(TPhonebookSyncMode& aSyncMode, TUid aPhonebookId);
williamr@2
   333
	IMPORT_C TInt SetSyncMode(TPhonebookSyncMode aSyncMode, TUid aPhonebookId);
williamr@2
   334
	IMPORT_C TInt GetPhoneBookCacheState(TSyncState& aState, TUid aPhonebookId);
williamr@2
   335
	IMPORT_C void CancelRequest(TPhonebookSyncRequestCancel aReqToCancel, TUid aPhonebookId);
williamr@2
   336
	IMPORT_C TInt GetLastSyncError(TInt& aError, TUid aPhonebookId);
williamr@2
   337
	IMPORT_C void NotifyPhBkCacheStateChange(TRequestStatus& aStatus, TUid aPhonebookId);
williamr@2
   338
	IMPORT_C TInt GetNumSlots(TInt& aNumSlots, TUid aPhonebookId) const;
williamr@2
   339
	IMPORT_C void GetFreeSlotsL(RArray<TInt>& aFreeSlots, TUid aPhonebookId) const;
williamr@2
   340
	IMPORT_C TInt GetSlotId(TInt aSlot, TContactItemId& aId, TUid aPhonebookId) const;
williamr@2
   341
williamr@2
   342
	//
williamr@2
   343
	// Memory checking functionality for Debug builds only.
williamr@2
   344
	//
williamr@2
   345
	IMPORT_C TInt __DbgMarkHeap();
williamr@2
   346
	IMPORT_C TInt __DbgCheckHeap(TInt aCount);
williamr@2
   347
	IMPORT_C TInt __DbgMarkEnd(TInt aCount);
williamr@2
   348
	IMPORT_C TInt __DbgFailNext(TInt aCount);
williamr@2
   349
williamr@2
   350
private:
williamr@2
   351
	RPhoneBookSession(const RPhoneBookSession& aSession);
williamr@2
   352
williamr@2
   353
private:
williamr@2
   354
	/* Temporary data used by the session. */
williamr@2
   355
	CSyncClientData*  iData;
williamr@2
   356
	};
williamr@2
   357
williamr@2
   358
#endif