epoc32/include/app/CPbkContactItem.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 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: 
williamr@4
    15
*     Phonebook Contact item class.
williamr@4
    16
*
williamr@4
    17
*/
williamr@4
    18
williamr@4
    19
williamr@4
    20
#ifndef __CPbkContactItem_H__
williamr@4
    21
#define __CPbkContactItem_H__
williamr@4
    22
williamr@4
    23
//  INCLUDES
williamr@4
    24
#include <e32base.h>        // CBase, CArrayFixFlat
williamr@4
    25
#include "MPbkFieldData.h"  // MPbkFieldDataArray
williamr@4
    26
#include "PbkFields.hrh"    // TPbkFieldId
williamr@4
    27
#include "TPbkContactItemField.h"
williamr@4
    28
williamr@4
    29
// FORWARD DECLARATIONS
williamr@4
    30
class CPbkFieldsInfo;
williamr@4
    31
class CPbkFieldInfo;
williamr@4
    32
class CContactItemField;
williamr@4
    33
class CContactItem;
williamr@4
    34
class MPbkContactNameFormat;
williamr@4
    35
williamr@4
    36
williamr@4
    37
// CLASS DECLARATION
williamr@4
    38
williamr@4
    39
/**
williamr@4
    40
 * Array of TPbkContactItemField instances.
williamr@4
    41
 */
williamr@4
    42
class CPbkFieldArray : public CArrayFixFlat<TPbkContactItemField>
williamr@4
    43
    {
williamr@4
    44
    public:
williamr@4
    45
        enum
williamr@4
    46
            {
williamr@4
    47
            /// Default array reallocation granularity
williamr@4
    48
            KDefaultGranularity = 8
williamr@4
    49
            };
williamr@4
    50
williamr@4
    51
        /** 
williamr@4
    52
         * Constructor.
williamr@4
    53
         */
williamr@4
    54
        inline CPbkFieldArray() 
williamr@4
    55
            : CArrayFixFlat<TPbkContactItemField>(KDefaultGranularity)
williamr@4
    56
            {
williamr@4
    57
            }
williamr@4
    58
williamr@4
    59
        /**
williamr@4
    60
         * Constructor.
williamr@4
    61
         * @param aGranularity  Reallocation granularity of this array.
williamr@4
    62
         */
williamr@4
    63
        inline CPbkFieldArray(TInt aGranurality) 
williamr@4
    64
            : CArrayFixFlat<TPbkContactItemField>(aGranurality)
williamr@4
    65
            {
williamr@4
    66
            }
williamr@4
    67
    };
williamr@4
    68
williamr@4
    69
williamr@4
    70
/**
williamr@4
    71
 * Phonebook Contact item class. Contact items can be read from the contact
williamr@4
    72
 * database by using the Phonebook engine, @see CPbkContactEngine.
williamr@4
    73
 * This class extends Symbian Contacts model class CContactItem capabilities 
williamr@4
    74
 * to better suit Phonebook application's needs.
williamr@4
    75
 */
williamr@4
    76
class CPbkContactItem : 
williamr@4
    77
        public CBase, public MPbkFieldDataArray
