diff -r f5b689a4f7a2 -r e0c1916b8ddc remotemgmt_plat/syncml_ds_customization_api/tsrc/exampledevinfextdataplugin/inc/exampledevinfextdatacontainerplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotemgmt_plat/syncml_ds_customization_api/tsrc/exampledevinfextdataplugin/inc/exampledevinfextdatacontainerplugin.h Thu Sep 02 21:22:11 2010 +0300 @@ -0,0 +1,114 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Example Device Info Extension Data Container Plugin +* header file. +* +*/ + +#ifndef __EXAMPLEDEVINFEXTDATACONTAINERPLUGIN_H__ +#define __EXAMPLEDEVINFEXTDATACONTAINERPLUGIN_H__ + +// EXTERNAL INCLUDES +#include + +// FORWARD DECLARATIONS +class CDesCArrayFlat; + +// CONSTANTS +const TUint KExampleDevInfExtDataContainerImplUid = 0x2002DC7D; +const TInt KExtensionElementMaxLength = 50; + +// CLASS DEFINITION +/** + * Type definition for TExampleDevInfExtExtensionItem, which holds + * the contents for a single extension (i.e. XNam value + 0..N + * XVal values). Note that this type is only for testing purposes, + * e.g. the maximum length of the XNam/XVal elements is set to + * 50 characters. + */ +NONSHARABLE_CLASS( TExampleDevInfExtExtensionItem ) + { + public: + TBuf8< KExtensionElementMaxLength > iXNam; + RArray< TBuf8 < KExtensionElementMaxLength > > iXValArray; + }; + + +// CLASS DEFINITION +/** + * CExampleDevInfExtDataContainerPlugin is an example plugin, + * which implements the CNSmlDevInfExtDataContainerPlugin ECom interface. + * The example plugin is primarily used for unit test purposes. + * It allows modifying the XNam & XVal entries stored in the plugin, + * which in turn makes it possible to test the plugin interface + * with different configurations. + * + * Note that the maximum length for the XNam & XVal is limited to + * 50 characters; with longer strings the values become truncated + * to 50 characters. + */ +class CExampleDevInfExtDataContainerPlugin : + public CNSmlDevInfExtDataContainerPlugin + { + + public: // Constructor(s) and destructor + ~CExampleDevInfExtDataContainerPlugin(); + CExampleDevInfExtDataContainerPlugin(); + void ConstructL(); + static CExampleDevInfExtDataContainerPlugin* NewL(); + + public: // From CNSmlDevInfExtDataContainerPlugin + TInt GetExtensionCountL(); + const TDesC8& GetExtNameL( TInt aExtIndex ); + TInt GetExtValueCountL( TInt aExtIndex ); + const TDesC8& GetExtValueL( TInt aExtIndex, TInt aValueIndex ); + + public: // New methods + /** + * Removes all extension definitions currently configured + * to the plugin. After a call to this method, the extension + * count is zero. + */ + void ClearExtensions(); + + /** + * Inserts a new extension with the given XNam name and XVal value + * to the plugin. If there are multiple XVal to be defined per + * XNam, this method shall be called multiple times with the same + * XNam value. + * + * @param aXNam XNam value for the extension to be added. + * @param aXVal XVal value for the extension to be added. + */ + void InsertExtension( const TDesC8& aXNam, const TDesC8& aXVal ); + + /** + * Removes the given extensions from the Plugin. If an extension with + * the given XNam name is not found, does nothing. + * + * @param aXNam The XNam value for the extension to be removed. + */ + void RemoveExtension( const TDesC8& aXNam ); + + private: // Private utility methods + TInt FindExtensionIndex( const TDesC8& aXNam ); + void AddXValToItem( const TInt aIndex, const TDesC8& aXVal ); + void AddNewXValItem( const TDesC8& aXNam, const TDesC8& aXVal ); + + private: // Data + RArray< TExampleDevInfExtExtensionItem > iExtensionArray; + + }; + +#endif // __EXAMPLEDEVINFEXTDATACONTAINERPLUGIN_H__