epoc32/include/app/MVPbkContactAttributeManager.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
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@4
     1
/*
williamr@4
     2
* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     3
* All rights reserved.
williamr@4
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@4
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     8
*
williamr@4
     9
* Initial Contributors:
williamr@4
    10
* Nokia Corporation - initial contribution.
williamr@4
    11
*
williamr@4
    12
* Contributors:
williamr@4
    13
*
williamr@4
    14
* Description:  Virtual Phonebook manager class for contact attributes.
williamr@4
    15
*
williamr@4
    16
*/
williamr@4
    17
 
williamr@4
    18
williamr@4
    19
#ifndef MVPBKCONTACTATTRIBUTEMANAGER_H
williamr@4
    20
#define MVPBKCONTACTATTRIBUTEMANAGER_H
williamr@4
    21
williamr@4
    22
// INCLUDE FILES
williamr@4
    23
#include <e32cmn.h>
williamr@4
    24
#include <e32std.h>
williamr@4
    25
williamr@4
    26
// FORWARD DECLARATIONS
williamr@4
    27
class MVPbkContactOperationBase;
williamr@4
    28
class MVPbkContactLink;
williamr@4
    29
class MVPbkContactFindObserver;
williamr@4
    30
class MVPbkStoreContact;
williamr@4
    31
class MVPbkStoreContactField;
williamr@4
    32
class MVPbkContactAttribute;
williamr@4
    33
class MVPbkStoreContactFieldCollection;
williamr@4
    34
williamr@4
    35
/**
williamr@4
    36
 * Virtual Phonebook single attribute presense observer interface.
williamr@4
    37
 */
williamr@4
    38
class MVPbkSingleAttributePresenceObserver
williamr@4
    39
    {
williamr@4
    40
    public:
williamr@4
    41
        /**
williamr@4
    42
         * Attribute presence query operation completed.
williamr@4
    43
         * @param aOperation    Contact operation that was completed.
williamr@4
    44
         * @param aResult   Result of the query.
williamr@4
    45
         */
williamr@4
    46
        virtual void AttributePresenceOperationComplete(
williamr@4
    47
            MVPbkContactOperationBase& aOperation, TBool aResult ) = 0;
williamr@4
    48
williamr@4
    49
        /**
williamr@4
    50
         * Attribute presence query operation failed.
williamr@4
    51
         * @param aOperation    Contact operation that failed.
williamr@4
    52
         * @param aError        Error code.
williamr@4
    53
         */
williamr@4
    54
        virtual void AttributePresenceOperationFailed(
williamr@4
    55
            MVPbkContactOperationBase& aOperation, TInt aError) = 0;
williamr@4
    56
williamr@4
    57
        /**
williamr@4
    58
         * Returns an extension point for this interface or NULL.
williamr@4
    59
         * @param aExtensionUid Extension identifier.
williamr@4
    60
         * @return Extension object.
williamr@4
    61
         */
williamr@4
    62
        virtual TAny* AttributeSinglePresenceOperationExtension(
williamr@4
    63
            TUid /*aExtensionUid*/) { return NULL; }
williamr@4
    64
williamr@4
    65
    protected:  // Destructor
williamr@4
    66
        /**
williamr@4
    67
         * Destructor.
williamr@4
    68
         */
williamr@4
    69
        virtual ~MVPbkSingleAttributePresenceObserver() { }
williamr@4
    70
    };
williamr@4
    71
williamr@4
    72
/**
williamr@4
    73
 * Virtual Phonebook multiple attribute presense observer interface.
williamr@4
    74
 */
williamr@4
    75
