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