diff -r 000000000000 -r 2e3d3ce01487 contextframework/cfw/inc/cfservices/CFContextObjectImpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contextframework/cfw/inc/cfservices/CFContextObjectImpl.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,225 @@ +/* +* Copyright (c) 2002-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: CCFContextObjectImpl class declaration. +* +*/ + + +#ifndef C_CFCONTEXTOBJECTIMPL_H +#define C_CFCONTEXTOBJECTIMPL_H + +#include "cfcontextobject.h" + +/** +* Context object implementation. +* +* @lib CFServices.lib +* @since S60 5.0 +*/ +NONSHARABLE_CLASS( CCFContextObjectImpl ): public CCFContextObject + { + public: + + /** + * Two phased construction. + * + * @since S60 5.0 + * @param None. + * @return None. + */ + IMPORT_C static CCFContextObjectImpl* NewL(); + IMPORT_C static CCFContextObjectImpl* NewLC(); + + /** + * Two phased construction. + * + * @since S60 5.0 + * @param aSource Initial source of the context. + * @param aType Initial type of the context. + * @param aValue Initial value of the context. + * @return None. + */ + IMPORT_C static CCFContextObjectImpl* NewL( const TDesC& aSource, + const TDesC& aType, + const TDesC& aValue ); + IMPORT_C static CCFContextObjectImpl* NewLC( const TDesC& aSource, + const TDesC& aType, + const TDesC& aValue ); + + // Destructior + ~CCFContextObjectImpl(); + + public: // From base classes + + // @see CCFContextObject + void SetTypeL( const TDesC& aType ); + + // @see CCFContextObject + const TDesC& Type() const; + + // @see CCFContextObject + void SetValueL( const TDesC& aValue ); + + // @see CCFContextObject + const TDesC& Value() const; + + // @see CCFContextObject + void SetSourceL( const TDesC& aSource ); + + // @see CCFContextObject + const TDesC& Source() const; + + // @see CCFContextObject + void SetConfidence( const TUint8& aConfidence ); + + // @see CCFContextObject + TUint8 Confidence() const; + + // @see CCFContextObject + void SetTimestampToHomeTime(); + + // @see CCFContextObject + void SetTimestamp( const TTime& aTimestamp ); + + // @see CCFContextObject + void SetTimestamp( const TInt64& aTimestamp ); + + // @see CCFContextObject + const TTime& Timestamp() const; + + // @see CCFContextObject + void CopyL( const CCFContextObject& aContext ); + + public: // New methods + + /** + * Internalizes object. + * + * @since S60 5.0 + * @param aStream Read stream. + * @return None. + */ + IMPORT_C void InternalizeL( RReadStream& aStream ); + + /** + * Externalizes object. + * + * @since S60 5.0 + * @param aStream Write stream. + * @return None. + */ + IMPORT_C void ExternalizeL( RWriteStream& aStream ); + + /** + * Returns size of the object in bytes. + * + * @since S60 5.0 + * @param None. + * @return TInt. + */ + IMPORT_C TInt Size() const; + + /** + * Compares value member variables of context objects. + * Compares this context objects value member to the arguments value + * member. + * + * @since S60 5.0 + * @param aContext The context object to be compared with this one. + * @return Positive if the value member of this is greater than + * aContext's. Negative if the value member of this is less than + * aContext's. Zero if both value members have the same length + * and the their contents are the same. + */ + IMPORT_C TInt CompareValue( const CCFContextObject& aContext ) const; + + /** + * Compares two context objects based on their type. + * + * @since S60 5.0 + * @param aFirst A context object to be compared with aSecond. + * @param aSecond A context object to be compared with aFirst. + * @return Positive if aFirst is greater than aSecond. Negative if aFirst + * is less than aSecond. Zero if both have the same length and + * the their contents are the same. + */ + IMPORT_C static TInt CompareByType( const CCFContextObject& aFirst, + const CCFContextObject& aSecond ); + + /** + * Compares two context objects based on their type and source. + * + * @since S60 5.0 + * @param aFirst A context object to be compared with aSecond. + * @param aSecond A context object to be compared with aFirst. + * @return Positive if aFirst is greater than aSecond. Negative if aFirst + * is less than aSecond. Zero if both have the same length and + * the their contents are the same. + */ + IMPORT_C static TInt CompareByTypeAndSource( + const CCFContextObject& aFirst, + const CCFContextObject& aSecond ); + + /** + * Compares two context objects based on their time. + * + * @since S60 5.0 + * @param aFirst A context object to be compared with aSecond. + * @param aSecond A context object to be compared with aFirst. + * @return Positive if aFirst is greater than aSecond. Negative if aFirst + * is less than aSecond. Zero if both have the same length and + * the their contents are the same. + */ + IMPORT_C static TInt CompareByTimeDescending( + const CCFContextObject& aFirst, + const CCFContextObject& aSecond ); + + /** + * Checks whether the two context objects are the same. + * Compares all member variables of the two context objects and if all + * of them are equal, then the objects are the same. + * + * @param aFirst A context object to be compared with aSecond. + * @param aSecond A context object to be compared with aFirst. + * @return ETrue, if the objects are found to be equal. + */ + IMPORT_C static TBool IsSame( const CCFContextObject& aFirst, + const CCFContextObject& aSecond ); + + private: + + CCFContextObjectImpl(); + void ConstructL( const TDesC& aSource, + const TDesC& aType, + const TDesC& aValue ); + + private: // Data + + /** Source of the context */ + HBufC* iSource; + + /** Type of the context */ + HBufC* iType; + + /** iValue of the context */ + HBufC* iValue; + + /** Time stamp */ + TTime iTimestamp; + + /** Confidence of the context */ + TUint iConfidence; + }; + +#endif