class MVPbkMultiAttributePresenceObserver
williamr@4
    76
    {
williamr@4
    77
    public:
williamr@4
    78
        /**
williamr@4
    79
         * Attribute presence query operation completed.
williamr@4
    80
         * @param aOperation    Contact operation that was completed.
williamr@4
    81
         * @param aResult   Fields with attribute aAttribute, 
williamr@4
    82
         *                  or NULL if there is no fields with that 
williamr@4
    83
         *                  attribute in this contact.
williamr@4
    84
         */
williamr@4
    85
        virtual void AttributePresenceOperationComplete(
williamr@4
    86
            MVPbkContactOperationBase& aOperation, 
williamr@4
    87
            MVPbkStoreContactFieldCollection* aResult) = 0;
williamr@4
    88
williamr@4
    89
        /**
williamr@4
    90
         * Attribute presence query operation failed.
williamr@4
    91
         * @param aOperation    Contact operation that failed.
williamr@4
    92
         * @param aError        Error code.
williamr@4
    93
         */
williamr@4
    94
        virtual void AttributePresenceOperationFailed(
williamr@4
    95
            MVPbkContactOperationBase& aOperation, TInt aError) = 0;
williamr@4
    96
williamr@4
    97
        /**
williamr@4
    98
         * Returns an extension point for this interface or NULL.
williamr@4
    99
         * @param aExtensionUid Extension identifier.
williamr@4
   100
         * @return Extension object.
williamr@4
   101
         */
williamr@4
   102
        virtual TAny* AttributeMultiPresenceOperationExtension(
williamr@4
   103
            TUid /*aExtensionUid*/) { return NULL; }
williamr@4
   104
williamr@4
   105
    protected:  // Destructor
williamr@4
   106
        /**
williamr@4
   107
         * Destructor.
williamr@4
   108
         */
williamr@4
   109
        virtual ~MVPbkMultiAttributePresenceObserver() { }
williamr@4
   110
    };
williamr@4
   111
williamr@4
   112
williamr@4
   113
/**
williamr@4
   114
 * Virtual Phonebook Set attribute observer interface.
williamr@4
   115
 */
williamr@4
   116
class MVPbkSetAttributeObserver
williamr@4
   117
    {
williamr@4
   118
    public:
williamr@4
   119
        /**
williamr@4
   120
         * Attribute operation completed.
williamr@4
   121
         * @param aOperation    Contact operation that was completed.
williamr@4
   122
         */
williamr@4
   123
        virtual void AttributeOperationComplete(
williamr@4
   124
            MVPbkContactOperationBase& aOperation) = 0;
williamr@4
   125
williamr@4
   126
        /**
williamr@4
   127
         * Attribute operation failed.
williamr@4
   128
         * @param aOperation    Contact operation that failed.
williamr@4
   129
         * @param aError        Error code.
williamr@4
   130
         */
williamr@4
   131
        virtual void AttributeOperationFailed(
williamr@4
   132
            MVPbkContactOperationBase& aOperation, TInt aError) = 0;
williamr@4
   133
williamr@4
   134
        /**
williamr@4
   135
         * Returns an extension point for this interface or NULL.
williamr@4
   136
         * @param aExtensionUid Extension identifier.
williamr@4
   137
         * @return Extension object.
williamr@4
   138
         */
williamr@4
   139
        virtual TAny* SetAttributeObserverExtension(
williamr@4
   140
                TUid /*aExtensionUid*/) { return NULL; }
williamr@4
   141
williamr@4
   142
    protected:  // Destructor
williamr@4
   143
        /**
williamr@4
   144
         * Destructor.
williamr@4
   145
         */
williamr@4
   146
        ~MVPbkSetAttributeObserver() { }
williamr@4
   147
    };
williamr@4
   148
williamr@4
   149
/**
williamr@4
   150
 * Abstract interface for contact attribute manager.
williamr@4
   151
 *
williamr@4
   152
 * Contact attribute manager can be used to set global attributes such as speed dials 
williamr@4
   153
 * for contacts or fields of contacts. The attributes can be stored in external 
williamr@4
   154
 * databases so that some kind of mapping is maintained between contacts and 
williamr@4
   155
 * attributes. This interface provides unified access to all global attributes.
williamr@4
   156
 */
williamr@4
   157
