localconnectivityservice/headset/inc/finder.h
author hgs
Thu, 04 Nov 2010 15:31:42 +0800
changeset 60 841f70763fbe
parent 29 3ae5cb0b4c02
permissions -rw-r--r--
201044_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
/*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
* All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
* Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
* Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
* Description:  Hid headset field finder 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
 *
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
#ifndef T_FINDER_H
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
#define T_FINDER_H
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
#include <e32std.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
#include "hidreportroot.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
/**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
 * Headset finder
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
 *
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
 * Field finder for the consumer/multimedia keys field.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
 *
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
 */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
class THeadsetFinder : public MHidFieldFinder
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
public:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
    // From MHidFieldFinder
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
     * From MHidFieldFinder
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
     * Called by THidFieldSearch::SearchL() during traversal of the
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
     * report descriptor tree when a CCollection is encountered. It
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
     * will be called once, and only once, for every CCollection in the
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
     * descriptor. It is not called for the root collection
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
     * (the CReportRoot).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
     * @param aCollection A pointer to the collection object.     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
     * @return ETrue if the contents of this collection (any child CField
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
     *         or CCollection objects) should be examined.  A driver would return
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
     *         EFalse if a collection was not of a compatible type, for
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
     *         example if the usage page was inappropriate.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
    virtual TBool BeginCollection( const CCollection *aCollection );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
     * From MHidFieldFinder
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
     * Called by THidFieldSearch::SearchL() during traversal of the
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
     * report descriptor tree when all CFields and child CCollections
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
     * of a CCollection have been examined.  It will be called once,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
     * and only once, for every CCollection in the descriptor. It is
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
     * not called for the root collection (the CReportRoot).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
     * @param aCollection Collection pointer
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
     * @return ETrue if the search (tree traversal) should
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
     *         continue. A driver returns EFalse if it has finished examining
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
     *         the whole descriptor, in general this will be if it has
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
     *         established that it is compatible with the report descriptor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
    virtual TBool EndCollection( const CCollection *aCollection );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
     * From MHidFieldFinder
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
     * Called once for each CField in a CCollection by
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
     * THidFieldSearch::SearchL() during the traversal of a report
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
     * descriptor tree.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
     * @param aField THe pointer to field     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
    virtual void Field( const CField* aField );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
public:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
    /** 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
     * Constructor 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
    THeadsetFinder();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
     * Check whether supported fields has been found.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
     * @return ETrue if it has.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
    TBool Found() const;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    90
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
     * Check whether a given field contains the consumer usages.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
     * @param aField Pointer to the field to test.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
     * @return ETrue if it does.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
    TBool IsConsumer( const CField* aField ) const;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
     * Check whether a given field contains the telephony usages.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
     * @param aField Pointer to the field to test.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
     * @return ETrue if it does.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   103
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   104
    TBool IsTelephony( const CField* aField ) const;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   106
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
     * Reset the field pointer array
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
     *
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
    void EmptyList();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   113
     * Returns number of supported fields.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
     *
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
     * @return Field count
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
    TInt FieldCount();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
     * Read the field pointer from array at specified index
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
     *     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
     * @param aIndex Index to the field pointer array
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
     * @return Pointer to the desired field
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
    CField* GetFieldAtIndex( TInt aIndex );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
private:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
     *  Pointer to the top level application collection being searched. 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
     *  Not own.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
    const CCollection* iAppCollection;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
    /**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
     *  Array of field pointers:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
     *  Not own.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
     */
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
    RPointerArray<CField> iFieldList;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
    };
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
#endif