--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfwplugins/cenrepsourceplugin/src/cenrepattributesmasked.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2007-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: CCenRepAttributesMasked class implementation.
+*
+*/
+
+
+#include "cenrepattributesmasked.h"
+#include "cenreptrace.h"
+
+// ======== LOCAL FUNCTIONS =========
+
+// ======== MEMBER FUNCTIONS ========
+
+CCenRepAttributesMasked* CCenRepAttributesMasked::NewL(
+ MCFContextInterface& aCF,
+ CCFContextSourceSettingArray& aSettings )
+ {
+ FUNC_LOG;
+
+ CCenRepAttributesMasked* self = CCenRepAttributesMasked::NewLC(
+ aCF,
+ aSettings );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+CCenRepAttributesMasked* CCenRepAttributesMasked::NewLC(
+ MCFContextInterface& aCF,
+ CCFContextSourceSettingArray& aSettings )
+ {
+ FUNC_LOG;
+
+ CCenRepAttributesMasked* self =
+ new( ELeave ) CCenRepAttributesMasked( aCF, aSettings );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+
+ return self;
+ }
+
+CCenRepAttributesMasked::~CCenRepAttributesMasked()
+ {
+ FUNC_LOG;
+ }
+
+CCenRepAttributesMasked::CCenRepAttributesMasked(
+ MCFContextInterface& aCF,
+ CCFContextSourceSettingArray& aSettings ) :
+ CCenRepAttributes ( aCF, aSettings )
+ {
+ FUNC_LOG;
+ }
+
+void CCenRepAttributesMasked::ConstructL()
+ {
+ FUNC_LOG;
+
+ iContext = CCFContextObject::NewL();
+ }
+
+TUint32 CCenRepAttributesMasked::DefinedMask()
+ {
+ FUNC_LOG;
+
+ TUint32 definedMask = 0x00000000;
+
+ for( TInt i = 0; i < iParamCount; i++ )
+ {
+ TUint32 valueValue = 0;
+ TPtrC value( KNullDesC );
+ TPtrC key( KNullDesC );
+ TBool defOk( ETrue );
+
+ const RKeyValueArray& paramAttr = iParamArray[i]->Attributes();
+ TInt paramAttrCount = paramAttr.Count();
+ TInt err( KErrGeneral );
+
+ for( TInt j = 0; j < paramAttrCount; j++ )
+ {
+ key.Set( paramAttr[j]->Key() );
+ value.Set( paramAttr[j]->Value() );
+ if ( value.Length() <= 0 )
+ {
+ defOk = EFalse;
+ }
+
+ // Check Value
+ if ( key.CompareF( KValue ) == KErrNone )
+ {
+ err = ConvertToHex( value, valueValue );
+ // Do not break here because
+ // existence of all values need to be checked
+ }
+ }
+
+ if ( ( err == KErrNone ) && defOk )
+ {
+ definedMask = definedMask | valueValue;
+ }
+ }
+
+ return definedMask;
+ }
+
+//-----------------------------------------------------------------------------
+// CCenRepAttributesMasked::UpdateContextL
+//-----------------------------------------------------------------------------
+//
+void CCenRepAttributesMasked::UpdateContextL( const TInt aKeyValue )
+ {
+ FUNC_LOG;
+
+ TUint32 definedKeyMask = DefinedMask();
+
+ for( TInt i = 0; i < iParamCount; i++ )
+ {
+ TBool publishOk( ETrue );
+
+ TUint32 valueValue = 0;
+ TPtrC value( KNullDesC );
+ TPtrC key( KNullDesC );
+
+ TPtrC conTypePtr ( KNullDesC );
+ TPtrC conSourcePtr ( KNullDesC );
+ TPtrC conValueSetPtr ( KNullDesC );
+ TPtrC conValueUnSetPtr ( KNullDesC );
+
+ const RKeyValueArray& paramAttr = iParamArray[i]->Attributes();
+ TInt paramAttrCount = paramAttr.Count();
+ for( TInt j = 0; j < paramAttrCount; j++ )
+ {
+ key.Set( paramAttr[j]->Key() );
+ value.Set( paramAttr[j]->Value() );
+
+ if ( value.Length() <= 0 )
+ {
+ publishOk = EFalse;
+ }
+
+ // Check Value
+ if ( key.CompareF( KValue ) == KErrNone )
+ {
+ TInt err = ConvertToHex( value, valueValue );
+ }
+
+ // Check ContextSource
+ else if ( key.CompareF( KContextSource ) == KErrNone )
+ {
+ conSourcePtr.Set( value );
+ }
+
+ // Check ContextType
+ else if ( key.CompareF( KContextType ) == KErrNone )
+ {
+ conTypePtr.Set( value);
+ }
+
+ // Check ContextValueSet
+ else if ( key.CompareF( KContextValueSet ) == KErrNone )
+ {
+ conValueSetPtr.Set( value );
+ }
+
+ // Check ContextValueUnSet
+ else if ( key.CompareF( KContextValueUnSet ) == KErrNone )
+ {
+ conValueUnSetPtr.Set( value );
+ }
+ }
+
+ iContext->SetSourceL( conSourcePtr );
+ iContext->SetTypeL( conTypePtr );
+
+ if ( valueValue == 0 )
+ {
+ if ( definedKeyMask & aKeyValue )
+ {
+ iContext->SetValueL( conValueSetPtr );
+ }
+ else
+ {
+ iContext->SetValueL( conValueUnSetPtr );
+ }
+ }
+
+ else if ( aKeyValue & valueValue )
+ {
+ iContext->SetValueL( conValueSetPtr );
+ }
+
+ else
+ {
+ iContext->SetValueL( conValueUnSetPtr );
+ }
+
+ if ( publishOk )
+ {
+ PublishContext();
+ }
+ }
+ }