remotemgmt_plat/syncml_ds_customization_api/tsrc/exampledevinfextdataplugin/inc/exampledevinfextdatacontainerplugin.h
author hgs
Thu, 19 Aug 2010 17:35:34 +0530
changeset 60 eb6690d0d439
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Example Device Info Extension Data Container Plugin 
hgs
parents:
diff changeset
    15
*  header file.
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __EXAMPLEDEVINFEXTDATACONTAINERPLUGIN_H__
hgs
parents:
diff changeset
    20
#define __EXAMPLEDEVINFEXTDATACONTAINERPLUGIN_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// EXTERNAL INCLUDES
hgs
parents:
diff changeset
    23
#include <nsmldevinfextdatacontainerplugin.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    26
class CDesCArrayFlat;
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
//  CONSTANTS
hgs
parents:
diff changeset
    29
const TUint KExampleDevInfExtDataContainerImplUid = 0x2002DC7D;
hgs
parents:
diff changeset
    30
const TInt KExtensionElementMaxLength = 50;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// CLASS DEFINITION
hgs
parents:
diff changeset
    33
/**
hgs
parents:
diff changeset
    34
 * Type definition for TExampleDevInfExtExtensionItem, which holds
hgs
parents:
diff changeset
    35
 * the contents for a single extension (i.e. XNam value + 0..N 
hgs
parents:
diff changeset
    36
 * XVal values). Note that this type is only for testing purposes,
hgs
parents:
diff changeset
    37
 * e.g. the maximum length of the XNam/XVal elements is set to 
hgs
parents:
diff changeset
    38
 * 50 characters.
hgs
parents:
diff changeset
    39
 */
hgs
parents:
diff changeset
    40
NONSHARABLE_CLASS( TExampleDevInfExtExtensionItem )
hgs
parents:
diff changeset
    41
    {
hgs
parents:
diff changeset
    42
    public:
hgs
parents:
diff changeset
    43
        TBuf8< KExtensionElementMaxLength > iXNam;
hgs
parents:
diff changeset
    44
        RArray< TBuf8 < KExtensionElementMaxLength > > iXValArray;
hgs
parents:
diff changeset
    45
    };
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
// CLASS DEFINITION
hgs
parents:
diff changeset
    49
/**
hgs
parents:
diff changeset
    50
 * CExampleDevInfExtDataContainerPlugin is an example plugin,
hgs
parents:
diff changeset
    51
 * which implements the CNSmlDevInfExtDataContainerPlugin ECom interface.
hgs
parents:
diff changeset
    52
 * The example plugin is primarily used for unit test purposes.
hgs
parents:
diff changeset
    53
 * It allows modifying the XNam & XVal entries stored in the plugin,
hgs
parents:
diff changeset
    54
 * which in turn makes it possible to test the plugin interface
hgs
parents:
diff changeset
    55
 * with different configurations.
hgs
parents:
diff changeset
    56
 * 
hgs
parents:
diff changeset
    57
 * Note that the maximum length for the XNam & XVal is limited to
hgs
parents:
diff changeset
    58
 * 50 characters; with longer strings the values become truncated
hgs
parents:
diff changeset
    59
 * to 50 characters.
hgs
parents:
diff changeset
    60
 */
hgs
parents:
diff changeset
    61
class CExampleDevInfExtDataContainerPlugin : 
hgs
parents:
diff changeset
    62
    public CNSmlDevInfExtDataContainerPlugin
hgs
parents:
diff changeset
    63
    {
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
    public:  // Constructor(s) and destructor
hgs
parents:
diff changeset
    66
        ~CExampleDevInfExtDataContainerPlugin();
hgs
parents:
diff changeset
    67
        CExampleDevInfExtDataContainerPlugin();
hgs
parents:
diff changeset
    68
        void ConstructL();
hgs
parents:
diff changeset
    69
        static CExampleDevInfExtDataContainerPlugin* NewL();
hgs
parents:
diff changeset
    70
    
hgs
parents:
diff changeset
    71
    public: // From CNSmlDevInfExtDataContainerPlugin
hgs
parents:
diff changeset
    72
        TInt GetExtensionCountL();
hgs
parents:
diff changeset
    73
        const TDesC8& GetExtNameL( TInt aExtIndex );
hgs
parents:
diff changeset
    74
        TInt GetExtValueCountL( TInt aExtIndex );
hgs
parents:
diff changeset
    75
        const TDesC8& GetExtValueL( TInt aExtIndex, TInt aValueIndex );
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
    public:  // New methods
hgs
parents:
diff changeset
    78
        /**
hgs
parents:
diff changeset
    79
         * Removes all extension definitions currently configured
hgs
parents:
diff changeset
    80
         *  to the plugin. After a call to this method, the extension
hgs
parents:
diff changeset
    81
         *  count is zero.
hgs
parents:
diff changeset
    82
         */
hgs
parents:
diff changeset
    83
        void ClearExtensions();
hgs
parents:
diff changeset
    84
        
hgs
parents:
diff changeset
    85
        /**
hgs
parents:
diff changeset
    86
         * Inserts a new extension with the given XNam name and XVal value
hgs
parents:
diff changeset
    87
         * to the plugin. If there are multiple XVal to be defined per
hgs
parents:
diff changeset
    88
         * XNam, this method shall be called multiple times with the same
hgs
parents:
diff changeset
    89
         * XNam value.
hgs
parents:
diff changeset
    90
         * 
hgs
parents:
diff changeset
    91
         * @param aXNam XNam value for the extension to be added.
hgs
parents:
diff changeset
    92
         * @param aXVal XVal value for the extension to be added.
hgs
parents:
diff changeset
    93
         */
hgs
parents:
diff changeset
    94
        void InsertExtension( const TDesC8& aXNam, const TDesC8& aXVal );
hgs
parents:
diff changeset
    95
        
hgs
parents:
diff changeset
    96
        /**
hgs
parents:
diff changeset
    97
         * Removes the given extensions from the Plugin. If an extension with
hgs
parents:
diff changeset
    98
         * the given XNam name is not found, does nothing.
hgs
parents:
diff changeset
    99
         * 
hgs
parents:
diff changeset
   100
         * @param aXNam The XNam value for the extension to be removed.
hgs
parents:
diff changeset
   101
         */
hgs
parents:
diff changeset
   102
        void RemoveExtension( const TDesC8& aXNam );
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    private:  // Private utility methods
hgs
parents:
diff changeset
   105
        TInt FindExtensionIndex( const TDesC8& aXNam );
hgs
parents:
diff changeset
   106
        void AddXValToItem( const TInt aIndex, const TDesC8& aXVal );
hgs
parents:
diff changeset
   107
        void AddNewXValItem( const TDesC8& aXNam, const TDesC8& aXVal );
hgs
parents:
diff changeset
   108
        
hgs
parents:
diff changeset
   109
    private:  // Data
hgs
parents:
diff changeset
   110
        RArray< TExampleDevInfExtExtensionItem > iExtensionArray;
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    };
hgs
parents:
diff changeset
   113
        
hgs
parents:
diff changeset
   114
#endif // __EXAMPLEDEVINFEXTDATACONTAINERPLUGIN_H__