diff -r 000000000000 -r b497e44ab2fc devicediagnosticsfw/diagpluginbase/inc/diagresultdetailbasicitem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devicediagnosticsfw/diagpluginbase/inc/diagresultdetailbasicitem.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,166 @@ +/* +* Copyright (c) 2007 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: Basic Diagnostics Test Result Detail Item class +* +*/ + + +#ifndef DIAGRESULTDETAILBASICITEM_H +#define DIAGRESULTDETAILBASICITEM_H + +// INCLUDES +#include // CBase + +// FORWARD DECLARATIONS +class RWriteStream; +class RReadStream; + +/** +* Diagnostics Result Database Detail Item Classe. +* +* This class stores information needed for each entry in +* CDiagResultDetailBasic. +* +* @since S60 v5.0 +*/ +class CDiagResultDetailBasicItem : public CBase + { +public: // Data Types + enum TFieldType + { + ETypeInt = 0, // data is TInt type + ETypeDes16, // data is TDesC16 type + ETypeDes8, // data is TDesC8 type + }; + +public: // Constructors + /** + * Two-phase constructor. + * + * @param aFieldId - Field Id. + * @param aFieldName - Textual description of the field. + * @param aValue - TInt value. + */ + static CDiagResultDetailBasicItem* NewL( TInt aFieldId, + const TDesC8& aFieldName, + TInt aValue ); + + /** + * Two-phase constructor. + * + * @param aFieldId - Field Id. + * @param aFieldName - Textual description of the field. + * @param aValue - TDesC8 Text value. + */ + static CDiagResultDetailBasicItem* NewL( TInt aFieldId, + const TDesC8& aFieldName, + const TDesC8& aValue ); + + /** + * Two-phase constructor. + * + * @param aFieldId - Field Id + * @param aFieldName - Textual description of the field. + * @param aValue - TDesC16 Text value. + */ + static CDiagResultDetailBasicItem* NewL( TInt aFieldId, + const TDesC8& aFieldName, + const TDesC16& aValue ); + + /** + * Two-phase constructor with RReadStream + * + * @param aReadStream - stream to internalize from + */ + static CDiagResultDetailBasicItem* NewL( RReadStream& aReadStream ); + + /** + * Destructor + */ + ~CDiagResultDetailBasicItem(); + + /** + * Get the field Id. + * + * @return Field Id. + */ + TInt FieldId() const; + + /** + * Get the name of the field. + * + * @return Name of the field. + */ + const TDesC8& FieldName() const; + + /** + * Get the type of the field. + * + * @return Type of the field. + */ + TFieldType Type() const; + + /** + * Get value. If invalid aFieldId is passed, or type does not + * match, function will leave with KErrArgument. + * + * @param aValue - Output paramater. The data will be stored + * here. + * @param KErrArgument if type does not match + */ + TInt GetValue( TInt& aValue ) const; + TInt GetValue( TPtrC8& aValue ) const; + TInt GetValue( TPtrC16& aValue ) const; + + /** + * Externalize to a stream. + * + */ + void ExternalizeL( RWriteStream& aWriteStream ) const; + +private: + /** + * Constructor + * + */ + CDiagResultDetailBasicItem(); + + /** + * Internalize from stream. + * + * @param aReadStream - stream to read from. + */ + void InternalizeL( RReadStream& aReadStream ); + + +private: // Private Data Types + + typedef union + { + HBufC16* iBuffer16; + HBufC8* iBuffer8; + TInt iInt; + } TValue; + +private: // Data + TFieldType iFieldType; + TInt iFieldId; + TValue iValue; + HBufC8* iFieldName; + }; + +#endif // DIAGRESULTDETAILBASICITEM_h + +// End of File +