williamr@4
    78
    {
williamr@4
    79
    public:  // Constructor and destructor
williamr@4
    80
        /**
williamr@4
    81
         * Creates an instance of this class.
williamr@4
    82
         *
williamr@4
    83
         * @param aItem         Contact item this object wraps. This object 
williamr@4
    84
         *                      takes ownership of aItem. If this function 
williamr@4
    85
         *                      leaves, ownership is not taken.
williamr@4
    86
         * @param aFieldsInfo   Collection of Phonebook field types.
williamr@4
    87
         * @param aNameFormat   Contact name formatter.
williamr@4
    88
         * @return  A new instance of this class.
williamr@4
    89
         */
williamr@4
    90
        IMPORT_C static CPbkContactItem* NewL(
williamr@4
    91
                CContactItem* aItem, 
williamr@4
    92
                const CPbkFieldsInfo& aFieldsInfo, 
williamr@4
    93
                MPbkContactNameFormat& aNameFormat);
williamr@4
    94
williamr@4
    95
        /**
williamr@4
    96
         * Destructor.
williamr@4
    97
         */
williamr@4
    98
        ~CPbkContactItem();
williamr@4
    99
williamr@4
   100
    public: // CContactItem functions
williamr@4
   101
        /**
williamr@4
   102
         * Returns this contact item's id.
williamr@4
   103
         * @see CContactItem::Id()
williamr@4
   104
         */
williamr@4
   105
        IMPORT_C TContactItemId Id() const;
williamr@4
   106
        
williamr@4
   107
        /**
williamr@4
   108
         * Returns type of this contact item. The contact types are documented in
williamr@4
   109
         * the Symbian Contacts model CContactItem::Type().
williamr@4
   110
         * @return Contact type.
williamr@4
   111
         * @see CContactItem::Type()
williamr@4
   112
         */
williamr@4
   113
        IMPORT_C TUid Type() const;
williamr@4
   114
williamr@4
   115
        /**
williamr@4
   116
         * Gets the groups this contact belongs to.
williamr@4
   117
         * @return Array of group ids. Caller owns the array.
williamr@4
   118
         * @see CContactItem::GroupsJoinedLC()
williamr@4
   119
         */
williamr@4
   120
        IMPORT_C CContactIdArray* GroupsJoinedLC() const;
williamr@4
   121
williamr@4
   122
        /**
williamr@4
   123
         * Converts this object to a CContactItem. Use only if this class's API
williamr@4
   124
         * is not enough.
williamr@4
   125
         * @return  The underlying Symbian Contacts model contact item object.
williamr@4
   126
         */
williamr@4
   127
        IMPORT_C CContactItem& ContactItem();
williamr@4
   128
williamr@4
   129
        /**
williamr@4
   130
         * Converts this object to a const CContactItem. Use only if this 
williamr@4
   131
         * class's API is not enough.
williamr@4
   132
         * @return  The underlying Symbian Contacts model contact item object.
williamr@4
   133
         */
williamr@4
   134
        IMPORT_C const CContactItem& ContactItem() const;
williamr@4
   135
williamr@4
   136
    public:  // Field set operations
williamr@4
   137
        /**
williamr@4
   138
         * Returns the field set of this contact item.
williamr@4
   139
         * @return  Field array of this contact item.
williamr@4
   140
         */
williamr@4
   141
        IMPORT_C CPbkFieldArray& CardFields() const;
williamr@4
   142
williamr@4
   143
        /**
williamr@4
   144
         * Creates a new field based on aFieldInfo and adds it to this contact.
williamr@4
   145
         *
williamr@4
   146
         * @param aFieldInfo    Type of field to create.
williamr@4
   147
         * @return The created field.
williamr@4
   148
         */
williamr@4
   149
      	IMPORT_C TPbkContactItemField& AddFieldL(CPbkFieldInfo& aFieldInfo);
williamr@4
   150
williamr@4
   151
        /**
williamr@4
   152
         * Returns ETrue if data of type aFieldInfo can be added to this 
williamr@4
   153
         * contact.
williamr@4
   154
         * @param aFieldInfo    The field type that we are trying to add.
williamr@4
   155
         * @return  ETrue if the contact can accept this type of data, EFalse
williamr@4
   156
         *          otherwise.
williamr@4
   157
         */
williamr@4
   158
        IMPORT_C TBool CanAcceptDataOfType(CPbkFieldInfo& aFieldInfo) const;
williamr@4
   159
williamr@4
   160
        /**
williamr@4
   161
         * Finds an unused or creates a new field based on aFieldInfo. An 
williamr@4
   162
         * unused field is a field that is in the contact template, but
williamr@4
   163
         * doesnt contain any data, in other words it is empty. So a unused 
williamr@4
   164
         * field is preferred ad the next field to add user data before 
williamr@4
   165
         * adding a new field to the contact.
williamr@4
   166
         *
williamr@4
   167
         * @param aFieldInfo    Type of field to search or create.
williamr@4
   168
         * @return  Pointer to the found or created field. NULL only if<br>
williamr@4
   169
         *          field exists AND <br>
williamr@4
   170
         *          field is nonempty AND <br>
williamr@4
   171
         *          aFieldInfo.Multiplicity()==EPbkFieldMultiplicityOne.
williamr@4
   172
         */
williamr@4
   173
      	IMPORT_C TPbkContactItemField* AddOrReturnUnusedFieldL
williamr@4
   174
            (CPbkFieldInfo& aFieldInfo);
williamr@4
   175
williamr@4
   176
        /**
williamr@4
   177
         * Deletes field at aIndex.
williamr@4
   178
         * @param aIndex    Field index to delete from the contact item.
williamr@4
   179
         */
williamr@4
   180
        IMPORT_C void RemoveField(TInt aIndex);
williamr@4
   181
williamr@4
   182
        /**
williamr@4
   183
         * Updates this contacts field set to match the field set of
williamr@4
   184
         * the owned CContactItem. No need to call unless contact item's
williamr@4
   185
         * field set has been manipulated directly. In other words 
williamr@4
   186
         * remaps the field types of this contact item from the underlying
williamr@4
   187
         * Symbian Contacts model contact item.
williamr@4
   188
         * @param aFieldsInfo   The new fields set for this contact.
williamr@4
   189
         */
williamr@4
   190
        IMPORT_C void UpdateFieldSetL(const CPbkFieldsInfo& aFieldsInfo);
williamr@4
   191
williamr@4
   192
    public:  // Field searching
williamr@4
   193
        /**
williamr@4
   194
         * Returns first field matching aFieldId.
williamr@4
   195
         *
williamr@4
   196
         * @param aFieldId  Field id to search.
williamr@4
   197
         * @return First field matching aFieldId, NULL if none found.
williamr@4
   198
         */
williamr@4
   199
        IMPORT_C TPbkContactItemField* FindField(TPbkFieldId aFieldId) const;
williamr@4
   200
williamr@4
   201
        /**
williamr@4
   202
         * Returns first field matching aFieldId starting from aIndex.
williamr@4
   203
         *
williamr@4
   204
         * @param aFieldId  Field id to search.
williamr@4
   205
         * @param aIndex    Input: field index where to start the search from,
williamr@4
   206
         *                  output: index of the found field or -1 if not found.
williamr@4
   207
         * @return Field matching aFieldId, NULL if none found.
williamr@4
   208
         */
williamr@4
   209
        IMPORT_C TPbkContactItemField* FindField
williamr@4
   210
            (TPbkFieldId aFieldId, TInt& aIndex) const;
williamr@4
   211
williamr@4
   212
        /**
williamr@4
   213
         * Returns first field matching aFieldInfo.
williamr@4
   214
         *
williamr@4
   215
         * @param aFieldInfo    Field type to find from the contact.
williamr@4
   216
         * @return First field matching aFieldInfo, NULL if none found.
williamr@4
   217
         */
williamr@4
   218
        IMPORT_C TPbkContactItemField* FindField(const CPbkFieldInfo& aFieldInfo) const;
williamr@4
   219
williamr@4
   220
        /**
williamr@4
   221
         * Returns first field matching aFieldInfo starting from aIndex.
williamr@4
   222
         *
williamr@4
   223
         * @param aFieldInfo    Field type to find from the contact.
williamr@4
   224
         * @param aIndex    Input: field index where to start the search from,
williamr@4
   225
         *                  output: index of the found field or -1 if not found.
williamr@4
   226
         * @return Field matching aFieldInfo, NULL if none found.
williamr@4
   227
         */
williamr@4
   228
        IMPORT_C TPbkContactItemField* FindField
williamr@4
   229
            (const CPbkFieldInfo& aFieldInfo, TInt& aIndex) const;
williamr@4
   230
williamr@4
   231
        /**
williamr@4
   232
         * Returns aField's index from this contact item.
williamr@4
   233
         *
williamr@4
   234
         * @param aField    Field to search for. Field is matched with 
williamr@4
   235
         *                  TPbkContactItemField::IsSame -function.
williamr@4
   236
         * @return  Index of aField in this contact item's field set, 
williamr@4
   237
         *          KErrNotFound if not found.
williamr@4
   238
         * @see TPbkContactItemField::IsSame
williamr@4
   239
         */
williamr@4
   240
        IMPORT_C TInt FindFieldIndex(const TPbkContactItemField& aField) const;
williamr@4
   241
williamr@4
   242
        /**
williamr@4
   243
         * Returns aField's index from ContactItem()'s CardFields() or 
williamr@4
   244
         * KErrNotFound if not found.
williamr@4
   245
         * @param aField    The field which index we are querying.
williamr@4
   246
         * @return The fields index in this contact item, KErrNotFound is not found.
williamr@4
   247
         */
williamr@4
   248
        IMPORT_C TInt FindContactItemFieldIndex(const CContactItemField& aField) const;
williamr@4
   249
williamr@4
   250
        /**
williamr@4
   251
         * Searches phone number fields of this contact for a match.
williamr@4
   252
         * Uses PbkEngUtils::ContainSameDigits to perform the matching.
williamr@4
   253
         *
williamr@4
   254
         * @param aNumber   Phone number to match to.
williamr@4
   255
         * @param aNumberOfDigits   Number of digits to compare from the end 
williamr@4
   256
         *                          of the phone numbers. Full comparison
williamr@4
   257
         *                          performed if 0.
williamr@4
   258
         * @param aIndex    Input: field index where to start the search from,
williamr@4
   259
         *                  output: index of the found field or KErrNotFound if not found.
williamr@4
   260
         * @return The matching field, NULL if not found.
williamr@4
   261
         * @see PbkEngUtils::ContainSameDigits
williamr@4
   262
         */
williamr@4
   263
        IMPORT_C TPbkContactItemField* FindNextFieldWithPhoneNumber
williamr@4
   264
            (const TDesC& aNumber,
williamr@4
   265
            TInt aNumberOfDigits,
williamr@4
   266
            TInt &aIndex) const;
williamr@4
   267
williamr@4
   268
        /**
williamr@4
   269
         * Searches for a text in this contact's fields. Uses TDesC::FindF()
williamr@4
   270
         * search the text from the fields.
williamr@4
   271
         *
williamr@4
   272
         * @param aIndex    Input: field index from where to start the search,
williamr@4
   273
         *                  Output: index of the found field or KErrNotFound 
williamr@4
   274
         *                  if not found.
williamr@4
   275
         * @return The matching field, NULL if not found.
williamr@4
   276
         * @see TDesC::FindF
williamr@4
   277
         */
williamr@4
   278
        IMPORT_C TPbkContactItemField* FindNextFieldWithText
williamr@4
   279
            (const TDesC& aText,
williamr@4
   280
            TInt& aIndex) const;
williamr@4
   281
williamr@4
   282
        /**
williamr@4
   283
         * Returns field matching aField from this contact item's field set, NULL if
williamr@4
   284
         * not found.
williamr@4
   285
         * @param aField    The field that we a mathing.
williamr@4
   286
         * @return  Matching field or NULL if not found.
williamr@4
   287
         * @postcond !FindSameField(field) || FindSameField(field)->IsSame(field)
williamr@4
   288
         */
williamr@4
   289
        IMPORT_C TPbkContactItemField* FindSameField
williamr@4
   290
            (const TPbkContactItemField& aField) const;
williamr@4
   291
williamr@4
   292
    public: // Contact presentation
williamr@4
   293
        /**
williamr@4
   294
         * Gets a title text for this contact or localized unnamed text.
williamr@4
   295
         *
williamr@4
   296
         * @return  A buffer containing the title or localized unnamed text if no
williamr@4
   297
         *          title can be generated. Caller is responsible for deleting 
williamr@4
   298
         *          the returned buffer.
williamr@4
   299
         */
williamr@4
   300
        IMPORT_C HBufC* GetContactTitleL() const;
williamr@4
   301
williamr@4
   302
        /**
williamr@4
   303
         * Gets a title text for this contact.
williamr@4
   304
         *
williamr@4
   305
         * @return  A buffer containing the title text, NULL if title is empty.
williamr@4
   306
         *          Caller is responsible for deleting the returned buffer.
williamr@4
   307
         */
williamr@4
   308
        IMPORT_C HBufC* GetContactTitleOrNullL() const;
williamr@4
   309
williamr@4
   310
        /**
williamr@4
   311
         * Returns an Phonebook icon id for a contact. This icon id is the icon
williamr@4
   312
         * of the field that is set as the default number to call.
williamr@4
   313
         *
williamr@4
   314
         * @return  Icon index for this contact, EPbkNullIconId for no icon.
williamr@4
   315
         */
williamr@4
   316
        IMPORT_C TPbkIconId ContactIconIdL() const;
williamr@4
   317
williamr@4
   318
    public:  // Defaults
williamr@4
   319
        /**
williamr@4
   320
         * Returns the default phone number field of this contact.
williamr@4
   321
         *
williamr@4
   322
         * @return  Default phone number field of this contact, 
williamr@4
   323
         *          NULL if no default set.
williamr@4
   324
         */
williamr@4
   325
        IMPORT_C TPbkContactItemField* DefaultPhoneNumberField() const;
williamr@4
   326
williamr@4
   327
        /**
williamr@4
   328
         * Sets this contact's default phone number field to aField.
williamr@4
   329
         *
williamr@4
   330
         * @param aField    Field to set as default, if NULL phone number
williamr@4
   331
         *                  default is removed. Guaranteed not to leave if
williamr@4
   332
         *                  aField is NULL.
williamr@4
   333
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   334
         * @exception KErrNotSupported  If aField is not a phone number field.
williamr@4
   335
         */
williamr@4
   336
        IMPORT_C void SetDefaultPhoneNumberFieldL
williamr@4
   337
            (TPbkContactItemField* aField);
williamr@4
   338
williamr@4
   339
        /**
williamr@4
   340
         * Removes phone number default from this contact.
williamr@4
   341
         *
williamr@4
   342
         * @postcond DefaultPhoneNumberField()==NULL.
williamr@4
   343
         */
williamr@4
   344
        IMPORT_C void RemoveDefaultPhoneNumberField();
williamr@4
   345
williamr@4
   346
        /**
williamr@4
   347
         * Returns the default video number field of this contact.
williamr@4
   348
         *
williamr@4
   349
         * @return  Default video number field of this contact, 
williamr@4
   350
         *          NULL if no default set.
williamr@4
   351
         */
williamr@4
   352
        IMPORT_C TPbkContactItemField* DefaultVideoNumberField() const;
williamr@4
   353
williamr@4
   354
        /**
williamr@4
   355
         * Sets this contact's default video number field to aField.
williamr@4
   356
         *
williamr@4
   357
         * @param aField    Field to set as default, if NULL video number
williamr@4
   358
         *                  default is removed. Guaranteed not to leave if
williamr@4
   359
         *                  aField is NULL.
williamr@4
   360
         * @exception KErrNotFound  if aField is not this contact's field.
williamr@4
   361
         * @exception KErrNotSupported  if aField is not a phone number field.
williamr@4
   362
         */
williamr@4
   363
        IMPORT_C void SetDefaultVideoNumberFieldL
williamr@4
   364
            (TPbkContactItemField* aField);
williamr@4
   365
williamr@4
   366
        /**
williamr@4
   367
         * Removes video number default from this contact.
williamr@4
   368
         *
williamr@4
   369
         * @postcond DefaultVideoNumberField()==NULL.
williamr@4
   370
         */
williamr@4
   371
        IMPORT_C void RemoveDefaultVideoNumberField();
williamr@4
   372
williamr@4
   373
        /**
williamr@4
   374
         * Returns the default SMS field of this contact.
williamr@4
   375
         *
williamr@4
   376
         * @return  Default SMS field of this contact, 
williamr@4
   377
         *          NULL if no default set.
williamr@4
   378
         */
williamr@4
   379
        IMPORT_C TPbkContactItemField* DefaultSmsField() const;
williamr@4
   380
williamr@4
   381
        /**
williamr@4
   382
         * Sets this contact's default SMS field to aField.
williamr@4
   383
         *
williamr@4
   384
         * @param aField    Field to set as default, if NULL SMS
williamr@4
   385
         *                  default is removed. Guaranteed not to leave if
williamr@4
   386
         *                  aField is NULL.
williamr@4
   387
         * @exception KErrNotFound  if aField is not this contact's field.
williamr@4
   388
         * @exception KErrNotSupported  if aField is not a phone number field.
williamr@4
   389
         */
williamr@4
   390
        IMPORT_C void SetDefaultSmsFieldL(TPbkContactItemField* aField);
williamr@4
   391
williamr@4
   392
        /**
williamr@4
   393
         * Removes SMS field default from this contact.
williamr@4
   394
         *
williamr@4
   395
         * @postcond DefaultSmsField()==NULL.
williamr@4
   396
         */
williamr@4
   397
        IMPORT_C void RemoveDefaultSmsField();
williamr@4
   398
williamr@4
   399
        /**
williamr@4
   400
         * Returns the default email field of this contact.
williamr@4
   401
         *
williamr@4
   402
         * @return  Default email field of this contact, 
williamr@4
   403
         *          NULL if no default set.
williamr@4
   404
         */
williamr@4
   405
        IMPORT_C TPbkContactItemField* DefaultEmailField() const;
williamr@4
   406
williamr@4
   407
        /**
williamr@4
   408
         * Sets this contact's default email address field to aField.
williamr@4
   409
         *
williamr@4
   410
         * @param aField    Field to set as default, if NULL email 
williamr@4
   411
         *                  default is removed. Guaranteed not to leave if
williamr@4
   412
         *                  aField is NULL.
williamr@4
   413
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   414
         * @exception KErrNotSupported  If aField is not an email field.
williamr@4
   415
         */
williamr@4
   416
        IMPORT_C void SetDefaultEmailFieldL(TPbkContactItemField* aField);
williamr@4
   417
williamr@4
   418
        /**
williamr@4
   419
         * Removes email field default from this contact.
williamr@4
   420
         *
williamr@4
   421
         * @postcond DefaultEmailField()==NULL.
williamr@4
   422
         */
williamr@4
   423
        IMPORT_C void RemoveDefaultEmailField();
williamr@4
   424
williamr@4
   425
        /**
williamr@4
   426
         * Returns the default Mms field of this contact.
williamr@4
   427
         *
williamr@4
   428
         * @return  Default Mms field of this contact, 
williamr@4
   429
         *          NULL if no default set.
williamr@4
   430
         */
williamr@4
   431
        IMPORT_C TPbkContactItemField* DefaultMmsField() const;
williamr@4
   432
williamr@4
   433
        /**
williamr@4
   434
         * Sets this contact's default MMS address field to aField.
williamr@4
   435
         *
williamr@4
   436
         * @param aField    Field to set as default, if NULL MMS 
williamr@4
   437
         *                  default is removed. Guaranteed not to leave if
williamr@4
   438
         *                  aField is NULL.
williamr@4
   439
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   440
         * @exception KErrNotSupported  If aField is not an email field.
williamr@4
   441
         */
williamr@4
   442
        IMPORT_C void SetDefaultMmsFieldL(TPbkContactItemField* aField);
williamr@4
   443
williamr@4
   444
        /**
williamr@4
   445
         * Removes MMS field default from this contact.
williamr@4
   446
         *
williamr@4
   447
         * @postcond DefaultMmsField()==NULL.
williamr@4
   448
         */
williamr@4
   449
        IMPORT_C void RemoveDefaultMmsField();
williamr@4
   450
williamr@4
   451
        /**
williamr@4
   452
         * Returns the default Poc field of this contact.
williamr@4
   453
         *
williamr@4
   454
         * @return  Default Poc field of this contact, 
williamr@4
   455
         *          NULL if no default set.
williamr@4
   456
         */
williamr@4
   457
        IMPORT_C TPbkContactItemField* DefaultPocField() const;
williamr@4
   458
williamr@4
   459
        /**
williamr@4
   460
         * Sets this contact's default POC address field to aField.
williamr@4
   461
         *
williamr@4
   462
         * @param aField    Field to set as default, if NULL POC 
williamr@4
   463
         *                  default is removed. Guaranteed not to leave if
williamr@4
   464
         *                  aField is NULL.
williamr@4
   465
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   466
         * @exception KErrNotSupported  If aField is not an email field.
williamr@4
   467
         */
williamr@4
   468
        IMPORT_C void SetDefaultPocFieldL(TPbkContactItemField* aField);
williamr@4
   469
williamr@4
   470
        /**
williamr@4
   471
         * Removes POC field default from this contact.
williamr@4
   472
         *
williamr@4
   473
         * @postcond DefaultPocField()==NULL.
williamr@4
   474
         */
williamr@4
   475
        IMPORT_C void RemoveDefaultPocField();
williamr@4
   476
        
williamr@4
   477
        /**
williamr@4
   478
         * Returns the default VOIP field of this contact.
williamr@4
   479
         *
williamr@4
   480
         * @return  Default VOIP field of this contact, 
williamr@4
   481
         *          NULL if no default set.
williamr@4
   482
         */
williamr@4
   483
        IMPORT_C TPbkContactItemField* DefaultVoipField() const;
williamr@4
   484
williamr@4
   485
        /**
williamr@4
   486
         * Sets this contact's default VOIP address field to aField.
williamr@4
   487
         *
williamr@4
   488
         * @param aField    Field to set as default, if NULL VOIP 
williamr@4
   489
         *                  default is removed. Guaranteed not to leave if
williamr@4
   490
         *                  aField is NULL.
williamr@4
   491
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   492
         * @exception KErrNotSupported  If aField is not an email field.
williamr@4
   493
         */
williamr@4
   494
        IMPORT_C void SetDefaultVoipFieldL(TPbkContactItemField* aField);
williamr@4
   495
williamr@4
   496
        /**
williamr@4
   497
         * Removes VOIP field default from this contact.
williamr@4
   498
         *
williamr@4
   499
         * @postcond DefaultVoipField()==NULL.
williamr@4
   500
         */
williamr@4
   501
        IMPORT_C void RemoveDefaultVoipField();
williamr@4
   502
        
williamr@4
   503
        /**
williamr@4
   504
         * Returns the default EmailOverSms field of this contact.
williamr@4
   505
         *
williamr@4
   506
         * @return  Default EmailOverSms field of this contact, 
williamr@4
   507
         *          NULL if no default set.
williamr@4
   508
         */
williamr@4
   509
        IMPORT_C TPbkContactItemField* DefaultEmailOverSmsField() const;
williamr@4
   510
        
williamr@4
   511
        /**
williamr@4
   512
         * Sets this contact's default Sms With Email address field to aField.
williamr@4
   513
         *
williamr@4
   514
         * @param aField    Field to set as default, if NULL Sms With Email 
williamr@4
   515
         *                  default is removed. Guaranteed not to leave if
williamr@4
   516
         *                  aField is NULL.
williamr@4
   517
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   518
         * @exception KErrNotSupported  If aField is not an email field.
williamr@4
   519
         */
williamr@4
   520
        IMPORT_C void SetDefaultEmailOverSmsFieldL(TPbkContactItemField* aField);
williamr@4
   521
        
williamr@4
   522
        /**
williamr@4
   523
         * Removes EmailOverSms field default from this contact.
williamr@4
   524
         *
williamr@4
   525
         * @postcond DefaultEmailOverSmsField()==NULL.
williamr@4
   526
         */
williamr@4
   527
        IMPORT_C void RemoveDefaultEmailOverSmsField();
williamr@4
   528
williamr@4
   529
    public:  // Voice tags
williamr@4
   530
        /**
williamr@4
   531
         * Returns the voice tag field of this contact.
williamr@4
   532
         * NOTE: If this function is unable to make a connection to 
williamr@4
   533
         * the voice tag handling system for some reason, this function will 
williamr@4
   534
         * return null.
williamr@4
   535
         *
williamr@4
   536
         * @return  Voice tag field of this contact, 
williamr@4
   537
         *          NULL if no voice tag set.
williamr@4
   538
         * @deprecated
williamr@4
   539
         */
williamr@4
   540
        IMPORT_C TPbkContactItemField* VoiceTagField() const;
williamr@4
   541
williamr@4
   542
        /**
williamr@4
   543
         * Sets this contact's voice tag field to aField.
williamr@4
   544
         *
williamr@4
   545
         * @param aField    Field to set as default, if NULL voice tag mark
williamr@4
   546
         *                  is removed. Guaranteed not to leave if
williamr@4
   547
         *                  aField is NULL.
williamr@4
   548
         * @exception KErrNotFound  If aField is not this contact's field.
williamr@4
   549
         * @exception KErrNotSupported  If aField is not a phone number field.
williamr@4
   550
         * @postcond (aField && VoiceTagField()->IsSame(*aField)) || (!aField && !VoiceTagField())
williamr@4
   551
         * @deprecated
williamr@4
   552
         */
williamr@4
   553
        IMPORT_C void SetVoiceTagFieldL(TPbkContactItemField* aField);
williamr@4
   554
williamr@4
   555
        /**
williamr@4
   556
         * Removes any voice tag mark from this contact.
williamr@4
   557
         *
williamr@4
   558
         * @postcond VoiceTagField()==NULL.
williamr@4
   559
         * @deprecated
williamr@4
   560
         */
williamr@4
   561
        IMPORT_C void RemoveVoiceTagField();
williamr@4
   562
williamr@4
   563
    public:  // from MPbkFieldDataArray
williamr@4
   564
        TInt PbkFieldCount() const;
williamr@4
   565
        MPbkFieldData& PbkFieldAt(TInt aIndex);
williamr@4
   566
        const MPbkFieldData& PbkFieldAt(TInt aIndex) const;
williamr@4
   567
williamr@4
   568
    public: // Phonebook internal functions, do not call
williamr@4
   569
        /**
williamr@4
   570
         * @internal
williamr@4
   571
         * Prepares this contact for saving into the contact database.
williamr@4
   572
         * @see PrepareAfterLoad
williamr@4
   573
         * @deprecated
williamr@4
   574
         */
williamr@4
   575
        void PrepareForSaveL();
williamr@4
   576
williamr@4
   577
        /**
williamr@4
   578
         * @internal
williamr@4
   579
         * Prepares this contact after loading it from the contact database.
williamr@4
   580
         * @see PrepareForSaveL
williamr@4
   581
         * @deprecated
williamr@4
   582
         */
williamr@4
   583
        void PrepareAfterLoadL();
williamr@4
   584
        
williamr@4
   585
    private: // Implementation
williamr@4
   586
        CPbkContactItem(MPbkContactNameFormat& aNameFormat);
williamr@4
   587
        void ConstructL(CContactItem* aItem, const CPbkFieldsInfo& aFieldsInfo);
williamr@4
   588
        void CreateFieldArrayL(CContactItem& aContactItem, const CPbkFieldsInfo& aFieldsInfo);
williamr@4
   589
        TInt InsertionPos(const TPbkContactItemField& aField) const;
williamr@4
   590
        __DECLARE_TEST;
williamr@4
   591
        typedef CPbkContactItem SelfType;
williamr@4
   592
williamr@4
   593
    private:    // Data
williamr@4
   594
        /// Own: Embedded contact item.
williamr@4
   595
        CContactItem* iItem;
williamr@4
   596
        /// Own: array of phonebook contact item fields
williamr@4
   597
        CPbkFieldArray iFields;
williamr@4
   598
        /// Ref: Contact name formatting API
williamr@4
   599
        MPbkContactNameFormat& iNameFormat;
williamr@4
   600
williamr@4
   601
    private:  // Friend declarations
williamr@4
   602
        friend IMPORT_C TBool operator==
williamr@4
   603
            (const CPbkContactItem& aLeft, const CPbkContactItem& aRight);
williamr@4
   604
    };
williamr@4
   605
williamr@4
   606
williamr@4
   607
// FUNCTION DECLARATIONS
williamr@4
   608
williamr@4
   609
/**
williamr@4
   610
 * Returns ETrue if aLeft and aRight contents are the same.
williamr@4
   611
 */
williamr@4
   612
IMPORT_C TBool operator==
williamr@4
   613
    (const CPbkContactItem& aLeft, const CPbkContactItem& aRight);
williamr@4
   614
williamr@4
   615
/**
williamr@4
   616
 * Returns ETrue if aLeft and aRight contents differ.
williamr@4
   617
 */
williamr@4
   618
inline TBool operator!=
williamr@4
   619
    (const CPbkContactItem& aLeft, const CPbkContactItem& aRight)
williamr@4
   620
    {
williamr@4
   621
    return !(aLeft==aRight);
williamr@4
   622
    }
williamr@4
   623
williamr@4
   624
williamr@4
   625
#endif // __CPbkContactItem_H__
williamr@4
   626
            
williamr@4
   627
// End of File