class MVPbkContactAttributeManager
williamr@4
   158
    {
williamr@4
   159
    public:
williamr@4
   160
        /**
williamr@4
   161
         * Destructor.
williamr@4
   162
         */
williamr@4
   163
        virtual ~MVPbkContactAttributeManager() { }
williamr@4
   164
        
williamr@4
   165
        /**
williamr@4
   166
         * Lists all contacts having the requested type of 
williamr@4
   167
         * attribute asynchronously.
williamr@4
   168
         *
williamr@4
   169
         * @param aAttributeType    Type of the attribute to search for.
williamr@4
   170
         * @param aObserver Observer for the asynchronous process.
williamr@4
   171
         * @return Newly created handle to the process.
williamr@4
   172
         */
williamr@4
   173
        virtual MVPbkContactOperationBase* ListContactsL(
williamr@4
   174
                TUid aAttributeType, 
williamr@4
   175
                MVPbkContactFindObserver& aObserver) = 0;
williamr@4
   176
                
williamr@4
   177
        /**
williamr@4
   178
         * Lists all contacts matching the given attribute asynchronously.
williamr@4
   179
         *
williamr@4
   180
         * @param aAttribute    Attribute prototype to match against.
williamr@4
   181
         * @param aObserver Observer for the asynchronous process.
williamr@4
   182
         * @return Newly created handle to the process.
williamr@4
   183
         */
williamr@4
   184
        virtual MVPbkContactOperationBase* ListContactsL(
williamr@4
   185
                const MVPbkContactAttribute& aAttribute, 
williamr@4
   186
                MVPbkContactFindObserver& aObserver) = 0;
williamr@4
   187
            
williamr@4
   188
        /**
williamr@4
   189
         * Checks if the given contact has the given attribute.
williamr@4
   190
         *
williamr@4
   191
         * @param aAttributeType    Type of the attribute to check for.
williamr@4
   192
         * @param aContact  Contact whose attributes are checked.
williamr@4
   193
         * @return ETrue if aContact has an attribute of aAttributeType,
williamr@4
   194
         *         EFalse otherwise.
williamr@4
   195
         */
williamr@4
   196
        virtual TBool HasContactAttributeL(
williamr@4
   197
                TUid aAttributeType, 
williamr@4
   198
                const MVPbkStoreContact& aContact) const = 0;
williamr@4
   199
                
williamr@4
   200
        /**
williamr@4
   201
         * Checks if the given contact has an attribute matching the 
williamr@4
   202
         * given attribute.
williamr@4
   203
         *
williamr@4
   204
         * @param aAttribute    Attribute prototype to match against.
williamr@4
   205
         * @param aContact  Contact whose attributes are checked.
williamr@4
   206
         * @return ETrue if aContact has an attribute matching the aAttribute,
williamr@4
   207
         *         EFalse otherwise.
williamr@4
   208
         */
williamr@4
   209
        virtual TBool HasContactAttributeL(
williamr@4
   210
                const MVPbkContactAttribute& aAttribute, 
williamr@4
   211
                const MVPbkStoreContact& aContact) const = 0;
williamr@4
   212
williamr@4
   213
        /**
williamr@4
   214
         * Checks if the given contact field has the given attribute.
williamr@4
   215
         * 
williamr@4
   216
         * @param aAttributeType    Type of the attribute to check for.
williamr@4
   217
         * @param aField    Field whose attributes are checked.
williamr@4
   218
         * @return ETrue if aField has an attribute of aAttributeType,
williamr@4
   219
         *         EFalse otherwise.
williamr@4
   220
         */
williamr@4
   221
        virtual TBool HasFieldAttributeL(
williamr@4
   222
                TUid aAttributeType, 
williamr@4
   223
                const MVPbkStoreContactField& aField) const = 0;
williamr@4
   224
                
williamr@4
   225
        /**
williamr@4
   226
         * Checks if the given contact field has an attribute matching 
williamr@4
   227
         * the given attribute.
williamr@4
   228
         *
williamr@4
   229
         * @param aAttribute Attribute prototype to match against.
williamr@4
   230
         * @param aField Contact field whose attribute is checked.
williamr@4
   231
         * @return ETrue if aField has an attribute matching the aAttribute,
williamr@4
   232
         *         EFalse otherwise.
williamr@4
   233
         */
williamr@4
   234
        virtual TBool HasFieldAttributeL(
williamr@4
   235
                const MVPbkContactAttribute& aAttribute, 
williamr@4
   236
                const MVPbkStoreContactField& aField) const = 0;
williamr@4
   237
            
williamr@4
   238
        /**
williamr@4
   239
         * Returns fields with attribute type aAttributeType, or 
williamr@4
   240
         * NULL if there is no fields with that attribute in this 
williamr@4
   241
         * contact.
williamr@4
   242
         *
williamr@4
   243
         * @param aAttributeType Type of the attribute to find for.
williamr@4
   244
         * @param aContact Contact whose attributes are checked.
williamr@4
   245
         */
williamr@4
   246
        virtual MVPbkStoreContactFieldCollection* FindFieldsWithAttributeLC(
williamr@4
   247
                TUid aAttributeType,
williamr@4
   248
                MVPbkStoreContact& aContact) const = 0;
williamr@4
   249
williamr@4
   250
        /**
williamr@4
   251
         * Returns fields with attribute aAttribute, or NULL if there is no
williamr@4
   252
         * fields with that attribute in this contact.
williamr@4
   253
         *
williamr@4
   254
         * @param aAttribute Attribute prototype to match against.
williamr@4
   255
         * @param aContact Contact whose attributes are checked.
williamr@4
   256
         */
williamr@4
   257
        virtual MVPbkStoreContactFieldCollection* FindFieldsWithAttributeLC(
williamr@4
   258
                const MVPbkContactAttribute& aAttribute,
williamr@4
   259
                MVPbkStoreContact& aContact) const = 0;
williamr@4
   260
        
williamr@4
   261
        /**
williamr@4
   262
         * Finds the first field that has the aAttr and returns
williamr@4
   263
         * a reference to the field or NULL if not found.
williamr@4
   264
         *
williamr@4
   265
         * Note: the returned reference will become invalid if 
williamr@4
   266
         * MVPbkStoreContactFieldCollection::FieldAt is called for
williamr@4
   267
         * different field. If this is a problem then use
williamr@4
   268
         * MVPbkStoreContactField::CloneLC for permanent copy of
williamr@4
   269
         * the field.
williamr@4
   270
         *
williamr@4
   271
         * @param aAttr The attribute that is looked for.
williamr@4
   272
         * @param aContact  Contact whose fields are iterated.
williamr@4
   273
         * @return Returns a reference to the field or NULL if not found.
williamr@4
   274
         */
williamr@4
   275
        virtual MVPbkStoreContactField* FindFieldWithAttributeL(
williamr@4
   276
                const MVPbkContactAttribute& aAttr,
williamr@4
   277
                MVPbkStoreContact& aContact) const = 0;
williamr@4
   278
williamr@4
   279
        /**
williamr@4
   280
         * Asynchronously sets the contact attribute for the contact referred 
williamr@4
   281
         * by the given contact link.
williamr@4
   282
         *
williamr@4
   283
         * @param aContactLink  Link to contact whose attribute to set.
williamr@4
   284
         * @param aAttribute    Attribute to set for the contact.
williamr@4
   285
         * @param aObserver Observer for the asynchronous process.
williamr@4
   286
         * @return Newly created handle to the operation.
williamr@4
   287
         */          
williamr@4
   288
        virtual MVPbkContactOperationBase* SetContactAttributeL(
williamr@4
   289
                const MVPbkContactLink& aContactLink, 
williamr@4
   290
                const MVPbkContactAttribute& aAttribute,
williamr@4
   291
                MVPbkSetAttributeObserver& aObserver) = 0;
williamr@4
   292
        /**
williamr@4
   293
         * Asynchronously sets the contact field attribute for the 
williamr@4
   294
         * give contact field.
williamr@4
   295
         *
williamr@4
   296
         * @param aField    Contact field whose attribute to set.
williamr@4
   297
         * @param aAttribute    Attribute to set for the contact field.
williamr@4
   298
         * @param aObserver Observer for the asynchronous process.
williamr@4
   299
         * @return Newly created handle to the operation.
williamr@4
   300
         */
williamr@4
   301
        virtual MVPbkContactOperationBase* SetFieldAttributeL(
williamr@4
   302
                MVPbkStoreContactField& aField, 
williamr@4
   303
                const MVPbkContactAttribute& aAttribute,
williamr@4
   304
                MVPbkSetAttributeObserver& aObserver) = 0;
williamr@4
   305
williamr@4
   306
        /**
williamr@4
   307
         * asynchronously removes the given attribute from the contact 
williamr@4
   308
         * referred by the aContactLink.
williamr@4
   309
         * 
williamr@4
   310
         * @param aContactLink  Link to the contact whose attribute 
williamr@4
   311
         *                      to remove.
williamr@4
   312
         * @param aAttribute    Attribute to remove from the contact.
williamr@4
   313
         * @param aObserver Observer for the asynchronous process.
williamr@4
   314
         * @return Newly created handle to the operation.
williamr@4
   315
         */
williamr@4
   316
        virtual MVPbkContactOperationBase* RemoveContactAttributeL(
williamr@4
   317
                const MVPbkContactLink& aContactLink, 
williamr@4
   318
                const MVPbkContactAttribute& aAttribute,
williamr@4
   319
                MVPbkSetAttributeObserver& aObserver) = 0;
williamr@4
   320
                
williamr@4
   321
        /**
williamr@4
   322
         * asynchronously removes all attributes having the attribute 
williamr@4
   323
         * type aAttributeType from the contact.
williamr@4
   324
         * 
williamr@4
   325
         * @param aContactLink  Link to the contact whose attribute 
williamr@4
   326
         *                      to remove.
williamr@4
   327
         * @param aAttributeType    Type of the attributes to remove 
williamr@4
   328
         *                          from the contact.
williamr@4
   329
         * @param aObserver Observer for the asynchronous process.
williamr@4
   330
         * @return Newly created handle to the operation.
williamr@4
   331
         */
williamr@4
   332
        virtual MVPbkContactOperationBase* RemoveContactAttributeL(
williamr@4
   333
                const MVPbkContactLink& aContactLink, 
williamr@4
   334
                TUid aAttributeType,
williamr@4
   335
                MVPbkSetAttributeObserver& aObserver) = 0;
williamr@4
   336
williamr@4
   337
        /**
williamr@4
   338
         * Asynchronously removes the given attribute from the 
williamr@4
   339
         * given contact field.
williamr@4
   340
         *
williamr@4
   341
         * @param aField    Field whose attribute to remove.
williamr@4
   342
         * @param aAttribute    Attribute to remove from the contact field.
williamr@4
   343
         * @param aObserver Observer for the asynchronous process.
williamr@4
   344
         * @return Newly created handle to the operation.
williamr@4
   345
         */
williamr@4
   346
        virtual MVPbkContactOperationBase* RemoveFieldAttributeL(
williamr@4
   347
                MVPbkStoreContactField& aField, 
williamr@4
   348
                const MVPbkContactAttribute& aAttribute,
williamr@4
   349
                MVPbkSetAttributeObserver& aObserver) = 0;
williamr@4
   350
                
williamr@4
   351
        /**
williamr@4
   352
         * Asynchronously removes all attributes having the attribute 
williamr@4
   353
         * type aAttributeType from the contact field.
williamr@4
   354
         *
williamr@4
   355
         * @param aField    Field whose attribute to remove.
williamr@4
   356
         * @param aAttributeType    Type of the attributes to remove 
williamr@4
   357
         *                          from the contact field.
williamr@4
   358
         * @param aObserver Observer for the asynchronous process.
williamr@4
   359
         * @return Newly created handle to the operation.
williamr@4
   360
         */
williamr@4
   361
        virtual MVPbkContactOperationBase* RemoveFieldAttributeL(
williamr@4
   362
                MVPbkStoreContactField& aField, 
williamr@4
   363
                TUid aAttributeType,
williamr@4
   364
                MVPbkSetAttributeObserver& aObserver) = 0;
williamr@4
   365
williamr@4
   366
        /**
williamr@4
   367
         * Checks if the given contact has the given attribute asynchronously.
williamr@4
   368
         *
williamr@4
   369
         * @param aAttributeType    Type of the attribute to check for.
williamr@4
   370
         * @param aContact  Contact whose attributes are checked.
williamr@4
   371
         * @param aObserver Observer for the asynchronous process.
williamr@4
   372
         * @return Newly created handle to the operation.
williamr@4
   373
         */
williamr@4
   374
        virtual MVPbkContactOperationBase* HasContactAttributeL(
williamr@4
   375
                TUid aAttributeType, 
williamr@4
   376
                const MVPbkStoreContact& aContact,
williamr@4
   377
                MVPbkSingleAttributePresenceObserver& aObserver) const = 0;
williamr@4
   378
                
williamr@4
   379
        /**
williamr@4
   380
         * Checks if the given contact has an attribute matching the 
williamr@4
   381
         * given attribute asynchronously.
williamr@4
   382
         *
williamr@4
   383
         * @param aAttribute    Attribute prototype to match against.
williamr@4
   384
         * @param aContact  Contact whose attributes are checked.
williamr@4
   385
         * @param aObserver Observer for the asynchronous process.
williamr@4
   386
         * @return Newly created handle to the operation.
williamr@4
   387
         */
williamr@4
   388
        virtual MVPbkContactOperationBase* HasContactAttributeL(
williamr@4
   389
                const MVPbkContactAttribute& aAttribute, 
williamr@4
   390
                const MVPbkStoreContact& aContact,
williamr@4
   391
                MVPbkSingleAttributePresenceObserver& aObserver) const = 0;
williamr@4
   392
williamr@4
   393
        /**
williamr@4
   394
         * Checks if the given contact field has the given attribute 
williamr@4
   395
         * asynchronously.
williamr@4
   396
         * 
williamr@4
   397
         * @param aAttributeType    Type of the attribute to check for.
williamr@4
   398
         * @param aField    Field whose attributes are checked.
williamr@4
   399
         * @param aObserver Observer for the asynchronous process.
williamr@4
   400
         * @return Newly created handle to the operation.
williamr@4
   401
         */
williamr@4
   402
        virtual MVPbkContactOperationBase* HasFieldAttributeL(
williamr@4
   403
                TUid aAttributeType, 
williamr@4
   404
                const MVPbkStoreContactField& aField,
williamr@4
   405
                MVPbkSingleAttributePresenceObserver& aObserver) const = 0;
williamr@4
   406
                
williamr@4
   407
        /**
williamr@4
   408
         * Checks if the given contact field has an attribute matching 
williamr@4
   409
         * the given attribute asynchronously.
williamr@4
   410
         *
williamr@4
   411
         * @param aAttribute Attribute prototype to match against.
williamr@4
   412
         * @param aField Contact field whose attribute is checked.
williamr@4
   413
         * @param aObserver Observer for the asynchronous process.
williamr@4
   414
         * @return Newly created handle to the operation.
williamr@4
   415
         */
williamr@4
   416
        virtual MVPbkContactOperationBase* HasFieldAttributeL(
williamr@4
   417
                const MVPbkContactAttribute& aAttribute, 
williamr@4
   418
                const MVPbkStoreContactField& aField,
williamr@4
   419
                MVPbkSingleAttributePresenceObserver& aObserver) const = 0;
williamr@4
   420
            
williamr@4
   421
        /**
williamr@4
   422
         * Initiates an asynchronous operation, which finds the aAttribute type 
williamr@4
   423
         * attributed fields from the contact.
williamr@4
   424
         *
williamr@4
   425
         * @param aAttributeType Type of the attribute to find for.
williamr@4
   426
         * @param aContact Contact whose attributes are checked.
williamr@4
   427
         * @param aObserver Observer for the asynchronous process.
williamr@4
   428
         * @return Newly created handle to the operation.
williamr@4
   429
         */
williamr@4
   430
        virtual MVPbkContactOperationBase* FindFieldsWithAttributeL(
williamr@4
   431
                TUid aAttributeType,
williamr@4
   432
                MVPbkStoreContact& aContact,
williamr@4
   433
                MVPbkMultiAttributePresenceObserver& aObserver) const = 0;
williamr@4
   434
williamr@4
   435
        /**
williamr@4
   436
         * Initiates an asynchronous operation, which finds the aAttribute type 
williamr@4
   437
         * attributed fields from the contact.
williamr@4
   438
         *
williamr@4
   439
         * @param aAttribute Attribute prototype to match against.
williamr@4
   440
         * @param aContact Contact whose attributes are checked.
williamr@4
   441
         * @param aObserver Observer for the asynchronous process.
williamr@4
   442
         * @return Newly created handle to the operation.
williamr@4
   443
         */
williamr@4
   444
        virtual MVPbkContactOperationBase* FindFieldsWithAttributeL(
williamr@4
   445
                const MVPbkContactAttribute& aAttribute,
williamr@4
   446
                MVPbkStoreContact& aContact,
williamr@4
   447
                MVPbkMultiAttributePresenceObserver& aObserver) const = 0;
williamr@4
   448
williamr@4
   449
        /**
williamr@4
   450
         * Returns an extension point for this interface or NULL.
williamr@4
   451
         * @param aExtensionUid Extension identifier.
williamr@4
   452
         * @return Extension point or NULL
williamr@4
   453
         */
williamr@4
   454
        virtual TAny* ContactAttributeManagerExtension(
williamr@4
   455
                TUid /*aExtensionUid*/) { return NULL; }
williamr@4
   456
    };
williamr@4
   457
    
williamr@4
   458
#endif // MVPBKCONTACTATTRIBUTEMANAGER_H
williamr@4
   459
williamr@4
   460
// End of File