// Copyright (c) 2007-2009 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:
// Define the Option Configuration interface class COptionConfig.
//
/**
@file
@publishedPartner
@released
@see COptionConfig
*/
#ifndef OPTION_CONFIG_H
#define OPTION_CONFIG_H
#include <streamelement.h>
/**
Maximum number of characters allowed for the descriptors of a COptionConfig object.
@see COptionConfig* NewL().
*/
#define KCDSMaxConfigParamStr 128
/**
@publishedPartner
@released
Class that represents a configuration parameter. It is based on CStreamElementBase so
it can be streamed between client and server.
*/
class COptionConfig : public CStreamElementBase
{
public:
/**
Type of parameter
*/
enum TOptionType
{
/** Signed integer */
ETInt,
/** Unsigned integer */
ETUInt,
/** String */
ETString,
/** Filename */
ETFileName,
/** Unused */
ETSingleEntryEnum,
/** Set string values allowed. */
ETMultiEntryEnum,
/** True/False */
ETBool
};
/**
Owning component type
*/
enum TParameterSource
{
/** Core Dump Server is owner of the parameter */
ECoreDumpServer,
/** Formatter plugin is owner of the parameter */
EFormatterPlugin,
/** Writer plugin is owner of the parameter */
EWriterPlugin,
/* SCM config option */
ESCMConfig
};
IMPORT_C static COptionConfig* NewL( const TUint32 & aIndex,
const TUint32 & aUID,
const TParameterSource & aSource,
const TOptionType & aType,
const TDesC & aPrompt,
const TUint32 & aNumOptions,
const TDesC & aOptions,
const TInt32 & aVal,
const TDesC & aStrValue );
IMPORT_C static COptionConfig* NewL( const TDesC8 & aStreamData );
IMPORT_C ~COptionConfig();
public:
// Methods specific to COptionConfig
IMPORT_C TOptionType Type() const;
IMPORT_C TParameterSource Source() const;
IMPORT_C TUint32 Index() const;
IMPORT_C TUint32 Uid( ) const;
IMPORT_C const TDesC & Prompt() const;
IMPORT_C TUint32 NumOptions( ) const;
IMPORT_C const TDesC & Options() const;
IMPORT_C TInt32 Value() const;
IMPORT_C TBool ValueAsBool() const;
IMPORT_C const TDesC & ValueAsDesc() const;
IMPORT_C void Value( const TInt32 aValue );
IMPORT_C void ValueL( const TDesC & aValue );
public:
// Methods required by streaming interface
IMPORT_C static TInt MaxSize();
IMPORT_C TInt Size() const;
// Initializes ’this’ from stream
IMPORT_C void InternalizeL( RReadStream & aStream );
// Writes ’this’ to the stream
IMPORT_C void ExternalizeL( RWriteStream & aStream, CBufFlat* buf );
private:
COptionConfig( const TOptionType & aType,
const TParameterSource & aSource,
const TUint32 & aIndex,
const TUint32 & aUID,
const TUint32 & aNumOptions,
const TInt32 & aValue );
void ConstructStringL( const TDesC & aSource, HBufC ** aDest );
COptionConfig();
void ConstructL( const TDesC & aPrompt,
const TDesC & aOptions,
const TDesC & aStrValue );
public:
IMPORT_C TUint32 Instance() const;
IMPORT_C void Instance( const TInt32 aInstance );
TAny* Tag() const { return iTag; }
void SetTag(TAny* aTag) { iTag = aTag; }
private:
// Since this is passed accross the Client Server interface, we should keep the type native.
TOptionType iType;
TParameterSource iSource;
// This index is not globally unique. It is valid within a group of parameters only.
// For example the params from the formatter are say 0 to 3, then for the writer they are 0 to 2.
TUint32 iIndex;
TUint32 iUID;
HBufC * iPrompt;
TUint32 iNumOptions;
HBufC * iOptions;
TInt32 iValue;
HBufC * iStrValue;
/**
Externalized size
*/
TUint iSize;
TUint32 iInstance;
TAny* iTag;
TUint32 iSpare2;
};
typedef RPointerArray<COptionConfig> RConfigParameterList;
#endif // OPTION_CONFIG_H